Skip to content

Commit 71aa7e4

Browse files
author
guojunhao
committed
Invoke sendAddSuccessCallbacks if no bookie will be replaced in ensemble change
Signed-off-by: guojunhao <guojunhao@bigo.sg>
1 parent 7317435 commit 71aa7e4

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2278,6 +2278,15 @@ void ensembleChangeLoop(List<BookieId> origEnsemble, Map<Integer, BookieId> fail
22782278
}
22792279
if (newEnsemble != null) { // unsetSuccess outside of lock
22802280
unsetSuccessAndSendWriteRequest(newEnsemble, replaced);
2281+
// If replaced is empty, no one will trigger #sendAddSuccessCallbacks
2282+
// in #unsetSuccessAndSendWriteRequest.
2283+
// So we do need to invoke #sendAddSuccessCallbacks() for entries which
2284+
// may have already completed in pendingAddOps, but are just waiting for the ensemble
2285+
// to change.
2286+
if (replaced.isEmpty()) {
2287+
sendAddSuccessCallbacks();
2288+
LOG.info("No bookie will be replaced, invoke #sendAddSuccessCallbacks.");
2289+
}
22812290
}
22822291
}
22832292
}, clientCtx.getMainWorkerPool().chooseThread(ledgerId));

0 commit comments

Comments
 (0)