This is an automated email from the ASF dual-hosted git repository.

lhotari pushed a commit to branch branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-2.10 by this push:
     new a082bf41358 [ML] When skipping updating mark delete position, execute 
callback with executor to prevent deadlock (#15971)
a082bf41358 is described below

commit a082bf4135886b498ea796cf45b04ede66bbb441
Author: Lari Hotari <[email protected]>
AuthorDate: Wed Jun 8 17:48:49 2022 +0300

    [ML] When skipping updating mark delete position, execute callback with 
executor to prevent deadlock (#15971)
    
    (cherry picked from commit bbc404bf6c8778e1e788b2b48af60de925256587)
---
 .../java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java  | 6 ++++--
 1 file changed, 4 insertions(+), 2 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 23cc1734132..93ec27f2dc8 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
@@ -1888,7 +1888,8 @@ public class ManagedCursorImpl implements ManagedCursor {
                 log.info("Skipping updating mark delete position to {}. The 
persisted mark delete position {} "
                         + "is later.", mdEntry.newPosition, 
persistentMarkDeletePosition);
             }
-            mdEntry.triggerComplete();
+            // run with executor to prevent deadlock
+            ledger.getExecutor().executeOrdered(ledger.getName(), safeRun(() 
-> mdEntry.triggerComplete()));
             return;
         }
 
@@ -1906,7 +1907,8 @@ public class ManagedCursorImpl implements ManagedCursor {
                 log.info("Skipping updating mark delete position to {}. The 
mark delete position update "
                         + "in progress {} is later.", mdEntry.newPosition, 
inProgressLatest);
             }
-            mdEntry.triggerComplete();
+            // run with executor to prevent deadlock
+            ledger.getExecutor().executeOrdered(ledger.getName(), safeRun(() 
-> mdEntry.triggerComplete()));
             return;
         }
 

Reply via email to