diff --git a/pulsar-broker-common/src/test/java/org/apache/pulsar/bookie/rackawareness/IsolatedBookieEnsemblePlacementPolicyTest.java b/pulsar-broker-common/src/test/java/org/apache/pulsar/bookie/rackawareness/IsolatedBookieEnsemblePlacementPolicyTest.java index 91c56988c107e..c564ed3ffcf41 100644 --- a/pulsar-broker-common/src/test/java/org/apache/pulsar/bookie/rackawareness/IsolatedBookieEnsemblePlacementPolicyTest.java +++ b/pulsar-broker-common/src/test/java/org/apache/pulsar/bookie/rackawareness/IsolatedBookieEnsemblePlacementPolicyTest.java @@ -522,11 +522,13 @@ public void testSecondaryIsolationGroupsBookies() throws Exception { defaultBookieGroup.put(BOOKIE5, BookieInfo.builder().rack("rack1").build()); Map primaryIsolatedBookieGroup = new HashMap<>(); - primaryIsolatedBookieGroup.put(BOOKIE1, BookieInfo.builder().rack("rack1").build()); + // Use the same rack as in the default group to avoid non-deterministic rack + // resolution when the same bookie appears in multiple groups with different racks. + primaryIsolatedBookieGroup.put(BOOKIE1, BookieInfo.builder().rack("rack0").build()); Map secondaryIsolatedBookieGroup = new HashMap<>(); - secondaryIsolatedBookieGroup.put(BOOKIE2, BookieInfo.builder().rack("rack0").build()); - secondaryIsolatedBookieGroup.put(BOOKIE4, BookieInfo.builder().rack("rack0").build()); + secondaryIsolatedBookieGroup.put(BOOKIE2, BookieInfo.builder().rack("rack1").build()); + secondaryIsolatedBookieGroup.put(BOOKIE4, BookieInfo.builder().rack("rack1").build()); bookieMapping.put("default", defaultBookieGroup); bookieMapping.put(isolatedGroup, primaryIsolatedBookieGroup); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImplTest.java index b47e5cdff793f..1ed4613071759 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImplTest.java @@ -1063,6 +1063,11 @@ public void testRemoveNonExistBundleData() executorService.submit(latch::countDown); latch.await(); + // Ensure lm1 has loaded broker data from both brokers before writing bundle data. + // Without this, lm1 may only see bundles from one broker, causing fewer than + // bundleNumbers bundles to be written to the metadata store. + lm1.updateAll(); + loadManagerWrapper.writeResourceQuotasToZooKeeper(); MetadataCache bundlesCache = pulsar1.getLocalMetadataStore().getMetadataCache(BundleData.class);