-
Notifications
You must be signed in to change notification settings - Fork 913
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
Topic subscription scalability fix #1217
Topic subscription scalability fix #1217
Conversation
Switching to using epoll system calls to improve performance of the topic polling code by a factor of 2.
Reproducing some comments from the previous thread. In particular, regarding the
Regarding ABI breakage and whether this should go into Lunar or wait for Melodic (from me):
It would be great to get some closure on both these points so we can plan for our coming releases. |
if (revents == 0) | ||
{ | ||
continue; | ||
} |
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.
Should this check / continue stay above the declaration of func
, transport
ad events
as it was before?
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.
It can but it really has very little impact since we are talking about variable declaration. I do prefer to have variable declaration at the top of the scope block for clarity purposes. But that's just me.
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.
It can stay as-is in this case. I usually aim to keep patches minimal. While there is for sure plenty of code which would benefit cleanup any change makes the review more difficult, has a chance of regressions, and makes backporting patches more effort.
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.
makes sense. Thanks.
I am usually not in favor of something like this. I would prefer to address the problem of the test and/or the implementation first and then apply a significant change like this. Simply because disabling tests without a replacement when introducing changes has a very bad taste.
I am leaning towards the conservative choice - especially after the "nightmare" of the latest round of backports into Kinetic (which took several fixes, re-releases and a significant amount of time). But I can see how the benefit would be good to have in the LTS release. I will give others a chance to state their opinion here. If the consensus is to just ditch the problematic test and conclude that the benefit of the feature outweighs the regression risk as well as the ABI breakage I am happy to merge the patch (and after being released into Lunar for a bit consider it for backporting into Kinetic). @ros/ros_team Please add your comments on this. |
@ros/ros_team Waiting for feedback. |
This does seem like a big change and should be quite conservative about backporting. Possibly waiting a few cycles for validation in real use cases on Lunar. But if shown to work well it also has large enough benefits to validate a backport effort. |
dd9805f
to
1973dc5
Compare
@tfoote The question was not if this should be backported to Kinetic. The question is if it should only go into Melodic or if it should be released into Lunar even though it it is a big change and changes some headers (which are argued for not likely being used by user land code). |
Implicit in my response was to go ahead and release it on Lunar. |
Since nobody else commented on this ticket @mikepurvis can you please update this so that the PR job becomes green (e.g. by disabling the test in question as suggested above). While I don't think it is a good choice I don't want to stand in the way to get this merged. |
Test disabled, with appropriate comment which I believe captures the situation. That said, we should probably decide now whether there would be an intention to resolve the discrepancy in the future and reenable the test in which case file a ticket for that work, or plan to leave it as-is, in which case the test should probably be completely removed rather than just disabled (disabled implies a temporary action, per gtest docs). |
Looks like the Jenkins xUnit plugin is still marking an unstable build on account of the disabled test, so it will need to actually be removed in order to get a green light. |
@ros-pull-request-builder retest this please |
Recognizing multiple contributors here, please merge without squashing. |
I would rather squash the changes if there is no strong reason to keep the various authors since it makes potential backporting / rolling back much easier. |
Okay, squashing and merging now. |
Switching to using epoll system calls to improve performance of the topic polling code by a factor of 2. This required disabling the addDelMultiThread test.
Switching to using epoll system calls to improve performance of the topic polling code by a factor of 2.
See previous discussions and rationale in #1162 and clearpathrobotics#12. Closes #1078.