Fast-DDS icon indicating copy to clipboard operation
Fast-DDS copied to clipboard

Use gather send [10657]

Open MiguelCompany opened this issue 3 years ago • 6 comments

This PR extends the transport interface to avoid copying user data when encapsulating the serialized payload into the RTPS datagram.

MiguelCompany avatar Mar 01 '21 14:03 MiguelCompany

@richiprosima please test discovery-server

EduPonz avatar Apr 06 '21 13:04 EduPonz

There are some tests that are failing consistently with this PR and not in master (running --repeat-until-fail 100 in master succeeds):

  • 242: BlackboxTests_FastRTPS.PubSubFragments.AsyncPubSubAsNonReliableVolatileData300kb.Transport
  • 897: BlackboxTests_DDS_PIM.PubSubFragments.AsyncPubSubAsNonReliableVolatileData300kb.Transport (this one has failed in the Linux CI)
  • 555: BlackboxTests_FastRTPS.BlackBox.TCP_TLS: the following error message appears:
[RTCP_MSG_IN Error] Bad RTCP header identifier, closing connection. -> Function Receive
  • 1353: BlackboxTests_DDS_PIM.BlackBox.TCP_TLS: master sometimes blocks and timeouts (rarely). This also happens with this PR (frequently) but the following message is printed that in master does not appear:
[RTCP_MSG_IN Error] Bad RTCP header identifier, closing connection. -> Function Receive
  • 1831: SHMTransportTests.buffer_recover: in master sometimes happens but locally in my machine is failing consistently with this PR:
1845: terminate called without an active exception
    Test #1845: SHMTransportTests.buffer_recover ...Child aborted***Exception:  12.57 sec

JLBuenoLopez avatar Apr 09 '21 09:04 JLBuenoLopez

@JLBuenoLopez-eProsima Doxygen changes are still pending, but the rest can be reviewed

MiguelCompany avatar Apr 14 '21 14:04 MiguelCompany

  • 242: BlackboxTests_FastRTPS.PubSubFragments.AsyncPubSubAsNonReliableVolatileData300kb.Transport
  • 897: BlackboxTests_DDS_PIM.PubSubFragments.AsyncPubSubAsNonReliableVolatileData300kb.Transport (this one has failed in the Linux CI)

I think these have been solved by 7c930df4d59cbfced843475b216a930cc777b417

  • 555: BlackboxTests_FastRTPS.BlackBox.TCP_TLS: the following error message appears:
  • 1353: BlackboxTests_DDS_PIM.BlackBox.TCP_TLS: master sometimes blocks and timeouts (rarely). This also happens with this PR (frequently) but the following message is printed that in master does not appear:

I think these have been solved by 4fc658f34714513879d91a688ef15761c67ea39c

  • 1831: SHMTransportTests.buffer_recover: in master sometimes happens but locally in my machine is failing consistently with this PR:

All the code used by that test has not been modified by this PR...

MiguelCompany avatar Apr 16 '21 07:04 MiguelCompany

@JLBuenoLopez-eProsima I think this is finished! 🤞

MiguelCompany avatar Apr 16 '21 07:04 MiguelCompany

The following tests are failing:

  • 908: BlackboxTests_DDS_PIM.PubSubFragments.AsyncPubSubAsNonReliableVolatileData300kb.Transport: running this test in master 100 times passes successfully, but with these changes the test fails frequently.
  • 1812: TCPv4Tests.send_and_receive_between_both_secure_ports: running this test in master prints the following warning and passes successfully:
[DEBUG Warning] Error reading TCP header: Operation aborted. -> Function Receive

whereas running this PR prints:

[DEBUG Warning] Failed to send RTCP message (14 of 19 b): Success -> Function send
[RTCP_MSG_IN Warning] Bad TCP header CRC -> Function Receive
[RTCP_MSG_IN Error] Bad RTCP header identifier, closing connection. -> Function Receive

and the test timeouts.

  • 1814: TCPv4Tests.send_and_receive_between_secure_clients_1: the error is probably the same as the previous test because the outputs are similar.
  • TCP_TLS tests (556 FastRTPS & 1364 DDS PIM) are also finishing with a timeout after printing:
[RTCP_MSG_IN Error] Bad RTCP header identifier, closing connection. -> Function Receive

It seems the issue could be the same as the previous tests. This does not happen in master.

JLBuenoLopez avatar Apr 19 '21 07:04 JLBuenoLopez

Closing this PR. If in the future this feature is revisited, it would probably be easier to start again due to changes in the transport layer.

JLBuenoLopez avatar Mar 16 '23 13:03 JLBuenoLopez