-
Notifications
You must be signed in to change notification settings - Fork 21
Description
Summary
Trigger notifications from ROS-derived sources (faults, logs) use raw ROS identifiers that don't match manifest entity IDs. This means triggers created on manifest entities (e.g., apps/diagnostic-bridge) never fire - they only work on runtime-discovered entities with ROS node names (e.g., apps/diagnostic_bridge).
Affected collections:
- Faults:
TriggerFaultSubscriberextracts entity_id fromreporting_sources[0]last path segment (e.g.,/bridge/diagnostic_bridge->diagnostic_bridge) - Logs:
LogManager::on_rosout()usesnormalize_fqn()which strips leading/(e.g.,/bridge/diagnostic_bridge->bridge/diagnostic_bridge) - Data: Not affected - entity_id comes from the trigger creation request
Impact: In hybrid discovery mode, users must know to target runtime entities (underscore names) instead of manifest entities (hyphen names). In manifest-only mode, fault/log triggers cannot work at all since the runtime entities don't exist.
Proposed solution (optional)
Add an entity ID resolution step in the notification path (either in each subscriber or in ResourceChangeNotifier::notify()) that maps ROS node FQNs to their linked manifest entity IDs via the entity cache's RosBinding.node_name matching - the same resolution that RuntimeDiscoveryStrategy already does for node linking.
Additional context (optional)
trigger_fault_subscriber.cpplines 44-50log_manager.cppline 198, 238- Discovered while implementing Add triggers showcase selfpatch_demos#43 (triggers showcase)
- feat: add triggers showcase to all demos selfpatch_demos#52 works around this by targeting runtime entities