Closed Bitterisland6 closed 1 year ago
I'm not sure if overriding the rclpy method is the best way to go here, is there any other method that could serve this purpose, implementing spin_once_until_future_complete
https://github.com/ros2/rclpy/blob/rolling/rclpy/rclpy/executors.py#L332 perhaps?
(Looking into it)
Any update on this? Are you planning to backport to humble?
@quarkytale Could you please backport it to humble and iron?
@mergifyio backport iron humble
backport iron humble
Rqt spawns a multi threaded executor, and provides all open plugins in a single node which is spun inside it. But in the
rqt_reconfigure
plugin when calling service, there was added waiting for the end of the call withspin_until_future_complete
. This method was giving the control of the rqt to the default rclpy executor. This issue caused problems like:To fix this issue it's enough to wait for the service request without the
spin_until_future_complete
method. One solution is to use python events andadd_done_callback
method from the future object returned bycall_async
method. The waiting is done with eventwait
function and provided timeout, and can be interrupted by setting the event flag in the callback specified in theadd_done_callback
.