This is an automated email from the ASF dual-hosted git repository. penghui pushed a commit to branch branch-2.8 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 88d3ad45cac634d3aa7ff6aaf0a3777c50e0f668 Author: feynmanlin <[email protected]> AuthorDate: Fri Oct 8 16:14:59 2021 +0800 Fix NPE when removing cursor (#12297) ### Motivation Cursor may not exists, so keep it consistent with the persistent Cursor, add a new judgment whether it exists (cherry picked from commit 7b14e569f8b9265af6866ab357e98797dd9283e4) --- .../bookkeeper/mledger/impl/ManagedCursorContainer.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorContainer.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorContainer.java index 848ce54..c631cdc 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorContainer.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorContainer.java @@ -19,18 +19,16 @@ package org.apache.bookkeeper.mledger.impl; import static com.google.common.base.Preconditions.checkNotNull; - import com.google.common.collect.Lists; -import org.apache.bookkeeper.mledger.ManagedCursor; -import org.apache.bookkeeper.mledger.Position; -import org.apache.commons.lang3.tuple.Pair; - import java.util.ArrayList; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.locks.StampedLock; +import org.apache.bookkeeper.mledger.ManagedCursor; +import org.apache.bookkeeper.mledger.Position; +import org.apache.commons.lang3.tuple.Pair; /** * Contains all the cursors for a ManagedLedger. @@ -124,8 +122,7 @@ public class ManagedCursorContainer implements Iterable<ManagedCursor> { long stamp = rwLock.writeLock(); try { Item item = cursors.remove(name); - - if (shouldTrackInHeap(item.cursor)) { + if (item != null && shouldTrackInHeap(item.cursor)) { // Move the item to the right end of the heap to be removed Item lastItem = heap.get(heap.size() - 1); swap(item, lastItem);
