diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.java index 1fb17ca3ef1..e26988a4e67 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.java @@ -17,6 +17,7 @@ */ package org.apache.bookkeeper.client; +import com.google.common.collect.Sets; import io.netty.util.HashedWheelTimer; import java.util.List; import java.util.Map; @@ -110,7 +111,8 @@ public Set onClusterChanged(Set writableBookies, Set readOnlyBookies) { Set deadBookies = super.onClusterChanged(writableBookies, readOnlyBookies); if (null != slave) { - deadBookies = slave.onClusterChanged(writableBookies, readOnlyBookies); + deadBookies = Sets.union(deadBookies, + slave.onClusterChanged(writableBookies, readOnlyBookies)); } return deadBookies; } diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestRackawareEnsemblePlacementPolicy.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestRackawareEnsemblePlacementPolicy.java index cd76cdd1c64..4abe80ea7b7 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestRackawareEnsemblePlacementPolicy.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestRackawareEnsemblePlacementPolicy.java @@ -2481,7 +2481,7 @@ public void testPlacementOnStabilizeNetworkTopology() throws Exception { // addr4 left addrs.remove(addr4.toBookieId()); Set deadBookies = repp.onClusterChanged(addrs, new HashSet()); - assertTrue(deadBookies.isEmpty()); + assertTrue(deadBookies.contains(addr4.toBookieId())); // we will never use addr4 even it is in the stabilized network topology for (int i = 0; i < 5; i++) {