You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2018/12/13 04:37:27 UTC

[GitHub] jiazhai closed pull request #3171: Add bookkeeperClientRegionawarePolicyEnabled and bookkeeperClientReor…

jiazhai closed pull request #3171: Add bookkeeperClientRegionawarePolicyEnabled and bookkeeperClientReor…
URL: https://github.com/apache/pulsar/pull/3171
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/conf/broker.conf b/conf/broker.conf
index 3c1853adc5..eed966c6a3 100644
--- a/conf/broker.conf
+++ b/conf/broker.conf
@@ -330,6 +330,14 @@ bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800
 # forming a new bookie ensemble
 bookkeeperClientRackawarePolicyEnabled=true
 
+# Enable region-aware bookie selection policy. BK will chose bookies from
+# different regions and racks when forming a new bookie ensemble
+# If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
+bookkeeperClientRegionawarePolicyEnabled=false
+
+# Enable/disable reordering read sequence on reading entries.
+bookkeeperClientReorderReadSequenceEnabled=false
+
 # Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie
 # outside the specified groups will not be used by the broker
 bookkeeperClientIsolationGroups=
diff --git a/conf/standalone.conf b/conf/standalone.conf
index cc8f56417f..70850545bf 100644
--- a/conf/standalone.conf
+++ b/conf/standalone.conf
@@ -245,6 +245,14 @@ bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800
 # forming a new bookie ensemble
 bookkeeperClientRackawarePolicyEnabled=true
 
+# Enable region-aware bookie selection policy. BK will chose bookies from
+# different regions and racks when forming a new bookie ensemble.
+# If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
+bookkeeperClientRegionawarePolicyEnabled=false
+
+# Enable/disable reordering read sequence on reading entries.
+bookkeeperClientReorderReadSequenceEnabled=false
+
 # Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie
 # outside the specified groups will not be used by the broker
 bookkeeperClientIsolationGroups=
diff --git a/deployment/terraform-ansible/templates/broker.conf b/deployment/terraform-ansible/templates/broker.conf
index a4fad1c98e..22f74be355 100644
--- a/deployment/terraform-ansible/templates/broker.conf
+++ b/deployment/terraform-ansible/templates/broker.conf
@@ -280,6 +280,14 @@ bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800
 # forming a new bookie ensemble
 bookkeeperClientRackawarePolicyEnabled=true
 
+# Enable region-aware bookie selection policy. BK will chose bookies from
+# different regions and racks when forming a new bookie ensemble
+# If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
+bookkeeperClientRegionawarePolicyEnabled=false
+
+# Enable/disable reordering read sequence on reading entries.
+bookkeeperClientReorderReadSequenceEnabled=false
+
 # Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie
 # outside the specified groups will not be used by the broker
 bookkeeperClientIsolationGroups=
diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
index 34882bd16c..6ad7f38775 100644
--- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
+++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
@@ -310,6 +310,11 @@
     // Enable rack-aware bookie selection policy. BK will chose bookies from
     // different racks when forming a new bookie ensemble
     private boolean bookkeeperClientRackawarePolicyEnabled = true;
+    // Enable region-aware bookie selection policy. BK will chose bookies from
+    // different regions and racks when forming a new bookie ensemble
+    private boolean bookkeeperClientRegionawarePolicyEnabled = false;
+    // Enable/disable reordering read sequence on reading entries.
+    private boolean bookkeeperClientReorderReadSequenceEnabled = false;
     // Enable bookie isolation by specifying a list of bookie groups to choose
     // from. Any bookie outside the specified groups will not be used by the
     // broker
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 2231f97512..61f4feb60f 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
@@ -25,6 +25,7 @@
 import org.apache.bookkeeper.client.BKException;
 import org.apache.bookkeeper.client.BookKeeper;
 import org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy;
+import org.apache.bookkeeper.client.RegionAwareEnsemblePlacementPolicy;
 import org.apache.bookkeeper.conf.ClientConfiguration;
 import org.apache.bookkeeper.meta.HierarchicalLedgerManagerFactory;
 import org.apache.pulsar.zookeeper.ZkBookieRackAffinityMapping;
@@ -64,8 +65,12 @@ public BookKeeper create(ServiceConfiguration conf, ZooKeeper zkClient) throws I
                     TimeUnit.SECONDS);
         }
 
-        if (conf.isBookkeeperClientRackawarePolicyEnabled()) {
-            bkConf.setEnsemblePlacementPolicy(RackawareEnsemblePlacementPolicy.class);
+        if (conf.isBookkeeperClientRackawarePolicyEnabled() || conf.isBookkeeperClientRegionawarePolicyEnabled()) {
+            if (conf.isBookkeeperClientRegionawarePolicyEnabled()) {
+                bkConf.setEnsemblePlacementPolicy(RegionAwareEnsemblePlacementPolicy.class);
+            } else {
+                bkConf.setEnsemblePlacementPolicy(RackawareEnsemblePlacementPolicy.class);
+            }
             bkConf.setProperty(RackawareEnsemblePlacementPolicy.REPP_DNS_RESOLVER_CLASS,
                     ZkBookieRackAffinityMapping.class.getName());
 
@@ -77,6 +82,7 @@ public BookKeeper create(ServiceConfiguration conf, ZooKeeper zkClient) throws I
 
             bkConf.setProperty(ZooKeeperCache.ZK_CACHE_INSTANCE, this.rackawarePolicyZkCache.get());
         }
+        bkConf.setReorderReadSequenceEnabled(conf.isBookkeeperClientReorderReadSequenceEnabled());
 
         if (conf.getBookkeeperClientIsolationGroups() != null && !conf.getBookkeeperClientIsolationGroups().isEmpty()) {
             bkConf.setEnsemblePlacementPolicy(ZkIsolatedBookieEnsemblePlacementPolicy.class);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/PulsarBrokerStarterTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/PulsarBrokerStarterTest.java
index 9cce6db0b0..5ccea59f33 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/PulsarBrokerStarterTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/PulsarBrokerStarterTest.java
@@ -59,6 +59,8 @@ private File createValidBrokerConfigFile() throws FileNotFoundException {
         printWriter.println("bookkeeperClientHealthCheckEnabled=true");
         printWriter.println("bookkeeperClientHealthCheckErrorThresholdPerInterval=5");
         printWriter.println("bookkeeperClientRackawarePolicyEnabled=true");
+        printWriter.println("bookkeeperClientRegionawarePolicyEnabled=false");
+        printWriter.println("bookkeeperClientReorderReadSequenceEnabled=false");
         printWriter.println("bookkeeperClientIsolationGroups=group1,group2");
         printWriter.println("backlogQuotaDefaultLimitGB=18");
         printWriter.println("clusterName=usc");
@@ -120,6 +122,8 @@ public void testLoadConfig() throws SecurityException, NoSuchMethodException, IO
         Assert.assertEquals(serviceConfig.isBookkeeperClientHealthCheckEnabled(), true);
         Assert.assertEquals(serviceConfig.getBookkeeperClientHealthCheckErrorThresholdPerInterval(), 5);
         Assert.assertEquals(serviceConfig.isBookkeeperClientRackawarePolicyEnabled(), true);
+        Assert.assertEquals(serviceConfig.isBookkeeperClientRegionawarePolicyEnabled(), false);
+        Assert.assertEquals(serviceConfig.isBookkeeperClientReorderReadSequenceEnabled(), false);
         Assert.assertEquals(serviceConfig.getBookkeeperClientIsolationGroups(), "group1,group2");
         Assert.assertEquals(serviceConfig.getBookkeeperClientSpeculativeReadTimeoutInMillis(), 3000);
         Assert.assertEquals(serviceConfig.getBookkeeperClientTimeoutInSeconds(), 12345);
diff --git a/pulsar-broker/src/test/resources/configurations/pulsar_broker_test.conf b/pulsar-broker/src/test/resources/configurations/pulsar_broker_test.conf
index 8034185902..c55955fd34 100644
--- a/pulsar-broker/src/test/resources/configurations/pulsar_broker_test.conf
+++ b/pulsar-broker/src/test/resources/configurations/pulsar_broker_test.conf
@@ -56,6 +56,8 @@ bookkeeperClientHealthCheckIntervalSeconds=60
 bookkeeperClientHealthCheckErrorThresholdPerInterval=5
 bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800
 bookkeeperClientRackawarePolicyEnabled=true
+bookkeeperClientRegionawarePolicyEnabled=false
+bookkeeperClientReorderReadSequenceEnabled=false
 bookkeeperClientIsolationGroups="test_group"
 managedLedgerDefaultEnsembleSize=3
 managedLedgerDefaultWriteQuorum=2
diff --git a/pulsar-client-cpp/test-conf/standalone-ssl.conf b/pulsar-client-cpp/test-conf/standalone-ssl.conf
index c7e6d3c80c..426ba437df 100644
--- a/pulsar-client-cpp/test-conf/standalone-ssl.conf
+++ b/pulsar-client-cpp/test-conf/standalone-ssl.conf
@@ -142,6 +142,14 @@ bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800
 # forming a new bookie ensemble
 bookkeeperClientRackawarePolicyEnabled=true
 
+# Enable region-aware bookie selection policy. BK will chose bookies from
+# different regions and racks when forming a new bookie ensemble
+# If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
+bookkeeperClientRegionawarePolicyEnabled=false
+
+# Enable/disable reordering read sequence on reading entries.
+bookkeeperClientReorderReadSequenceEnabled=false
+
 # Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie
 # outside the specified groups will not be used by the broker
 bookkeeperClientIsolationGroups=
diff --git a/pulsar-client-cpp/test-conf/standalone.conf b/pulsar-client-cpp/test-conf/standalone.conf
index 630de70d5c..6f799c171c 100644
--- a/pulsar-client-cpp/test-conf/standalone.conf
+++ b/pulsar-client-cpp/test-conf/standalone.conf
@@ -127,6 +127,14 @@ bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800
 # forming a new bookie ensemble 
 bookkeeperClientRackawarePolicyEnabled=true
 
+# Enable region-aware bookie selection policy. BK will chose bookies from
+# different regions and racks when forming a new bookie ensemble
+# If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
+bookkeeperClientRegionawarePolicyEnabled=false
+
+# Enable/disable reordering read sequence on reading entries.
+bookkeeperClientReorderReadSequenceEnabled=false
+
 # Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie 
 # outside the specified groups will not be used by the broker 
 bookkeeperClientIsolationGroups=
diff --git a/pulsar-client-cpp/tests/authentication.conf b/pulsar-client-cpp/tests/authentication.conf
index 6db26daf28..25d7e30f93 100644
--- a/pulsar-client-cpp/tests/authentication.conf
+++ b/pulsar-client-cpp/tests/authentication.conf
@@ -138,6 +138,14 @@ bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800
 # forming a new bookie ensemble
 bookkeeperClientRackawarePolicyEnabled=true
 
+# Enable region-aware bookie selection policy. BK will chose bookies from
+# different regions and racks when forming a new bookie ensemble
+# If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
+bookkeeperClientRegionawarePolicyEnabled=false
+
+# Enable/disable reordering read sequence on reading entries.
+bookkeeperClientReorderReadSequenceEnabled=false
+
 # Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie
 # outside the specified groups will not be used by the broker
 bookkeeperClientIsolationGroups=
diff --git a/pulsar-client-cpp/tests/standalone.conf b/pulsar-client-cpp/tests/standalone.conf
index 2fb8c0b28f..8a016426d9 100644
--- a/pulsar-client-cpp/tests/standalone.conf
+++ b/pulsar-client-cpp/tests/standalone.conf
@@ -130,6 +130,14 @@ bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800
 # forming a new bookie ensemble
 bookkeeperClientRackawarePolicyEnabled=true
 
+# Enable region-aware bookie selection policy. BK will chose bookies from
+# different regions and racks when forming a new bookie ensemble
+# If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
+bookkeeperClientRegionawarePolicyEnabled=false
+
+# Enable/disable reordering read sequence on reading entries.
+bookkeeperClientReorderReadSequenceEnabled=false
+
 # Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie
 # outside the specified groups will not be used by the broker
 bookkeeperClientIsolationGroups=
diff --git a/pulsar-zookeeper-utils/src/main/java/org/apache/pulsar/zookeeper/ZkBookieRackAffinityMapping.java b/pulsar-zookeeper-utils/src/main/java/org/apache/pulsar/zookeeper/ZkBookieRackAffinityMapping.java
index ff50d8b863..0b40157390 100644
--- a/pulsar-zookeeper-utils/src/main/java/org/apache/pulsar/zookeeper/ZkBookieRackAffinityMapping.java
+++ b/pulsar-zookeeper-utils/src/main/java/org/apache/pulsar/zookeeper/ZkBookieRackAffinityMapping.java
@@ -64,12 +64,31 @@ public void setConf(Configuration conf) {
         bookieMappingCache = getAndSetZkCache(conf);
 
         try {
-            racksWithHost = bookieMappingCache.get(BOOKIE_INFO_ROOT_PATH).orElse(new BookiesRackConfiguration());
+            BookiesRackConfiguration racks = bookieMappingCache.get(BOOKIE_INFO_ROOT_PATH).orElse(new BookiesRackConfiguration());
+            updateRacksWithHost(racks);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }
 
+    private void updateRacksWithHost(BookiesRackConfiguration racks) {
+        // In config z-node, the bookies are added in the `ip:port` notation, while BK will ask
+        // for just the IP/hostname when trying to get the rack for a bookie.
+        // To work around this issue, we insert in the map the bookie ip/hostname with same rack-info
+        BookiesRackConfiguration newRacksWithHost = new BookiesRackConfiguration();
+        racks.forEach((group, bookies) ->
+                bookies.forEach((addr, bi) -> {
+                    try {
+                        BookieSocketAddress bsa = new BookieSocketAddress(addr);
+                        newRacksWithHost.updateBookie(group, bsa.getHostName(), bi);
+                    } catch (UnknownHostException e) {
+                        throw new RuntimeException(e);
+                    }
+                })
+        );
+        racksWithHost = newRacksWithHost;
+    }
+
     private ZooKeeperDataCache<BookiesRackConfiguration> getAndSetZkCache(Configuration conf) {
         ZooKeeperCache zkCache = null;
         if (conf.getProperty(ZooKeeperCache.ZK_CACHE_INSTANCE) != null) {
@@ -95,15 +114,13 @@ public void setConf(Configuration conf) {
         }
         ZooKeeperDataCache<BookiesRackConfiguration> zkDataCache = getZkBookieRackMappingCache(
                 zkCache);
-        if (zkDataCache != null) {
-            zkDataCache.registerListener(this);
-        }
+        zkDataCache.registerListener(this);
         return zkDataCache;
     }
 
     private ZooKeeperDataCache<BookiesRackConfiguration> getZkBookieRackMappingCache(
             ZooKeeperCache zkCache) {
-        ZooKeeperDataCache<BookiesRackConfiguration> zkDataCache = new ZooKeeperDataCache<BookiesRackConfiguration>(
+        return new ZooKeeperDataCache<BookiesRackConfiguration>(
                 zkCache) {
 
             @Override
@@ -114,33 +131,16 @@ public BookiesRackConfiguration deserialize(String key, byte[] content)
                     LOG.debug("Loading the bookie mappings with bookie info data: {}", new String(content));
                 }
                 BookiesRackConfiguration racks = jsonMapper.readValue(content, BookiesRackConfiguration.class);
-
-                // In config z-node, the bookies are added in the `ip:port` notation, while BK will ask
-                // for just the IP/hostname when trying to get the rack for a bookie.
-                // To work around this issue, we also insert in the map the bookie ip/hostname with same rack-info
-                BookiesRackConfiguration racksWithHost = new BookiesRackConfiguration();
-                racks.forEach((group, bookies) -> {
-                    bookies.forEach((addr, bi) -> {
-                        try {
-                            BookieSocketAddress bsa = new BookieSocketAddress(addr);
-                            racksWithHost.updateBookie(group, bsa.getHostName(), bi);
-                        } catch (UnknownHostException e) {
-                            throw new RuntimeException(e);
-                        }
-                    });
-                });
-
-                ZkBookieRackAffinityMapping.this.racksWithHost = racksWithHost;
+                updateRacksWithHost(racks);
                 return racks;
             }
 
         };
-        return zkDataCache;
     }
 
     @Override
     public List<String> resolve(List<String> bookieAddressList) {
-        List<String> racks = new ArrayList<String>(bookieAddressList.size());
+        List<String> racks = new ArrayList<>(bookieAddressList.size());
         for (String bookieAddress : bookieAddressList) {
             racks.add(getRack(bookieAddress));
         }
diff --git a/pulsar-zookeeper-utils/src/test/java/org/apache/pulsar/zookeeper/ZkBookieRackAffinityMappingTest.java b/pulsar-zookeeper-utils/src/test/java/org/apache/pulsar/zookeeper/ZkBookieRackAffinityMappingTest.java
index 258e818ae4..60e7c06887 100644
--- a/pulsar-zookeeper-utils/src/test/java/org/apache/pulsar/zookeeper/ZkBookieRackAffinityMappingTest.java
+++ b/pulsar-zookeeper-utils/src/test/java/org/apache/pulsar/zookeeper/ZkBookieRackAffinityMappingTest.java
@@ -83,7 +83,7 @@ public void testBasic() throws Exception {
         });
         mapping1.setConf(bkClientConf1);
         List<String> racks1 = mapping1
-                .resolve(Lists.newArrayList(BOOKIE1.toString(), BOOKIE2.toString(), BOOKIE3.toString()));
+                .resolve(Lists.newArrayList(BOOKIE1.getHostName(), BOOKIE2.getHostName(), BOOKIE3.getHostName()));
         assertEquals(racks1.get(0), "/rack0");
         assertEquals(racks1.get(1), "/rack1");
         assertEquals(racks1.get(2), NetworkTopology.DEFAULT_RACK);
@@ -96,7 +96,7 @@ public void testBasic() throws Exception {
         bkClientConf2.setZkTimeout(1000);
         mapping2.setConf(bkClientConf2);
         List<String> racks2 = mapping2
-                .resolve(Lists.newArrayList(BOOKIE1.toString(), BOOKIE2.toString(), BOOKIE3.toString()));
+                .resolve(Lists.newArrayList(BOOKIE1.getHostName(), BOOKIE2.getHostName(), BOOKIE3.getHostName()));
         assertEquals(racks2.get(0), "/rack0");
         assertEquals(racks2.get(1), "/rack1");
         assertEquals(racks2.get(2), NetworkTopology.DEFAULT_RACK);
@@ -156,7 +156,7 @@ public void testBookieInfoChange() throws Exception {
         });
         mapping.setConf(bkClientConf);
         List<String> racks = mapping
-                .resolve(Lists.newArrayList(BOOKIE1.toString(), BOOKIE2.toString(), BOOKIE3.toString()));
+                .resolve(Lists.newArrayList(BOOKIE1.getHostName(), BOOKIE2.getHostName(), BOOKIE3.getHostName()));
         assertEquals(racks.get(0), "/rack0");
         assertEquals(racks.get(1), "/rack1");
         assertEquals(racks.get(2), NetworkTopology.DEFAULT_RACK);
diff --git a/site/_data/config/broker.yaml b/site/_data/config/broker.yaml
index fb82b496f8..31285be5dc 100644
--- a/site/_data/config/broker.yaml
+++ b/site/_data/config/broker.yaml
@@ -186,6 +186,12 @@ configs:
 - name: bookkeeperClientRackawarePolicyEnabled
   default: 'true'
   description: Enable rack-aware bookie selection policy. BK will chose bookies from different racks when forming a new bookie ensemble
+- name: bookkeeperClientRegionawarePolicyEnabled
+  default: 'false'
+  description: Enable region-aware bookie selection policy. BK will chose bookies from different regions and racks when forming a new bookie ensemble. If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
+- name: bookkeeperClientReorderReadSequenceEnabled
+  default: 'false'
+  description: Enable/disable reordering read sequence on reading entries.
 - name: bookkeeperClientIsolationGroups
   default: ''
   description: Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie outside the specified groups will not be used by the broker
diff --git a/site/_data/config/standalone.yaml b/site/_data/config/standalone.yaml
index 22bcceb185..d6f4c59bcb 100644
--- a/site/_data/config/standalone.yaml
+++ b/site/_data/config/standalone.yaml
@@ -131,6 +131,12 @@ configs:
   description: If bookies have more than the allowed number of failures within the time interval specified by [`bookkeeperClientHealthCheckIntervalSeconds`](#)
 - name: bookkeeperClientRackawarePolicyEnabled
   default: 'true'
+- name: bookkeeperClientRegionawarePolicyEnabled
+  default: 'false'
+  description: Enable region-aware bookie selection policy. BK will chose bookies from different regions and racks when forming a new bookie ensemble. If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
+- name: bookkeeperClientReorderReadSequenceEnabled
+  default: 'false'
+  description: Enable/disable reordering read sequence on reading entries.
 - name: bookkeeperClientIsolationGroups
   default: ''
 - name: managedLedgerDefaultEnsembleSize
diff --git a/site2/docs/reference-configuration.md b/site2/docs/reference-configuration.md
index 2fec49e6e1..3c9edaf43c 100644
--- a/site2/docs/reference-configuration.md
+++ b/site2/docs/reference-configuration.md
@@ -165,6 +165,8 @@ Pulsar brokers are responsible for handling incoming messages from producers, di
 |bookkeeperClientHealthCheckErrorThresholdPerInterval||5|
 |bookkeeperClientHealthCheckQuarantineTimeInSeconds ||1800|
 |bookkeeperClientRackawarePolicyEnabled|  Enable rack-aware bookie selection policy. BK will chose bookies from different racks when forming a new bookie ensemble  |true|
+|bookkeeperClientRegionawarePolicyEnabled|  Enable region-aware bookie selection policy. BK will chose bookies from different regions and racks when forming a new bookie ensemble. If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored  |false|
+|bookkeeperClientReorderReadSequenceEnabled|  Enable/disable reordering read sequence on reading entries.  |false|
 |bookkeeperClientIsolationGroups| Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie outside the specified groups will not be used by the broker  ||
 |managedLedgerDefaultEnsembleSize|  Number of bookies to use when creating a ledger |2|
 |managedLedgerDefaultWriteQuorum| Number of copies to store for each message  |2|
@@ -337,6 +339,8 @@ The [`pulsar-client`](reference-cli-tools.md#pulsar-client) CLI tool can be used
 |bookkeeperClientHealthCheckErrorThresholdPerInterval|  Error threshold for health checks.  |5|
 |bookkeeperClientHealthCheckQuarantineTimeInSeconds|  If bookies have more than the allowed number of failures within the time interval specified by bookkeeperClientHealthCheckIntervalSeconds |1800|
 |bookkeeperClientRackawarePolicyEnabled|    |true|
+|bookkeeperClientRegionawarePolicyEnabled|    |false|
+|bookkeeperClientReorderReadSequenceEnabled|    |false|
 |bookkeeperClientIsolationGroups|||   
 |managedLedgerDefaultEnsembleSize|    |1|
 |managedLedgerDefaultWriteQuorum|   |1|


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services