You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Since ros2/rcl#1048 has been merged, rcl_send_response would return TIMEOUT.
Because of the racy condition to establish the service topics between client and service server, there is time window that server cannot find the concerned client yet when server tries to send out the response. (This is well known issue, since ROS 2 service is constructed with 2 topics for Request and Response, not bidirectional transport socket like TCP.)
For rclcpp and rclpy, instead of generating exception, it proceeds the process with printing the warning message, so that executor can go on the process.
We can see executor returns error with rclc once this TIMEOUT happens via rcl_send_request. (e.g. rclc_executor_spin)
That seems to be fine cz application can check the return code to re-enter the execution, but not exactly the same behavior with rclcpp and rclpy.
We would probably want to the print warning just like rclcpp and then executor process should go on w/o returning to the application?
If above suggestion is okay, i am happy to create PR for that.
The text was updated successfully, but these errors were encountered:
Background
Since ros2/rcl#1048 has been merged,
rcl_send_response
would returnTIMEOUT
.Because of the racy condition to establish the service topics between client and service server, there is time window that server cannot find the concerned client yet when server tries to send out the response. (This is well known issue, since ROS 2 service is constructed with 2 topics for Request and Response, not bidirectional transport socket like TCP.)
For
rclcpp
andrclpy
, instead of generating exception, it proceeds the process with printing the warning message, so that executor can go on the process.related fixes for
rclcpp
andrclpy
.Discussion
So the question is what we should do with
rclc
?We can see executor returns error with
rclc
once thisTIMEOUT
happens viarcl_send_request
. (e.g.rclc_executor_spin
)That seems to be fine cz application can check the return code to re-enter the execution, but not exactly the same behavior with
rclcpp
andrclpy
.We would probably want to the print warning just like
rclcpp
and then executor process should go on w/o returning to the application?If above suggestion is okay, i am happy to create PR for that.
The text was updated successfully, but these errors were encountered: