Skip to content

Commit 452d682

Browse files
author
guojunhao
committed
No need to trigger ensembleChangeLoop if all failed bookies are not in current ensemble
Signed-off-by: guojunhao <guojunhao@bigo.sg>
1 parent 7317435 commit 452d682

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2175,14 +2175,27 @@ void handleBookieFailure(final Map<Integer, BookieId> failedBookies) {
21752175
if (changingEnsemble) {
21762176
delayedWriteFailedBookies.putAll(failedBookies);
21772177
} else {
2178-
changingEnsemble = true;
2179-
triggerLoop = true;
2180-
21812178
toReplace = new HashMap<>(delayedWriteFailedBookies);
21822179
delayedWriteFailedBookies.clear();
21832180
toReplace.putAll(failedBookies);
21842181

21852182
origEnsemble = getCurrentEnsemble();
2183+
2184+
for (Map.Entry<Integer, BookieId> entry : toReplace.entrySet()) {
2185+
Integer bookieIndex = entry.getKey();
2186+
BookieId addr = entry.getValue();
2187+
if (origEnsemble.get(bookieIndex).equals(addr)) {
2188+
changingEnsemble = true;
2189+
triggerLoop = true;
2190+
break;
2191+
}
2192+
}
2193+
2194+
if (!triggerLoop) {
2195+
if (LOG.isDebugEnabled()) {
2196+
LOG.debug("No need to triggerLoop as all failed bookies are not in current ensemble, failedBookies:{}", toReplace);
2197+
}
2198+
}
21862199
}
21872200
}
21882201
if (triggerLoop) {

0 commit comments

Comments
 (0)