Skip to content

Commit 39ac65a

Browse files
[fix][broker] Fix duplicate increment of ADD_OP_COUNT_UPDATER in OpAddEntry (#24506)
Co-authored-by: crossoverJie <[email protected]>
1 parent 80902f8 commit 39ac65a

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/OpAddEntry.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ public void initiate() {
135135
ByteBuf duplicateBuffer = data.retainedDuplicate();
136136

137137
// internally asyncAddEntry() will take the ownership of the buffer and release it at the end
138-
addOpCount = ManagedLedgerImpl.ADD_OP_COUNT_UPDATER.incrementAndGet(ml);
139138
lastInitTime = System.nanoTime();
140139
if (ml.getManagedLedgerInterceptor() != null) {
141140
long originalDataLen = data.readableBytes();

managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3318,6 +3318,25 @@ public void addFailed(ManagedLedgerException exception, Object ctx) {
33183318
setFieldValue(ManagedLedgerImpl.class, ledger, "currentLedger", null);
33193319
}
33203320

3321+
@Test
3322+
public void testAddOpCountWithMessageAdd() throws Exception {
3323+
ManagedLedgerFactoryConfig config = new ManagedLedgerFactoryConfig();
3324+
config.setMaxCacheSize(0);
3325+
3326+
@Cleanup("shutdown")
3327+
ManagedLedgerFactoryImpl factory = new ManagedLedgerFactoryImpl(metadataStore, bkc, config);
3328+
ManagedLedgerImpl ledger = (ManagedLedgerImpl) factory.open("my_test_ledger");
3329+
3330+
for (int i = 0; i < 10; i++) {
3331+
OpAddEntry op = OpAddEntry.createNoRetainBuffer(ledger,
3332+
ByteBufAllocator.DEFAULT.buffer(128), null, null, new AtomicBoolean());
3333+
ledger.internalAsyncAddEntry(op);
3334+
long addOpCount = ManagedLedgerImpl.ADD_OP_COUNT_UPDATER.get(ledger);
3335+
Assert.assertEquals(i + 1, addOpCount);
3336+
}
3337+
}
3338+
3339+
33213340
@Test
33223341
public void avoidUseSameOpAddEntryBetweenDifferentLedger() throws Exception {
33233342
ManagedLedgerFactoryConfig config = new ManagedLedgerFactoryConfig();

0 commit comments

Comments
 (0)