-
Notifications
You must be signed in to change notification settings - Fork 117
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
Nested wall timers are not being executed on FastRTPS #606
Comments
Comparing to other similar scenarios we got a bit closer to the root cause of the problem: the guard condition being triggered inside the |
@AlexeyMerzlyakov @afrixs I think this may be related to ros2/rclcpp#1611, which seems to state the bug is in rclcpp, not in rmw implementations. If this is the case, there PR ros2/rclcpp#1640 deals with the issue, but seems to have been pending for a long time and it now has conflicts. If the root cause is that rclcpp is violating the contract in RMW API, as stated in this comment, then this issue must be closed. Note that it may work on other RMW implementations that support |
@afrixs, @MiguelCompany, thank you for the analysis of the root cause and reference to the origin documentation provided! I've checked the patch from ros2/rclcpp#1640 (slightly modified for back-port to the latest revision) and it works for the attached testcase. This confirms, that the problem is related to the ros2/rclcpp#1611 and not concerned with FastRTPS. Closing the issue. |
In the following snippet of code only outer wall
timer1_
is being executed with FastRTPS while nestedtimer2_
lambda is never being called:This code is creating
service_thread_
and adding there a new custom callback group executor. Later, insidetimer1_
lambda, newtimer2_
is being created with this custom callback group, but never being executed when using large delays at the end of the constructor.Our expectations that both timers: outer and nested to executed as it being when running e.g. on CycloneDDS. Outer timer should be executed within main thread, nested timer - inside
service_thread_
after it was added. From this point it seems to be unusual behavior.Bug report
Required Info:
Steps to reproduce issue
Expected behavior
Both outer and nested timers are being executed.
Actual behavior
Only outer timer is being executed for FastRTPS:
Additional information
The similar to given in the testcase code is contained in Nav2 LifecycleManager constructor, which makes it inoperable for Nav2 code in the current revision. More details in ros-navigation/navigation2#2917
The text was updated successfully, but these errors were encountered: