Skip to content

Commit e6e4deb

Browse files
committed
refactor: modify addNode call to outside of replaceToAdherePlacementPolicyInternal
1 parent 4ab4f85 commit e6e4deb

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

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

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,6 +1131,13 @@ public PlacementResult<List<BookieId>> replaceToAdherePlacementPolicy(
11311131
prevNode = replaceToAdherePlacementPolicyInternal(
11321132
curRack, excludeNodes, ensemble, ensemble,
11331133
provisionalEnsembleNodes, i, ensembleSize, minNumRacksPerWriteQuorumForThisEnsemble);
1134+
// got a good candidate
1135+
if (ensemble.addNode(prevNode)) {
1136+
// add the candidate to exclude set
1137+
excludeNodes.add(prevNode);
1138+
} else {
1139+
throw new BKNotEnoughBookiesException();
1140+
}
11341141
// replace to newer node
11351142
provisionalEnsembleNodes.set(i, prevNode);
11361143
} catch (BKNotEnoughBookiesException e) {
@@ -1159,10 +1166,6 @@ private BookieNode replaceToAdherePlacementPolicyInternal(
11591166
final BookieNode currentNode = provisionalEnsembleNodes.get(ensembleIndex);
11601167
// if the current bookie could be applied to the ensemble, apply it to minify the number of bookies replaced
11611168
if (!excludeBookies.contains(currentNode) && predicate.apply(currentNode, ensemble)) {
1162-
if (ensemble.addNode(currentNode)) {
1163-
// add the candidate to exclude set
1164-
excludeBookies.add(currentNode);
1165-
}
11661169
return currentNode;
11671170
}
11681171

@@ -1234,11 +1237,6 @@ private BookieNode replaceToAdherePlacementPolicyInternal(
12341237
continue;
12351238
}
12361239
BookieNode bn = (BookieNode) n;
1237-
// got a good candidate
1238-
if (ensemble.addNode(bn)) {
1239-
// add the candidate to exclude set
1240-
excludeBookies.add(bn);
1241-
}
12421240
return bn;
12431241
}
12441242
}

bookkeeper-server/src/test/java/org/apache/bookkeeper/client/CorrectEnsemblePlacementCmdTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.apache.bookkeeper.util.EntryFormatter;
4747
import org.apache.bookkeeper.util.LedgerIdFormatter;
4848
import org.apache.bookkeeper.util.StaticDNSResolver;
49+
import org.junit.After;
4950
import org.junit.Test;
5051
import org.mockito.Mockito;
5152
import org.slf4j.Logger;
@@ -67,6 +68,12 @@ public CorrectEnsemblePlacementCmdTest() throws Exception {
6768
baseConf.setFlushInterval(1);
6869
}
6970

71+
@After
72+
public void tearDown() throws Exception {
73+
super.tearDown();
74+
StaticDNSResolver.reset();
75+
}
76+
7077
/**
7178
* list of entry logger files that contains given ledgerId.
7279
*/

0 commit comments

Comments
 (0)