From 86b1e909d1bfa6dcacecff9260b0b3394d0408c1 Mon Sep 17 00:00:00 2001 From: penghui Date: Fri, 26 Nov 2021 23:47:19 +0800 Subject: [PATCH 1/2] Make sure the LedgerHandle close callback can be completed when encounter exception. --- .../java/org/apache/bookkeeper/client/LedgerHandle.java | 6 +++++- 1 file changed, 5 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 661499e96cb..d3d7b3c511c 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,11 @@ public void safeRun() { // 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 (Exception e) { + closePromise.completeExceptionally(e); + } if (prevHandleState != HandleState.CLOSED) { if (LOG.isDebugEnabled()) { From 959f3e31d5ccadc9ecb4180f60481ff02e2b978f Mon Sep 17 00:00:00 2001 From: penghui Date: Wed, 27 Jul 2022 11:45:21 +0800 Subject: [PATCH 2/2] Address comment. --- .../main/java/org/apache/bookkeeper/client/LedgerHandle.java | 3 ++- 1 file changed, 2 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 d3d7b3c511c..2a19b95cff0 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 @@ -573,8 +573,9 @@ public void safeRun() { // running under any bk locks. try { errorOutPendingAdds(rc, pendingAdds); - } catch (Exception e) { + } catch (Throwable e) { closePromise.completeExceptionally(e); + return; } if (prevHandleState != HandleState.CLOSED) {