Skip to content

LocalDistService dist missing result for local route leads to No deliver result warnings #226

@liaodn

Description

@liaodn

In the local non shared subscription path, when a local route exists but the corresponding session is missing or not an IMQTTTransientSession, LocalDistService.dist does not write a result entry for that MatchInfo. This causes upstream BatchDeliveryCall to log repeated No deliver result warnings.
Expected behavior is to return NO_RECEIVER and always include a result entry.

Example log:

2026-02-04 22:23:14.338  WARN ... BatchDeliveryCall [BatchDeliveryCall.java:137] No deliver result: tenantId=tffffffff, route=matcher {
  filterLevel: "#"
  mqttTopicFilter: "#"
}
receiverId: "1000061147400331990937"
incarnation: 1147400331990937
, batcherKey=DelivererKey[subBrokerId=0, delivererKey=cb3564ba-7c07-4e92-bfcb-8c5839ee9a01/1672626574:tffffffff:2]

Reproducible Steps

  1. Start a single node BifroMQ without any custom plugins
  2. Create a local non shared subscription route, for example subscribe to #
  3. Disconnect the corresponding client session so the session is missing or not an IMQTTTransientSession
  4. Publish a message that matches the route
  5. Observe repeated No deliver result warnings in logs

Root cause

In the local route branch of LocalDistService where missing or non transient sessions do not generate a result entry.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions