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

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


The following commit(s) were added to refs/heads/main by this push:
     new 5a50d75741 ARTEMIS-5971 Advisories queues should not be paged
5a50d75741 is described below

commit 5a50d757416c04cd3d102f2f3921552cf44b823a
Author: Clebert Suconic <[email protected]>
AuthorDate: Tue Mar 24 12:00:41 2026 -0400

    ARTEMIS-5971 Advisories queues should not be paged
    
    This is a fix for MaxMessagesPagingTest as well
---
 .../core/protocol/openwire/amq/AMQConsumer.java    | 14 +++++++++++-
 .../integration/openwire/AdvisoryOpenWireTest.java | 26 ++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git 
a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java
 
b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java
index ea8c4ecf04..17b1cdce54 100644
--- 
a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java
+++ 
b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java
@@ -39,15 +39,18 @@ import org.apache.activemq.artemis.api.core.RoutingType;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl;
 import org.apache.activemq.artemis.core.io.IOCallback;
+import org.apache.activemq.artemis.core.paging.PagingStore;
 import org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection;
 import org.apache.activemq.artemis.core.protocol.openwire.OpenWireConstants;
 import 
org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter;
 import org.apache.activemq.artemis.core.server.MessageReference;
+import org.apache.activemq.artemis.core.server.Queue;
 import org.apache.activemq.artemis.core.server.QueueQueryResult;
 import org.apache.activemq.artemis.core.server.ServerConsumer;
 import org.apache.activemq.artemis.core.server.SlowConsumerDetectionListener;
 import org.apache.activemq.artemis.core.server.impl.QueueImpl;
 import org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl;
+import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
 import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
 import org.apache.activemq.artemis.core.transaction.Transaction;
 import 
org.apache.activemq.artemis.core.transaction.TransactionOperationAbstract;
@@ -256,7 +259,16 @@ public class AMQConsumer {
             queueName = SimpleString.of(UUID.randomUUID().toString());
          }
 
-         
session.getCoreSession().createQueue(QueueConfiguration.of(queueName).setAddress(address).setRoutingType(RoutingType.MULTICAST).setFilterString(selector).setDurable(false).setTemporary(true).setInternal(internalAddress));
+         Queue queue = 
session.getCoreSession().createQueue(QueueConfiguration.of(queueName).setAddress(address).setRoutingType(RoutingType.MULTICAST).setFilterString(selector).setDurable(false).setTemporary(true).setInternal(internalAddress));
+
+         // Check if this is an advisory queue
+         if 
(String.valueOf(address).startsWith(AdvisorySupport.ADVISORY_TOPIC_PREFIX)) {
+            PagingStore store = queue.getPagingStore();
+            if (store != null) { // could be null on tests perhaps
+               // Advisory queues cannot be paged, we must enforce DROP
+               
store.enforceAddressFullMessagePolicy(AddressFullMessagePolicy.DROP);
+            }
+         }
       }
 
       return queueName;
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
index f6c3e86a32..3e4ee28c7e 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
@@ -17,11 +17,16 @@
 package org.apache.activemq.artemis.tests.integration.openwire;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.activemq.advisory.AdvisorySupport;
+import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.management.AddressControl;
+import org.apache.activemq.artemis.core.paging.PagingStore;
+import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
+import org.apache.activemq.artemis.logs.AssertionLoggerHandler;
 import org.apache.activemq.artemis.tests.util.Wait;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -77,6 +82,27 @@ public class AdvisoryOpenWireTest extends BasicOpenWireTest {
       }
    }
 
+   @Test
+   public void testAdvisoryEnforcedToDrop() throws Exception {
+
+      try (AssertionLoggerHandler handler = new AssertionLoggerHandler()) {
+         handler.start();
+         try (Connection connection = factory.createConnection()) {
+            connection.start();
+
+            Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+
+            TemporaryTopic temporaryTopic = session.createTemporaryTopic();
+            assertNotNull(temporaryTopic);
+
+            PagingStore store = 
server.getPagingManager().getPageStore(SimpleString.of("ActiveMQ.Advisory.TempTopic"));
+            assertNotNull(store);
+            assertEquals(AddressFullMessagePolicy.DROP, 
store.getAddressFullMessagePolicy());
+         }
+         assertFalse(handler.hasLevel(AssertionLoggerHandler.LogLevel.WARN));
+      }
+   }
+
    private AddressControl assertNonNullAddressControl(String match) {
       AddressControl advisoryAddressControl = null;
       List<AddressControl> addressResources = 
server.getManagementService().getAddressControls();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to