-
Notifications
You must be signed in to change notification settings - Fork 71
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
LoadComposableNodes action can cause launch process to hang forever #171
Comments
@wjwwood @ivanpauno What do you think about the first point I listed above?
If you agree, I can look into patching the launch service so that it has a timeout for waiting on futures during shutdown. Alternatively, we can at least add back a debug log telling the user that launch is still waiting on futures, but I don't think this is that useful, especially if we can't tell where the futures came from. |
The problem with timeouts is defining how much is "too much".
Adding back the debug logs is surely a good idea. |
The other option is to not even have a timeout; if launch is shutting down, just cancel all pending futures. |
I don't know off hand, but I'd say it would be better if they were not canceled and instead they could just shutdown cleanly. That being said having it error out at some point rather than hanging might be ok. But there might be cases where a long shutdown is needed, like you're waiting on a file to close or something. |
That's a good point. I'll fix the issue in |
This seems reasonable to me. |
Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes ros2#171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Asynchronously wait for load node service response Fixes #171 By asychronously waiting for the service response, we can monitor if launch is shutting down and abandon the request so we don't block the shutdown process. Signed-off-by: Jacob Perron <jacob@openrobotics.org> * Add back debug log It was accidentally removed. Signed-off-by: Jacob Perron <jacob@openrobotics.org>
Bug report
Required Info:
Steps to reproduce issue
Run this broken mock node component container:
Launch a LoadComposableNodes action pointing to the broken container:
Expected behavior
LoadComposableNodes action fails to load the node gracefully.
Actual behavior
The launch process hangs forever. Even trying to send sigint or sigquit fails. We need to sigkill the launch process.
Additional information
After some debugging, it appears that we get stuck in this synchronous service call:
launch_ros/launch_ros/launch_ros/actions/load_composable_nodes.py
Line 103 in 91097d1
And so the future being tracked by the launch context is never completed and launch waits indefinitely.
Perhaps there are two bugs here,
The text was updated successfully, but these errors were encountered: