This is an automated email from the ASF dual-hosted git repository. technoboy pushed a commit to branch branch-2.11 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit d612b8f304deaca77fa94500c18bfcc1756d0d11 Author: LinChen <[email protected]> AuthorDate: Thu Oct 13 09:51:48 2022 +0800 Avoid unnecessary creation of BitSetRecyclable objects (#17998) Co-authored-by: leolinchen <[email protected]> --- .../org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java index ed861e6830f..3c3bad218d4 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java @@ -2168,11 +2168,12 @@ public class ManagedCursorImpl implements ManagedCursor { individualDeletedMessages); } } else if (config.isDeletionAtBatchIndexLevelEnabled() && batchDeletedIndexes != null) { - BitSetRecyclable bitSet = batchDeletedIndexes.computeIfAbsent(position, (v) -> - BitSetRecyclable.create().resetWords(position.ackSet)); BitSetRecyclable givenBitSet = BitSetRecyclable.create().resetWords(position.ackSet); - bitSet.and(givenBitSet); - givenBitSet.recycle(); + BitSetRecyclable bitSet = batchDeletedIndexes.computeIfAbsent(position, (v) -> givenBitSet); + if (givenBitSet != bitSet) { + bitSet.and(givenBitSet); + givenBitSet.recycle(); + } if (bitSet.isEmpty()) { PositionImpl previousPosition = ledger.getPreviousPosition(position); individualDeletedMessages.addOpenClosed(previousPosition.getLedgerId(),
