Skip to content

[BUG] Last Will & Testament entirely unimplemented — will never published on ungraceful disconnect #6852

Description

@Aias00

Description

The CONNECT payload's will fields are dropped on the floor; nothing stores a will (module-wide grep for willMessage|willTopic|cleanSession|hasWill returns zero hits), Disconnect never publishes one, and there is no channelInactive/ungraceful-close hook that would fire a will on a dropped connection.

Location

  • shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Connect.java (connect method never reads will fields)
  • shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Disconnect.java:39 (// todo Last words)
  • shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttTransportHandler.java:42-44 (empty operationComplete)

Impact

Clients that publish a Last Will during CONNECT never have it delivered on an ungraceful disconnect, defeating a core reliability feature of MQTT.

Suggested fix

Parse and store will fields in MqttContext/session on CONNECT; on channelInactive for a non-clean session with a will, publish the will message with its configured QoS/retain; clear the will on graceful DISCONNECT.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions