Repository navigation
fix(gateway): run the gateway's ROS paths on its own context - #725
Merged
Merged
Conversation
bburda
added this pull request to stack #728
October 18, 2026 17:38
bburda
force-pushed
the
fix/gateway-private-context
branch
from
October 19, 2026 07:00
040a3cc to
368ccb3
Compare
mfaferek93
reviewed
Oct 19, 2026
bburda
force-pushed
the
fix/gateway-private-context
branch
2 times, most recently
from
October 20, 2026 12:47
1861f17 to
d373f35
Compare
A host can build a GatewayNode on a private rclcpp::Context and never initialise the default one. Construction then threw: the parameter transport's _param_client_node took the default context, and the subscription executor, the fault-service transport and the lifecycle state reader each built their SingleThreadedExecutor on it. _param_client_node now takes the gateway's context, and the three helper executors take their helper node's context (executor_options_for). The parameter transport's free spin_until_future_complete already builds its executor on the node's context. The in-tree plugins did the same. graph_watchdog's fault executor and lifecycle watcher, the OPC-UA plugin's fault executor and param_beacon's _param_beacon_node used the default context, so on such a gateway set_context() threw and PluginManager disabled the plugin. They take the gateway's context now. test_gateway_private_context initialises only a private context and checks construction, a fault-manager call, a parameter read through the parameter transport, a lifecycle state read and a subscription through the subscription executor. test_graph_watchdog_private_context, test_opcua_private_context and test_param_beacon_private_context run each plugin on a private context.
bburda
force-pushed
the
fix/gateway-private-context
branch
from
October 20, 2026 12:55
d373f35 to
ff3d688
Compare
mfaferek93
approved these changes
Oct 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Summary
A gateway built on a private
rclcpp::Contextworks. Construction threw when the default context was never initialised._param_beacon_node. Before, theirset_context()threw on such a gateway and the plugin was disabled.Issue
Type
Testing
./scripts/test.sh test_gateway_private_context: it initialises only a private context and checks construction, a fault-manager call, a parameter read, a lifecycle state read and a subscription. On main construction throws../scripts/test.sh private_contextalso runstest_graph_watchdog_private_context,test_opcua_private_contextandtest_param_beacon_private_context. Each plugin'sset_context()threw on a private context before../scripts/test.sh unit --packages-select ros2_medkit_gatewayChecklist