We’ve currently been running into some issues that look like reaching the maximum number of DDS entities (i.e. nodes are started without error, but do not appear in ros2 node list, neither do their topics appear). If we shut down a few other nodes, than the same node runs well.
Is it the case that the simple single-node process creates exactly 1 participant?
How is it with component container? Does it have 1 participant for the whole container, or does it have one per loaded component?
How is it with the weird transform_listener_impl_* nodes automatically created by TransformListener? Do they “eat” a participant?
And last - I guess the 120 participant limit is per PC, right? This isn’t directly mentioned in the design doc, but I think it follows from the design…
To resolve our current problem, I’ll try switching to discovery server, but I’d like to have a clear view on the other mentioned questions.
Related: When you call rclcpp::init(), you initialize the “global default context”. Many APIs will use the global default context when you don’t specify a context as a convenience.
A single node process would create one context, which means 1 participant for the DDS based RMW implementations.
We have seen the exact behavior you are describing when using fastDDS (Nodes not being listed / services not being found etc). We simply switched to cyclone and it was gone.
This is our cyclone config, perhaps it’s useful to you :