-
Notifications
You must be signed in to change notification settings - Fork 436
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
Add Clock::sleep_until method #1748
Add Clock::sleep_until method #1748
Conversation
7fffce5
to
3842e17
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.
overall, i think looks good. some minor comments.
e980175
to
b3b53f2
Compare
i think it looks okay. could you also address linter warning? |
@fujitatomoya do you have merge access? Or do we also need reviews from one of the maintainers @mabelzhang @wjwwood @ivanpauno |
👍 we could use the other review. @ivanpauno @clalancette @wjwwood |
02beba9
to
f0cd10e
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.
A few minor things that I think we should fix, but otherwise looks pretty good to me.
f0cd10e
to
489e51d
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.
I've left one nit inline, but it just changing a documentation string.
More concerning is the yellow builds on aarch64; it looks like one of these tests is probably crashing there. Once that is fixed, I'm happy to approve.
Handle all 3 clock types, and edge cases for shutdown and enabling/disabling ROS time Signed-off-by: Emerson Knapp <eknapp@amazon.com>
…ond resolution on clang(osx/linux) and windows, unlike nanosecond on Linux+GCC) Signed-off-by: Emerson Knapp <eknapp@amazon.com>
…est environment on Jenkins Signed-off-by: Emerson Knapp <eknapp@amazon.com>
…ess now() Signed-off-by: Emerson Knapp <eknapp@amazon.com>
…nd the test environment on Jenkins" This reverts commit 4fb7660. Signed-off-by: Emerson Knapp <eknapp@amazon.com>
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
489e51d
to
9529ef8
Compare
… input Signed-off-by: Emerson Knapp <eknapp@amazon.com>
9529ef8
to
c6ab0a8
Compare
@clalancette are you able to merge this, based on that approval? |
Yeah, I'll go ahead and merge. |
This is flakey on aarch64: https://ci.ros2.org/job/ci_linux-aarch64/10018/ |
Yeah that's weird. I'm looking into it, can spin up an ARM instance on EC2 |
This reverts commit 81df584. Signed-off-by: Jorge Perez <jjperez@ekumenlabs.com>
* Revert "Revert "Add Clock::sleep_until method (#1748)" (#1793)" This reverts commit d04319a. Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Context, Shutdown Callback, Condition Var per call The `Clock` doesn't have enough information to know which Context should wake it on shutdown, so this adds a Context as an argument to sleep_until(). Since the context is per call, the shutdown callback is also registered per call and cannot be stored on impl_. The condition_variable is also unique per call to reduce spurious wakeups when multiple threads sleep on the same clock. Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Throw if until has wrong clock type Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * unnecessary newline Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Shorten line Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Fix time jump thresholds and add ROS time test Use -1 and 1 thresholds because 0 and 0 is supposed to disable the callbacks Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Shorten line Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * rclcpp::ok() -> context->is_valid() Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * No pre-jump handler instead of noop handler Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * If ros_time_is_active errors, let it throw Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Get time source change from callback to avoid race if ROS time toggled quickly Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Fix threshold and no pre-jump callback Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Use RCUTILS_MS_TO_NS macro Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Explicit cast for duration to system time Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Throws at the end of docblock Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Add tests for invalid and non-global contexts Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* Revert "Revert "Add Clock::sleep_until method (ros2#1748)" (ros2#1793)" This reverts commit d04319a. Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Context, Shutdown Callback, Condition Var per call The `Clock` doesn't have enough information to know which Context should wake it on shutdown, so this adds a Context as an argument to sleep_until(). Since the context is per call, the shutdown callback is also registered per call and cannot be stored on impl_. The condition_variable is also unique per call to reduce spurious wakeups when multiple threads sleep on the same clock. Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Throw if until has wrong clock type Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * unnecessary newline Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Shorten line Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Fix time jump thresholds and add ROS time test Use -1 and 1 thresholds because 0 and 0 is supposed to disable the callbacks Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Shorten line Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * rclcpp::ok() -> context->is_valid() Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * No pre-jump handler instead of noop handler Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * If ros_time_is_active errors, let it throw Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Get time source change from callback to avoid race if ROS time toggled quickly Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Fix threshold and no pre-jump callback Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Use RCUTILS_MS_TO_NS macro Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Explicit cast for duration to system time Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Throws at the end of docblock Signed-off-by: Shane Loretz <sloretz@osrfoundation.org> * Add tests for invalid and non-global contexts Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
Part of #1730
Related to ros2/rosbag2#694
Add a
Clock::sleep_until
method. Handle all 3 clock types, and edge cases for shutdown and enabling/disabling ROS time.Adds test cases for enable/disable ROStime, and
rclcpp::shutdown
- which needed special interrupts. Tests ROS time via/clock
messages, and has basic testing for steady/system times, though those are much simpler cases.