This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-3.1 by this push:
new 5fda6ade930 [fix] [bk-client] Fix bk client MinNumRacksPerWriteQuorum
and EnforceMinNumRacksPerWriteQuorum not work problem. (#21327)
5fda6ade930 is described below
commit 5fda6ade93037590249fb15d746c494a51c84bd8
Author: Yan Zhao <[email protected]>
AuthorDate: Wed Oct 11 11:07:50 2023 +0800
[fix] [bk-client] Fix bk client MinNumRacksPerWriteQuorum and
EnforceMinNumRacksPerWriteQuorum not work problem. (#21327)
---
.../pulsar/broker/BookKeeperClientFactoryImpl.java | 5 ++++-
.../broker/BookKeeperClientFactoryImplTest.java | 19 +++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/BookKeeperClientFactoryImpl.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/BookKeeperClientFactoryImpl.java
index 0ecca755956..e5293cee24e 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/BookKeeperClientFactoryImpl.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/BookKeeperClientFactoryImpl.java
@@ -219,7 +219,7 @@ public class BookKeeperClientFactoryImpl implements
BookKeeperClientFactory {
}
}
- private void setEnsemblePlacementPolicy(ClientConfiguration bkConf,
ServiceConfiguration conf, MetadataStore store,
+ static void setEnsemblePlacementPolicy(ClientConfiguration bkConf,
ServiceConfiguration conf, MetadataStore store,
Class<? extends
EnsemblePlacementPolicy> policyClass) {
bkConf.setEnsemblePlacementPolicy(policyClass);
bkConf.setProperty(BookieRackAffinityMapping.METADATA_STORE_INSTANCE,
store);
@@ -227,6 +227,9 @@ public class BookKeeperClientFactoryImpl implements
BookKeeperClientFactory {
bkConf.setProperty(REPP_DNS_RESOLVER_CLASS,
conf.getProperties().getProperty(REPP_DNS_RESOLVER_CLASS,
BookieRackAffinityMapping.class.getName()));
+
bkConf.setMinNumRacksPerWriteQuorum(conf.getBookkeeperClientMinNumRacksPerWriteQuorum());
+
bkConf.setEnforceMinNumRacksPerWriteQuorum(conf.isBookkeeperClientEnforceMinNumRacksPerWriteQuorum());
+
bkConf.setProperty(NET_TOPOLOGY_SCRIPT_FILE_NAME_KEY,
conf.getProperties().getProperty(
NET_TOPOLOGY_SCRIPT_FILE_NAME_KEY,
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/BookKeeperClientFactoryImplTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/BookKeeperClientFactoryImplTest.java
index 0dea84e727a..3c0e4d0c409 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/BookKeeperClientFactoryImplTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/BookKeeperClientFactoryImplTest.java
@@ -41,6 +41,7 @@ import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.pulsar.bookie.rackawareness.BookieRackAffinityMapping;
import org.apache.pulsar.metadata.api.MetadataStore;
import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended;
+import org.apache.pulsar.zookeeper.ZkIsolatedBookieEnsemblePlacementPolicy;
import org.testng.annotations.Test;
/**
@@ -152,6 +153,24 @@ public class BookKeeperClientFactoryImplTest {
assertEquals(20, bkConf.getMinNumRacksPerWriteQuorum());
}
+ @Test
+ public void testSetEnsemblePlacementPolicys() {
+ ClientConfiguration bkConf = new ClientConfiguration();
+ ServiceConfiguration conf = new ServiceConfiguration();
+ conf.setBookkeeperClientMinNumRacksPerWriteQuorum(3);
+ conf.setBookkeeperClientEnforceMinNumRacksPerWriteQuorum(true);
+
+ MetadataStore store = mock(MetadataStore.class);
+
+ BookKeeperClientFactoryImpl.setEnsemblePlacementPolicy(
+ bkConf,
+ conf,
+ store,
+ ZkIsolatedBookieEnsemblePlacementPolicy.class);
+ assertEquals(bkConf.getMinNumRacksPerWriteQuorum(), 3);
+ assertTrue(bkConf.getEnforceMinNumRacksPerWriteQuorum());
+ }
+
@Test
public void testSetDiskWeightBasedPlacementEnabled() {
BookKeeperClientFactoryImpl factory = new
BookKeeperClientFactoryImpl();