Add Clock::sleep_until method#1748
Conversation
7fffce5 to
3842e17
Compare
fujitatomoya
left a comment
There was a problem hiding this comment.
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
clalancette
left a comment
There was a problem hiding this comment.
A few minor things that I think we should fix, but otherwise looks pretty good to me.
f0cd10e to
489e51d
Compare
clalancette
left a comment
There was a problem hiding this comment.
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_untilmethod. 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/clockmessages, and has basic testing for steady/system times, though those are much simpler cases.