-
Notifications
You must be signed in to change notification settings - Fork 435
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
Executing action server but nothing is ready #2226
Comments
ros2/rclcpp#2226 Signed-off-by: Tomoya Fujita <[email protected]>
@EvgeniNF thanks for creating issue. i tried to use your sample here fujitatomoya/ros2_test_prover@1938d8d, i did modify several places to build it with rolling. root@tomoyafujita:~/ros2_ws/colcon_ws# source install/local_setup.bash
root@tomoyafujita:~/ros2_ws/colcon_ws# ros2 run prover_rclcpp rclcpp_2226
[INFO] [1687800854.360839751] [action_server]: Goal handle
[INFO] [1687800854.361871421] [action_server]: Handle accepted
[INFO] [1687800854.361973245] [action_server]: Executing goal
[INFO] [1687800854.362307637] [action_server]: Publish feedback
[INFO] [1687800855.362249651] [action_server]: Publish feedback
[INFO] [1687800856.362233943] [action_server]: Publish feedback
[INFO] [1687800857.362178916] [action_server]: Publish feedback
[INFO] [1687800858.362253362] [action_server]: Publish feedback
[INFO] [1687800859.362238926] [action_server]: Publish feedback
[INFO] [1687800860.362247690] [action_server]: Publish feedback
[INFO] [1687800861.362286352] [action_server]: Publish feedback
[INFO] [1687800862.362336140] [action_server]: Publish feedback
^C[INFO] [1687800972.893649435] [rclcpp]: signal_handler(signum=2)
This is not supported platform Iron, https://docs.ros.org/en/rolling/Releases/Release-Iron-Irwini.html#supported-platforms. can you try with Ubuntu 22.04? |
@fujitatomoya Ok, thanks for reply, i try run this code on ubuntu 22.04 |
@fujitatomoya I have the same problem on ubuntu 22.04.02 (64-bit). I noticed what on Fast DDS this error occurs less frequently.
|
I think it is race condition, because i catch this error on random request, but i don't understand when called method take_data(). Could you explain me how it's work, please. I want help close this problem |
I noticed one more thing. When i am using single thread executor for spin services node, i don't catch error. Now i am testing this thing on ubuntu 20.04 |
with fujitatomoya/ros2_test_prover@1938d8d, and the following stress test for hour, i cannot reproduce this issue in my local environment.
root@tomoyafujita:~/ros2_ws/colcon_ws# ros2 run prover_rclcpp rclcpp_2226
[INFO] [1687988184.470012330] [action_server]: Goal handle
[INFO] [1687988184.470281262] [action_server]: Handle accepted
[INFO] [1687988184.470335165] [action_server]: Executing goal
[INFO] [1687988184.470407129] [action_server]: Publish feedback
[INFO] [1687988185.470686883] [action_server]: Publish feedback
[INFO] [1687988186.470699443] [action_server]: Publish feedback
[INFO] [1687988187.470627795] [action_server]: Publish feedback
[INFO] [1687988188.470713334] [action_server]: Publish feedback
...
root@tomoyafujita:~/ros2_ws/colcon_ws# while true; do ros2 action send_goal /test/server action_tutorials_interfaces/action/Fibonacci order:\ 10; done
Waiting for an action server to become available...
Sending goal:
order: 10
Goal accepted with ID: d4cdf1b178ce4c06a55702b1e514d845
... |
@fujitatomoya try to calling the action server with multiple clients in same time |
@fujitatomoya and i noticed in test case you don't call goalHandle->succeed(result); |
ros2/rclcpp#2226 Signed-off-by: Tomoya Fujita <[email protected]>
root@tomoyafujita:~/ros2_ws/colcon_ws# ros2 run prover_rclcpp rclcpp_2226
...
make sure we have more process spaces that can be ON_PROC to the server. root@tomoyafujita:~/ros2_ws/colcon_ws# cat /proc/cpuinfo | grep processor | wc -l
16
root@tomoyafujita:~/ros2_ws/colcon_ws# cat test.sh
#!/bin/bash
for i in {1..32}
do
echo action request sending $i ---
ros2 action send_goal /test/server action_tutorials_interfaces/action/Fibonacci order:\ 10 &
done
root@tomoyafujita:~/ros2_ws/colcon_ws# ./test.sh
...<snip> all 32 goals have been completed and confirmed. btw, i had the following different error on the server side. terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'
what(): client will not receive response, at /root/ros2_ws/colcon_ws/src/ros2/rmw_fastrtps/rmw_fastrtps_shared_cpp/src/rmw_response.cpp:149, at /root/ros2_ws/colcon_ws/src/ros2/rcl/rcl/src/rcl/service.c:379 this is know issue, ros2/ros2#1253 |
@fujitatomoya Ok, i will try your test, maybe my client code is bad... evgeniy@evgeniy-GL753VD:~$ cat /proc/cpuinfo | grep processor | wc -l My client code:
|
@fujitatomoya With SingleThreadExecuter i don't have any problems on server. I tested it all day yesterday |
@fujitatomoya About error: I am using CycloneDDS and i saw in this issue https://github.com/ros2/ros2/issues/1253 it happens if you use FastDDS. |
I also have this issue with this setup: OS: ubuntu 22 I was able to catch this backtrace if it's useful for you
I will try to see if I can reproduce with the SingleThreadedExecutor. |
@tonynajjar If you will use SingleThreadedExecutor or callback group for sync action service this error don't happen. i solved it with Mutually Exclusive Callback Group |
How did you solve it? |
@tonynajjar O sorry, simply i use for action server Mutually Exclusive Callback Group.
|
This should be fixed by the merge of #2531. |
Bug report
Required Info:
Steps to reproduce issue
I am do stress test for action server and catch this error on random request. How i can fix that?
Expected behavior
Normal client/server action behavior where each client sends a goal and receives a result from the server.
Actual behavior
Node Server throws an exception and crashes
Additional information
Feature request
Feature description
Implementation considerations
The text was updated successfully, but these errors were encountered: