Fast-DDS
Fast-DDS copied to clipboard
Use gather send [10657]
This PR extends the transport interface to avoid copying user data when encapsulating the serialized payload into the RTPS datagram.
@richiprosima please test discovery-server
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-eProsima Doxygen changes are still pending, but the rest can be reviewed
- 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...
@JLBuenoLopez-eProsima I think this is finished! 🤞
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.
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.