This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch branch-2.8
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.8 by this push:
new 6e6a8eed434 [ML] When skipping updating mark delete position, execute
callback with executor to prevent deadlock (#15971)
6e6a8eed434 is described below
commit 6e6a8eed43441290293b1003ea67f66b7345ba42
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 f3a865bd784..c653e0090e8 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
@@ -1826,7 +1826,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;
}
@@ -1844,7 +1845,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;
}