Skip to content

Verify & fix message_filters sync-groups under forced intra-process comms #2

Description

@gsokoll

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:

  1. Repro test: two synced topics, publisher + subscriber in one process, IPC on; assert the sync callback fires.
  2. 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.
  3. Ship with a regression test.

Ref: nineyards-robotics#25

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions