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..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 @@ -571,7 +571,12 @@ 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 (Throwable e) { + closePromise.completeExceptionally(e); + return; + } if (prevHandleState != HandleState.CLOSED) { if (LOG.isDebugEnabled()) {