You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by yo...@apache.org on 2022/08/01 13:44:51 UTC

[bookkeeper] 05/17: Make sure the LedgerHandle close callback can be completed when encounter exception (#2913)

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

yong pushed a commit to branch branch-4.15
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 7f53f0b0e272b253d79ee66413e746e39fedf45c
Author: Penghui Li <pe...@apache.org>
AuthorDate: Fri Jul 29 14:56:48 2022 +0800

    Make sure the LedgerHandle close callback can be completed when encounter exception (#2913)
    
    * Make sure the LedgerHandle close callback can be completed when encounter exception.
    
    (cherry picked from commit 05ca058444e83a349d3a002b8d893817691f36b0)
---
 .../src/main/java/org/apache/bookkeeper/client/LedgerHandle.java   | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
index 4d9090e589..bead7d1072 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
@@ -571,7 +571,12 @@ public class LedgerHandle implements WriteHandle {
 
                 // error out all pending adds during closing, the callbacks shouldn't be
                 // running under any bk locks.
-                errorOutPendingAdds(rc, pendingAdds);
+                try {
+                    errorOutPendingAdds(rc, pendingAdds);
+                } catch (Throwable e) {
+                    closePromise.completeExceptionally(e);
+                    return;
+                }
 
                 if (prevHandleState != HandleState.CLOSED) {
                     if (LOG.isDebugEnabled()) {