This is an automated email from the ASF dual-hosted git repository.

tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new bff0bedd70 ARTEMIS-5540 expire MQTT 3.x session immediately when 
defaultMqttSessionExpiryInterval is 0
bff0bedd70 is described below

commit bff0bedd704fb0efdbf7d9932c27d1639d066b65
Author: Justin Bertram <[email protected]>
AuthorDate: Tue Jun 24 13:45:58 2025 -0500

    ARTEMIS-5540 expire MQTT 3.x session immediately when 
defaultMqttSessionExpiryInterval is 0
---
 .../artemis/core/protocol/mqtt/MQTTSession.java    |  2 +-
 .../mqtt/MQTTSessionExpiryIntervalTest.java        | 33 +++++++++++++++++-----
 2 files changed, 27 insertions(+), 8 deletions(-)

diff --git 
a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSession.java
 
b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSession.java
index 776d370704..a681875eae 100644
--- 
a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSession.java
+++ 
b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSession.java
@@ -152,7 +152,7 @@ public class MQTTSession {
             if (state.isWill() && failure) {
                sendWillMessage();
             }
-            if (isClean()) {
+            if (isClean() || state.getClientSessionExpiryInterval() == 0) {
                clean(false);
                stateManager.removeSessionState(connection.getClientID());
             }
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/mqtt/MQTTSessionExpiryIntervalTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/mqtt/MQTTSessionExpiryIntervalTest.java
index af32eb3fdc..d30e65988a 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/mqtt/MQTTSessionExpiryIntervalTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/mqtt/MQTTSessionExpiryIntervalTest.java
@@ -16,24 +16,45 @@
  */
 package org.apache.activemq.artemis.tests.integration.mqtt;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import java.lang.invoke.MethodHandles;
+import java.util.Arrays;
+import java.util.Collection;
 
+import 
org.apache.activemq.artemis.tests.extensions.parameterized.ParameterizedTestExtension;
+import org.apache.activemq.artemis.tests.extensions.parameterized.Parameters;
 import org.apache.activemq.artemis.tests.util.Wait;
 import org.fusesource.mqtt.client.BlockingConnection;
 import org.fusesource.mqtt.client.MQTT;
 import org.fusesource.mqtt.client.QoS;
 import org.fusesource.mqtt.client.Topic;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestTemplate;
 import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import java.lang.invoke.MethodHandles;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@ExtendWith(ParameterizedTestExtension.class)
 public class MQTTSessionExpiryIntervalTest extends MQTTTestSupport {
 
    private static final Logger logger = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
-   @Test
+   @Parameters(name = "sessionExpiryInterval={0}")
+   public static Collection<Object[]> getParams() {
+      return Arrays.asList(new Object[][] {
+         {3},
+         {0}
+      });
+   }
+
+   public int sessionExpiryInterval;
+
+   public MQTTSessionExpiryIntervalTest(int sessionExpiryInterval) {
+      this.sessionExpiryInterval = sessionExpiryInterval;
+   }
+
+   @TestTemplate
    @Timeout(60)
    public void testCustomSessionExpiryInterval() throws Exception {
       final MQTT mqttSub = createMQTTConnection("MQTT-Sub-Client", false);
@@ -52,8 +73,6 @@ public class MQTTSessionExpiryIntervalTest extends 
MQTTTestSupport {
 
    @Override
    protected void addMQTTConnector() throws Exception {
-      server.getConfiguration().addAcceptorConfiguration("MQTT", 
"tcp://localhost:" + port + 
"?protocols=MQTT;anycastPrefix=anycast:;multicastPrefix=multicast:;defaultMqttSessionExpiryInterval=3");
-
-      logger.debug("Added MQTT connector to broker");
+      server.getConfiguration().addAcceptorConfiguration("MQTT", 
"tcp://localhost:" + port + 
"?protocols=MQTT;anycastPrefix=anycast:;multicastPrefix=multicast:;defaultMqttSessionExpiryInterval="
 + sessionExpiryInterval);
    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to