BaseNode forces use_intra_process_comms(true) on every node. Sync-groups (jig/sync_group.hpp) are built on message_filters::Subscriber / Synchronizer. Upstream nineyards-robotics#25 flags — unverified — that message_filters may not observe messages delivered via intra-process transport, so the synchronizer never fires.
Known: message_filters callbacks are shared_ptr-only (no zero-copy unique_ptr path). Whether IPC-delivered messages are dropped or merely copied is QoS/config-dependent and needs an empirical test on the target distro (Jazzy).
Impact: a node using the sync feature whose synced publisher runs in the same process could silently receive no synchronized callbacks. Nodes whose publishers run in separate processes are unaffected (inter-process transport).
Do:
- Repro test: two synced topics, publisher + subscriber in one process, IPC on; assert the sync callback fires.
- If broken: create sync-group subscriptions with
SubscriptionOptions().use_intra_process_comm = false (opt the message_filters subscriptions out of IPC), or document sync-groups as incompatible with intra-process co-location and guard against it.
- Ship with a regression test.
Ref: nineyards-robotics#25
BaseNode forces
use_intra_process_comms(true)on every node. Sync-groups (jig/sync_group.hpp) are built onmessage_filters::Subscriber/Synchronizer. Upstream nineyards-robotics#25 flags — unverified — that message_filters may not observe messages delivered via intra-process transport, so the synchronizer never fires.Known: message_filters callbacks are
shared_ptr-only (no zero-copyunique_ptrpath). Whether IPC-delivered messages are dropped or merely copied is QoS/config-dependent and needs an empirical test on the target distro (Jazzy).Impact: a node using the
syncfeature whose synced publisher runs in the same process could silently receive no synchronized callbacks. Nodes whose publishers run in separate processes are unaffected (inter-process transport).Do:
SubscriptionOptions().use_intra_process_comm = false(opt the message_filters subscriptions out of IPC), or document sync-groups as incompatible with intra-process co-location and guard against it.Ref: nineyards-robotics#25