I ran upon an bug when trying to do the Python Rosject project after unit 5 (adding multithreading to the service). When service is called from another shell, groups are always treated as mutually exclusive despite reentrant being used.
I think its related to this rclpy issue Callbacks are executed mutually exclusive, even though ReentrantCallbackGroup and MultiThreadedExecutor are used. · Issue #1039 · ros2/rclpy · GitHub