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 d3fc03cf762d0f5d91375113486e77a3b5125892
Author: Clebert Suconic <[email protected]>
AuthorDate: Tue Mar 3 09:59:29 2026 -0500

    ARTEMIS-5376 Just adding a test showing an issue previously fixed
    
    This issue was fixed as part of commit 
e9dbc111f0c7ff4ce8941cb18bcae5edb07ae43a
    
    this is just an additional testing.
---
 .../artemis/tests/db/paging/PagingTest.java        | 73 ++++++++++++++++++++++
 1 file changed, 73 insertions(+)

diff --git 
a/tests/db-tests/src/test/java/org/apache/activemq/artemis/tests/db/paging/PagingTest.java
 
b/tests/db-tests/src/test/java/org/apache/activemq/artemis/tests/db/paging/PagingTest.java
index 02df5057fc..25e680258f 100644
--- 
a/tests/db-tests/src/test/java/org/apache/activemq/artemis/tests/db/paging/PagingTest.java
+++ 
b/tests/db-tests/src/test/java/org/apache/activemq/artemis/tests/db/paging/PagingTest.java
@@ -430,6 +430,79 @@ public class PagingTest extends ParameterDBTestBase {
       assertFalse(iterator.hasNext());
    }
 
+
+   @TestTemplate
+   public void testSimpleRemoveOrAckWhileIterate() throws Exception {
+      Configuration config = createDefaultInVMConfig();
+
+      final int PAGE_MAX = 20 * 1024;
+
+      final int PAGE_SIZE = 10 * 1024;
+
+      server = createServer(true, config, PAGE_SIZE, PAGE_MAX);
+      server.start();
+
+      final int numberOfBytes = 124;
+
+      final int NUMBER_OF_MESSAGES = 201;
+
+      
locator.setBlockOnNonDurableSend(false).setBlockOnDurableSend(false).setBlockOnAcknowledge(false);
+
+
+      Queue queue = 
server.createQueue(QueueConfiguration.of(ADDRESS).setAddress(ADDRESS));
+      assertNotNull(queue);
+      queue.pause();
+
+      PagingStore store = queue.getPagingStore();
+
+      store.startPaging();
+      store.disableCleanup();
+
+      {
+         ClientSessionFactory sf = 
addSessionFactory(createSessionFactory(locator));
+         ClientSession session = sf.createSession(null, null, false, false, 
false, false, 0);
+         ClientProducer producer = session.createProducer(ADDRESS);
+         for (int i = 0; i < NUMBER_OF_MESSAGES; i++) {
+            ClientMessage message = session.createMessage(true);
+
+            message.getBodyBuffer().writerIndex(0);
+
+            message.getBodyBuffer().writeBytes(new byte[numberOfBytes]);
+
+            for (int j = 1; j <= numberOfBytes; j++) {
+               message.getBodyBuffer().writeInt(j);
+            }
+
+            message.putIntProperty("i", i);
+
+            producer.send(message);
+            session.commit();
+         }
+         session.close();
+      }
+
+      PageCursorProvider provider = store.getCursorProvider();
+
+      PageSubscription cursorSubscription = 
provider.getSubscription(queue.getID());
+      PageIterator iterator1 = cursorSubscription.iterator(false);
+      PageIterator iterator2 = cursorSubscription.iterator(false);
+
+      // simulating 2 open cursors.. they both stop and leave stuff for later
+      assertTrue(iterator1.hasNext());
+      assertTrue(iterator2.hasNext());
+
+      PagedReference reference1 = iterator1.next();
+      assertEquals(0, 
reference1.getPagedMessage().getMessage().getIntProperty("i"));
+      iterator1.remove();
+
+
+      assertTrue(iterator2.hasNext());
+      PagedReference reference2 = iterator2.next();
+      assertEquals(1, 
reference2.getPagedMessage().getMessage().getIntProperty("i"));
+
+   }
+
+
    @TestTemplate
    public void testSimpleCursorIteratorLargeMessage() throws Exception {
       Configuration config = createDefaultInVMConfig();


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

Reply via email to