From 003c1bb45832a5754488dd63722a2271f072bdac Mon Sep 17 00:00:00 2001 From: lushiji Date: Thu, 23 Dec 2021 17:17:24 +0800 Subject: [PATCH 1/2] bugfix: when enforceMinNumRacksPerWriteQuorum is false, no need to check racks in quorum --- .../client/RackawareEnsemblePlacementPolicyImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java index 6e31819c2c3..5615338e297 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java @@ -1035,8 +1035,8 @@ public PlacementPolicyAdherence isEnsembleAdheringToPlacementPolicy(List Date: Thu, 13 Jan 2022 18:47:59 +0800 Subject: [PATCH 2/2] update test case --- .../TestRackawareEnsemblePlacementPolicy.java | 13 +++++++------ .../AuditorPlacementPolicyCheckTest.java | 4 ++++ 2 files changed, 11 insertions(+), 6 deletions(-) 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 28a27ee611b..2e00bfd67d3 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 @@ -79,6 +79,7 @@ public class TestRackawareEnsemblePlacementPolicy extends TestCase { BookieSocketAddress addr2, addr3, addr4; io.netty.util.HashedWheelTimer timer; final int minNumRacksPerWriteQuorumConfValue = 2; + final boolean enforceMinNumRacksPerWriteQuorum = true; @Override protected void setUp() throws Exception { @@ -746,7 +747,7 @@ public void testSingleRackWithEnforceMinNumRacks() throws Exception { ClientConfiguration clientConf = new ClientConfiguration(conf); clientConf.setMinNumRacksPerWriteQuorum(2); - clientConf.setEnforceMinNumRacksPerWriteQuorum(true); + clientConf.setEnforceMinNumRacksPerWriteQuorum(enforceMinNumRacksPerWriteQuorum); repp = new RackawareEnsemblePlacementPolicy(); repp.initialize(clientConf, Optional. empty(), timer, DISABLE_ALL, NullStatsLogger.INSTANCE, BookieSocketAddress.LEGACY_BOOKIEID_RESOLVER); @@ -783,7 +784,7 @@ public void testNewEnsembleWithEnforceMinNumRacks() throws Exception { ClientConfiguration clientConf = new ClientConfiguration(conf); clientConf.setMinNumRacksPerWriteQuorum(minNumRacksPerWriteQuorum); // set enforceMinNumRacksPerWriteQuorum - clientConf.setEnforceMinNumRacksPerWriteQuorum(true); + clientConf.setEnforceMinNumRacksPerWriteQuorum(enforceMinNumRacksPerWriteQuorum); TestStatsProvider statsProvider = new TestStatsProvider(); TestStatsLogger statsLogger = statsProvider.getStatsLogger(""); repp = new RackawareEnsemblePlacementPolicy(); @@ -1447,7 +1448,7 @@ public void testNewEnsembleWithMultipleRacks() throws Exception { int numCovered = getNumCoveredWriteQuorums(ensemble, writeQuorumSize, conf.getMinNumRacksPerWriteQuorum(), repp.bookieAddressResolver); assertTrue(numCovered >= 1 && numCovered < 3); - assertEquals(PlacementPolicyAdherence.FAIL, isEnsembleAdheringToPlacementPolicy); + assertEquals(PlacementPolicyAdherence.MEETS_STRICT, isEnsembleAdheringToPlacementPolicy); ensembleSize = 4; EnsemblePlacementPolicy.PlacementResult> ensembleResponse2 = repp.newEnsemble(ensembleSize, writeQuorumSize, @@ -1457,7 +1458,7 @@ public void testNewEnsembleWithMultipleRacks() throws Exception { numCovered = getNumCoveredWriteQuorums(ensemble2, writeQuorumSize, conf.getMinNumRacksPerWriteQuorum(), repp.bookieAddressResolver); assertTrue(numCovered >= 1 && numCovered < 3); - assertEquals(PlacementPolicyAdherence.FAIL, isEnsembleAdheringToPlacementPolicy2); + assertEquals(PlacementPolicyAdherence.MEETS_STRICT, isEnsembleAdheringToPlacementPolicy2); } catch (BKNotEnoughBookiesException bnebe) { fail("Should not get not enough bookies exception even there is only one rack."); } @@ -2026,7 +2027,7 @@ public void testPlacementOnStabilizeNetworkTopology() throws Exception { List ensemble = ensembleResponse.getResult(); PlacementPolicyAdherence isEnsembleAdheringToPlacementPolicy = ensembleResponse.isAdheringToPolicy(); assertFalse(ensemble.contains(addr4.toBookieId())); - assertEquals(PlacementPolicyAdherence.FAIL, isEnsembleAdheringToPlacementPolicy); + assertEquals(PlacementPolicyAdherence.MEETS_STRICT, isEnsembleAdheringToPlacementPolicy); } // we could still use addr4 for urgent allocation if it is just bookie flapping @@ -2034,7 +2035,7 @@ public void testPlacementOnStabilizeNetworkTopology() throws Exception { repp.newEnsemble(4, 2, 2, null, new HashSet()); List ensemble = ensembleResponse.getResult(); PlacementPolicyAdherence isEnsembleAdheringToPlacementPolicy = ensembleResponse.isAdheringToPolicy(); - assertEquals(PlacementPolicyAdherence.FAIL, isEnsembleAdheringToPlacementPolicy); + assertEquals(PlacementPolicyAdherence.MEETS_STRICT, isEnsembleAdheringToPlacementPolicy); assertTrue(ensemble.contains(addr4.toBookieId())); } diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorPlacementPolicyCheckTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorPlacementPolicyCheckTest.java index 7608e8e1cda..baa066a3a7b 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorPlacementPolicyCheckTest.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorPlacementPolicyCheckTest.java @@ -236,6 +236,7 @@ public void testPlacementPolicyCheckWithLedgersNotAdheringToPlacementPolicy() th int writeQuorumSize = 3; int ackQuorumSize = 2; int minNumRacksPerWriteQuorumConfValue = 3; + boolean enforceMinNumRacksPerWriteQuorum = true; /* * this closed ledger doesn't adhere to placement policy because there are only @@ -273,6 +274,7 @@ public void testPlacementPolicyCheckWithLedgersNotAdheringToPlacementPolicy() th ServerConfiguration servConf = new ServerConfiguration(confByIndex(0)); servConf.setMinNumRacksPerWriteQuorum(minNumRacksPerWriteQuorumConfValue); + servConf.setEnforceMinNumRacksPerWriteQuorum(enforceMinNumRacksPerWriteQuorum); setServerConfigPropertiesForRackPlacement(servConf); MutableObject auditorRef = new MutableObject(); try { @@ -454,6 +456,7 @@ public void testPlacementPolicyCheckWithLedgersNotAdheringToPolicyWithMultipleSe int writeQuorumSize = 5; int ackQuorumSize = 2; int minNumRacksPerWriteQuorumConfValue = 4; + boolean enforceMinNumRacksPerWriteQuorum = true; /* * this closed ledger in each writeQuorumSize (5), there would be @@ -510,6 +513,7 @@ public void testPlacementPolicyCheckWithLedgersNotAdheringToPolicyWithMultipleSe ServerConfiguration servConf = new ServerConfiguration(confByIndex(0)); servConf.setMinNumRacksPerWriteQuorum(minNumRacksPerWriteQuorumConfValue); + servConf.setEnforceMinNumRacksPerWriteQuorum(enforceMinNumRacksPerWriteQuorum); setServerConfigPropertiesForRackPlacement(servConf); MutableObject auditorRef = new MutableObject(); try {