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();

Reply via email to