From d9d7e8d62fc661f56982ccd29dc87fc0d5416d7d Mon Sep 17 00:00:00 2001 From: Yunze Xu Date: Mon, 13 Sep 2021 11:47:19 +0800 Subject: [PATCH 1/2] Avoid adding duplicated BrokerEntryMetadata --- .../org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java index ecdbd8366a7aa..df1a6f4195e87 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java @@ -1513,9 +1513,7 @@ public synchronized void updateLedgersIdsComplete(Stat stat) { ReferenceCountUtil.release(existsOp.data); } existsOp.setLedger(currentLedger); - if (beforeAddEntry(existsOp)) { - pendingAddEntries.add(existsOp); - } + pendingAddEntries.add(existsOp); } } while (existsOp != null && --pendingSize > 0); From 25eea40e23f739de572ebca19a25777d3cc6d154 Mon Sep 17 00:00:00 2001 From: Yunze Xu Date: Mon, 13 Sep 2021 22:53:17 +0800 Subject: [PATCH 2/2] Call beforeAddEntry at the beginning of internalAsyncAddEntry --- .../apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java index df1a6f4195e87..2559e620c636e 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java @@ -717,6 +717,9 @@ public void asyncAddEntry(ByteBuf buffer, int numberOfMessages, AddEntryCallback } private synchronized void internalAsyncAddEntry(OpAddEntry addOperation) { + if (!beforeAddEntry(addOperation)) { + return; + } pendingAddEntries.add(addOperation); final State state = STATE_UPDATER.get(this); if (state == State.Fenced) { @@ -779,10 +782,7 @@ private synchronized void internalAsyncAddEntry(OpAddEntry addOperation) { addOperation.setCloseWhenDone(true); STATE_UPDATER.set(this, State.ClosingLedger); } - // interceptor entry before add to bookie - if (beforeAddEntry(addOperation)) { - addOperation.initiate(); - } + addOperation.initiate(); } }