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 65d254112d157..f9591d9ee6aba 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 @@ -105,7 +105,21 @@ private boolean shouldTrackInHeap(ManagedCursor cursor) { } public PositionImpl getSlowestReadPositionForActiveCursors() { - return heap.isEmpty() ? null : (PositionImpl) heap.get(0).cursor.getReadPosition(); + long stamp = rwLock.readLock(); + try { + return heap.isEmpty() ? null : (PositionImpl) heap.get(0).cursor.getReadPosition(); + } finally { + rwLock.unlockRead(stamp); + } + } + + public PositionImpl getSlowestMarkDeletedPositionForActiveCursors() { + long stamp = rwLock.readLock(); + try { + return heap.isEmpty() ? null : (PositionImpl) heap.get(0).cursor.getMarkDeletedPosition(); + } finally { + rwLock.unlockRead(stamp); + } } public ManagedCursor get(String name) {