You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by eo...@apache.org on 2022/07/29 06:56:55 UTC

[bookkeeper] branch master updated: 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.

eolivelli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 05ca058444 Make sure the LedgerHandle close callback can be completed when encounter exception (#2913)
05ca058444 is described below

commit 05ca058444e83a349d3a002b8d893817691f36b0
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.
---
 .../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 4b1a20c25e..316cc7d32d 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()) {