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

lhotari pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new c1c1b21f3df [fix][broker] Fix duplicate increment of 
ADD_OP_COUNT_UPDATER in OpAddEntry (#24506)
c1c1b21f3df is described below

commit c1c1b21f3df1ff12c35b8cf333fe8dad302facbe
Author: Ruimin MA <maruimin...@gmail.com>
AuthorDate: Wed Jul 23 16:46:39 2025 +0800

    [fix][broker] Fix duplicate increment of ADD_OP_COUNT_UPDATER in OpAddEntry 
(#24506)
    
    Co-authored-by: crossoverJie <crossover...@gmail.com>
    (cherry picked from commit 39ac65a58e94e9d4621054e60b9dcb8241d27ff3)
---
 .../apache/bookkeeper/mledger/impl/OpAddEntry.java    |  1 -
 .../bookkeeper/mledger/impl/ManagedLedgerTest.java    | 19 +++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git 
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/OpAddEntry.java
 
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/OpAddEntry.java
index e0d35ce4e91..c481139d0cc 100644
--- 
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/OpAddEntry.java
+++ 
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/OpAddEntry.java
@@ -135,7 +135,6 @@ public class OpAddEntry implements AddCallback, 
CloseCallback, Runnable, Managed
             ByteBuf duplicateBuffer = data.retainedDuplicate();
 
             // internally asyncAddEntry() will take the ownership of the 
buffer and release it at the end
-            addOpCount = 
ManagedLedgerImpl.ADD_OP_COUNT_UPDATER.incrementAndGet(ml);
             lastInitTime = System.nanoTime();
             if (ml.getManagedLedgerInterceptor() != null) {
                 long originalDataLen = data.readableBytes();
diff --git 
a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
 
b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
index 6f5e409aff4..23095ac1a86 100644
--- 
a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
+++ 
b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
@@ -3318,6 +3318,25 @@ public class ManagedLedgerTest extends 
MockedBookKeeperTestCase {
         setFieldValue(ManagedLedgerImpl.class, ledger, "currentLedger", null);
     }
 
+    @Test
+    public void testAddOpCountWithMessageAdd() throws Exception {
+        ManagedLedgerFactoryConfig config = new ManagedLedgerFactoryConfig();
+        config.setMaxCacheSize(0);
+
+        @Cleanup("shutdown")
+        ManagedLedgerFactoryImpl factory = new 
ManagedLedgerFactoryImpl(metadataStore, bkc, config);
+        ManagedLedgerImpl ledger = (ManagedLedgerImpl) 
factory.open("my_test_ledger");
+
+        for (int i = 0; i < 10; i++) {
+            OpAddEntry op = OpAddEntry.createNoRetainBuffer(ledger,
+                    ByteBufAllocator.DEFAULT.buffer(128), null, null, new 
AtomicBoolean());
+            ledger.internalAsyncAddEntry(op);
+            long addOpCount = 
ManagedLedgerImpl.ADD_OP_COUNT_UPDATER.get(ledger);
+            Assert.assertEquals(i + 1, addOpCount);
+        }
+    }
+
+
     @Test
     public void avoidUseSameOpAddEntryBetweenDifferentLedger() throws 
Exception {
         ManagedLedgerFactoryConfig config = new ManagedLedgerFactoryConfig();

Reply via email to