asafm commented on code in PR #21816:
URL: https://github.com/apache/pulsar/pull/21816#discussion_r1439280519


##########
managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorContainer.java:
##########
@@ -204,6 +281,24 @@ public ManagedCursor getSlowestReader() {
         }
     }
 
+    /**
+     * @return Returns the CursorInfo for the cursor with the oldest position,
+     *         or null if there aren't any tracked cursors
+     */
+    public CursorInfo getCursorWithOldestPosition() {
+        long stamp = rwLock.readLock();
+        try {
+            if (heap.isEmpty()) {
+                return null;
+            } else {
+                Item item = heap.get(0);

Review Comment:
   @dragosvictor answered 
[here](https://github.com/apache/pulsar/pull/21816#discussion_r1437844593). 
It's because removing an arbitrary object from a PriorityQueue is O(n) while in 
Pulsar implementation, removing is O(1) due to the usage of Map of cursor name 
to `Item` and in it, we have its index in the array.
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to