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

commit a0b80b804b76baff6c906b247bbf9c3f4a07a6b4
Author: nozdrya.d.a <[email protected]>
AuthorDate: Fri Feb 27 16:38:46 2026 +0300

    ARTEMIS-5915 fix/incorrect_return_value_for_atomic_verify
---
 .../core/postoffice/impl/NoOpDuplicateIDCache.java |  2 +-
 .../tests/integration/DuplicateDetectionTest.java  | 93 +++++++++++++++++++++-
 2 files changed, 90 insertions(+), 5 deletions(-)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/NoOpDuplicateIDCache.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/NoOpDuplicateIDCache.java
index 4cea18e87d..5443de2b2f 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/NoOpDuplicateIDCache.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/NoOpDuplicateIDCache.java
@@ -32,7 +32,7 @@ public final class NoOpDuplicateIDCache implements 
DuplicateIDCache {
 
    @Override
    public boolean atomicVerify(byte[] duplID, Transaction tx) throws Exception 
{
-      return false;
+      return true;
    }
 
    @Override
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/DuplicateDetectionTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/DuplicateDetectionTest.java
index b8e3582ce3..b0bf5912ff 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/DuplicateDetectionTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/DuplicateDetectionTest.java
@@ -73,11 +73,9 @@ public class DuplicateDetectionTest extends ActiveMQTestBase 
{
       });
    }
 
-   @Parameter(index = 0)
+   @Parameter
    public boolean persistCache;
 
-
-
    private ActiveMQServer server;
 
    private final SimpleString propKey = SimpleString.of("propkey");
@@ -85,7 +83,7 @@ public class DuplicateDetectionTest extends ActiveMQTestBase {
    private final int cacheSize = 10;
 
    @TestTemplate
-   public void testSimpleDuplicateDetecion() throws Exception {
+   public void testSimpleDuplicateDetection() throws Exception {
       ClientSession session = sf.createSession(false, true, true);
 
       session.start();
@@ -219,6 +217,93 @@ public class DuplicateDetectionTest extends 
ActiveMQTestBase {
       assertEquals(7, message2.getObjectProperty(propKey));
    }
 
+   @TestTemplate
+   public void testDisabledDuplicateDetectionForBridgeMessage() throws 
Exception {
+      server.stop();
+
+      // disable duplicate detection
+      config = createDefaultInVMConfig().setIDCacheSize(0);
+
+      server = createServer(config);
+
+      server.start();
+
+      sf = createSessionFactory(locator);
+
+      ClientSession session = sf.createSession(false, true, true);
+
+      session.start();
+
+      final SimpleString queueName = 
SimpleString.of("DuplicateDetectionBridgeTestQueue");
+
+      session.createQueue(QueueConfiguration.of(queueName).setDurable(false));
+
+      ClientProducer producer = session.createProducer(queueName);
+
+      ClientConsumer consumer = session.createConsumer(queueName);
+
+      ClientMessage message = createMessage(session, 0);
+      producer.send(message);
+      ClientMessage receivedMessage = consumer.receive(1000);
+      assertEquals(0, receivedMessage.getObjectProperty(propKey));
+
+      message = createMessage(session, 1);
+      SimpleString dupID = SimpleString.of("1q2w3e4r5t6y7u8i9o0p");
+      message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, 
dupID.getData());
+      producer.send(message);
+      receivedMessage = consumer.receive(1000);
+      assertEquals(1, receivedMessage.getObjectProperty(propKey));
+
+      message = createMessage(session, 2);
+      SimpleString dupID1 = SimpleString.of("1q2w3e4r5t6y7u8i9o0p");
+      message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, 
dupID1.getData());
+      producer.send(message);
+      receivedMessage = consumer.receive(1000);
+      assertEquals(2, receivedMessage.getObjectProperty(propKey));
+
+   }
+
+   @TestTemplate
+   public void testEnabledDuplicateDetectionForBridgeMessage() throws 
Exception {
+
+      ClientSession session = sf.createSession(false, true, true);
+
+      session.start();
+
+      final SimpleString queueName = 
SimpleString.of("DuplicateDetectionBridge2TestQueue");
+
+      session.createQueue(QueueConfiguration.of(queueName).setDurable(false));
+
+      ClientProducer producer = session.createProducer(queueName);
+
+      ClientConsumer consumer = session.createConsumer(queueName);
+
+      ClientMessage message = createMessage(session, 0);
+      producer.send(message);
+      ClientMessage receivedMessage = consumer.receive(1000);
+      assertEquals(0, receivedMessage.getObjectProperty(propKey));
+
+      message = createMessage(session, 1);
+      SimpleString dupID = SimpleString.of("1q2w3e4r5t");
+      message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, 
dupID.getData());
+      producer.send(message);
+      receivedMessage = consumer.receive(1000);
+      assertEquals(1, receivedMessage.getObjectProperty(propKey));
+
+      message = createMessage(session, 2);
+      message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, 
dupID.getData());
+      producer.send(message);
+      receivedMessage = consumer.receiveImmediate();
+      assertNull(receivedMessage);
+
+      message = createMessage(session, 3);
+      message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, 
dupID.getData());
+      producer.send(message);
+      receivedMessage = consumer.receiveImmediate();
+      assertNull(receivedMessage);
+
+   }
+
    @TestTemplate
    public void testDuplicateIDCacheMemoryRetentionForNonTemporaryQueues() 
throws Exception {
       testDuplicateIDCacheMemoryRetention(false);


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

Reply via email to