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