diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/ReplicationWorker.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/ReplicationWorker.java index 19248631bc1..48e898ff619 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/ReplicationWorker.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/ReplicationWorker.java @@ -528,9 +528,11 @@ private boolean rereplicate(long ledgerIdToReplicate) throws InterruptedExceptio return false; } catch (BKNotEnoughBookiesException e) { logBKExceptionAndReleaseLedger(e, ledgerIdToReplicate); + deferLedgerLockRelease = true; throw e; } catch (BKException e) { logBKExceptionAndReleaseLedger(e, ledgerIdToReplicate); + deferLedgerLockRelease = true; return false; } finally { // we make sure we always release the underreplicated lock, unless we decided to defer it. If the lock has