[
https://issues.apache.org/jira/browse/ARTEMIS-5780?focusedWorklogId=994121&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-994121
]
ASF GitHub Bot logged work on ARTEMIS-5780:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 01/Dec/25 19:52
Start Date: 01/Dec/25 19:52
Worklog Time Spent: 10m
Work Description: jbertram opened a new pull request, #6093:
URL: https://github.com/apache/activemq-artemis/pull/6093
This commit ensures that MQTT 5 sessions using a session expiry interval of
0 are cleaned up after a broker restart. This includes:
- Serialized state message in the $sys.mqtt.sessions queue
- Any related $sys.mqtt.queue.qos2 queues
- Any related subscription queues
To be clear, we can't simply inspect the session expiry interval when the
session is created and make subscription queues non-durable because the session
expiry interval can be changed on the session with the DISCONNECT packet at
which point it would be impossible to potentially make the queue durable and
persist all the messages.
Issue Time Tracking
-------------------
Worklog Id: (was: 994121)
Remaining Estimate: 0h
Time Spent: 10m
> MQTT session queues are not deleted after broker restart when clients
> connected with cleanStart=true and SessionExpiryInterval=0
> --------------------------------------------------------------------------------------------------------------------------------
>
> Key: ARTEMIS-5780
> URL: https://issues.apache.org/jira/browse/ARTEMIS-5780
> Project: Artemis
> Issue Type: Bug
> Components: Broker
> Affects Versions: 2.44.0
> Environment: * OS: Windows Server 2022
> * Artemis: Standalone broker (default {{{}broker.xml{}}}), running as
> Windows Service
> * Java: JDK 17.0.11_9
> * MQTT clients: Eclipse Paho MQTT v5
> ** {{cleanStart = true}}
> ** {{sessionExpiryInterval = 0}}
> ** clientID changes on each start
> ** {{keepAliveInterval = 60}}
> ** Multiple topic subscriptions
> Reporter: Hannes Krennmeir
> Assignee: Justin Bertram
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> h3. *Observed Problem*
> MQTT session queues are correctly deleted when clients disconnect normally or
> even crash while the broker is running. However, in a specific sequence, the
> session queues are {*}not removed{*}, and retained session metadata remains
> present.
> h3. *Steps to Reproduce*
> # Start the broker (Artemis 2.44.0).
> # MQTT clients connect with:
> ** cleanStart=true
> ** sessionExpiryInterval=0
> ** unique clientID per connection
> ** multiple subscriptions
> # While the clients are still connected, {*}stop the broker{*}.
> # After the broker has stopped, {*}terminate the clients{*}.
> # Restart the broker.
> h3. *Expected Behavior*
> * All MQTT subscription queues should be removed, because:
> ** {{cleanStart = true}}
> ** {{sessionExpiryInterval = 0}}
> ** clientID is not reused
> * All session-related messages under {{$sys.mqtt.sessions}} should also be
> removed.
> h3. *Actual Behavior*
> * After restarting Artemis, the MQTT connections and sessions are no longer
> present (expected).
> * But the MQTT subscription queues still exist.
> * Messages stored under the system address {{$sys.mqtt.sessions}} also
> remain.
> Enabling
> {code:xml}
> <auto-delete-queues>true</auto-delete-queues>
> <auto-delete-addresses>true</auto-delete-addresses>{code}
> has no effect, because the session queues have the property {*}Auto created =
> false{*}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact