-
Notifications
You must be signed in to change notification settings - Fork 791
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[22519] Decouple transport receivers creation using unique network flows #5583
Conversation
Tested that the PR solves issue ros2/ros2#1617 with Fast DDS 3.x and in Rolling with Fast DDS 2.14.x |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a small NIT.
Signed-off-by: Juan Lopez Fernandez <[email protected]>
…rk flows Signed-off-by: Juan Lopez Fernandez <[email protected]>
Signed-off-by: Juan Lopez Fernandez <[email protected]>
Signed-off-by: Juan Lopez Fernandez <[email protected]>
Signed-off-by: Juan Lopez Fernandez <[email protected]>
67058bd
to
3f3d6ba
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM too
@Mergifyio backport 3.1.x 3.0.x 2.14.x 2.10.x |
✅ Backports have been created
|
* Refs #22519. Add regression test Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Decouple transport receivers creation using unique network flows Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Add comment for future developers Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Apply suggestion Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Reuse unique ports for locators of same kind in a reader Signed-off-by: Juan Lopez Fernandez <[email protected]> --------- Signed-off-by: Juan Lopez Fernandez <[email protected]> (cherry picked from commit e6e918f) # Conflicts: # test/blackbox/common/BlackboxTestsNetworkConf.cpp
* Refs #22519. Add regression test Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Decouple transport receivers creation using unique network flows Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Add comment for future developers Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Apply suggestion Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Reuse unique ports for locators of same kind in a reader Signed-off-by: Juan Lopez Fernandez <[email protected]> --------- Signed-off-by: Juan Lopez Fernandez <[email protected]> (cherry picked from commit e6e918f)
* Refs #22519. Add regression test Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Decouple transport receivers creation using unique network flows Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Add comment for future developers Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Apply suggestion Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Reuse unique ports for locators of same kind in a reader Signed-off-by: Juan Lopez Fernandez <[email protected]> --------- Signed-off-by: Juan Lopez Fernandez <[email protected]> (cherry picked from commit e6e918f)
* Refs #22519. Add regression test Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Decouple transport receivers creation using unique network flows Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Add comment for future developers Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Apply suggestion Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Reuse unique ports for locators of same kind in a reader Signed-off-by: Juan Lopez Fernandez <[email protected]> --------- Signed-off-by: Juan Lopez Fernandez <[email protected]> (cherry picked from commit e6e918f) # Conflicts: # src/cpp/rtps/participant/RTPSParticipantImpl.cpp # test/blackbox/common/BlackboxTestsNetworkConf.cpp
* Refs #22519. Add regression test Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Decouple transport receivers creation using unique network flows Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Add comment for future developers Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Apply suggestion Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Reuse unique ports for locators of same kind in a reader Signed-off-by: Juan Lopez Fernandez <[email protected]> --------- Signed-off-by: Juan Lopez Fernandez <[email protected]> (cherry picked from commit e6e918f) # Conflicts: # test/blackbox/common/BlackboxTestsNetworkConf.cpp
* Refs #22519. Add regression test Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Decouple transport receivers creation using unique network flows Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Add comment for future developers Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Apply suggestion Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Reuse unique ports for locators of same kind in a reader Signed-off-by: Juan Lopez Fernandez <[email protected]> --------- Signed-off-by: Juan Lopez Fernandez <[email protected]> (cherry picked from commit e6e918f)
* Refs #22519. Add regression test Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Decouple transport receivers creation using unique network flows Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Add comment for future developers Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Apply suggestion Signed-off-by: Juan Lopez Fernandez <[email protected]> * Refs #22519. Reuse unique ports for locators of same kind in a reader Signed-off-by: Juan Lopez Fernandez <[email protected]> --------- Signed-off-by: Juan Lopez Fernandez <[email protected]> (cherry picked from commit e6e918f)
Description
This is a follow-up of #5461, attempting to solve ros2/ros2#1617.
In that concrete scenario (where builtin + TCP transports are used in clients), the problem is that while the TCP (and UDP) transports are rightly able to create a receiver in the dedicated "unique flow" port, shared memory fails for that same port as the other process is already listening on it. However this was not being handled properly, so once matched, the publisher attempts to send data to the wrongfully announced shared memory locator.
Note that the underlying problem is that, when creating unique network flows, all transports are requested to create a receiver for a specific port all together. This is, the creation of unique flow receivers is only considered to fail when it fails for all transports, instead of decoupling them and keep trying for alternative ports when the creation of a specific transport receiver fails. The present PR fixes this behavior.
@Mergifyio backport 3.1.x 3.0.x 2.14.x 2.10.x
Contributor Checklist
versions.md
file (if applicable).Reviewer Checklist