[BUG] Last Will & Testament entirely unimplemented — will never published on ungraceful disconnect
- Dominant language
- Java
- Stars
- 8.8k
- Forks
- 3.1k
- Avg merge
- 7d 1h
- Merged PRs (30d)
- 85
Description
## 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.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.