This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 0a7c64b  [zookeeper] remove hardcoded zookeeper session timeout (#2889)
0a7c64b is described below

commit 0a7c64ba37e196fe666b52549100a261f78001f4
Author: Sijie Guo <[email protected]>
AuthorDate: Tue Oct 30 11:18:25 2018 -0700

    [zookeeper] remove hardcoded zookeeper session timeout (#2889)
    
    *Motivation*
    
    If zookeeper hostname resolution takes longer time (e.g. more than 10s).
    both initing cluster and starting broker will fail due to session timeout.
    
    *Changes*
    
    remove hardcoded zookeeper session timeout and make them take settings from 
configuration or arguments.
---
 .../java/org/apache/pulsar/PulsarClusterMetadataSetup.java   | 12 ++++++++++--
 .../org/apache/pulsar/zookeeper/GlobalZooKeeperCache.java    |  2 +-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java 
b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java
index 9dd065a..35ef3c4 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java
@@ -80,6 +80,11 @@ public class PulsarClusterMetadataSetup {
                 "--zookeeper" }, description = "Local ZooKeeper quorum 
connection string", required = true)
         private String zookeeper;
 
+        @Parameter(names = {
+            "--zookeeper-session-timeout-ms"
+        }, description = "Local zookeeper session timeout ms")
+        private int zkSessionTimeoutMillis = 30000;
+
         @Parameter(names = { "-gzk",
                 "--global-zookeeper" }, description = "Global ZooKeeper quorum 
connection string", required = false, hidden = true)
         private String globalZookeeper;
@@ -126,13 +131,16 @@ public class PulsarClusterMetadataSetup {
         log.info("Setting up cluster {} with zk={} configuration-store ={}", 
arguments.cluster, arguments.zookeeper,
                 arguments.configurationStore);
         ZooKeeperClientFactory zkfactory = new ZookeeperClientFactoryImpl();
-        ZooKeeper localZk = zkfactory.create(arguments.zookeeper, 
SessionType.ReadWrite, 30000).get();
-        ZooKeeper configStoreZk = 
zkfactory.create(arguments.configurationStore, SessionType.ReadWrite, 
30000).get();
+        ZooKeeper localZk = zkfactory.create(
+            arguments.zookeeper, SessionType.ReadWrite, 
arguments.zkSessionTimeoutMillis).get();
+        ZooKeeper configStoreZk = zkfactory.create(
+            arguments.configurationStore, SessionType.ReadWrite, 
arguments.zkSessionTimeoutMillis).get();
 
         // Format BookKeeper metadata
         ServerConfiguration bkConf = new ServerConfiguration();
         
bkConf.setLedgerManagerFactoryClass(HierarchicalLedgerManagerFactory.class);
         bkConf.setZkServers(arguments.zookeeper);
+        bkConf.setZkTimeout(arguments.zkSessionTimeoutMillis);
         if (localZk.exists("/ledgers", false) == null // only format if 
/ledgers doesn't exist
                 && !BookKeeperAdmin.format(bkConf, false /* interactive */, 
false /* force */)) {
             throw new IOException("Failed to initialize BookKeeper metadata");
diff --git 
a/pulsar-zookeeper-utils/src/main/java/org/apache/pulsar/zookeeper/GlobalZooKeeperCache.java
 
b/pulsar-zookeeper-utils/src/main/java/org/apache/pulsar/zookeeper/GlobalZooKeeperCache.java
index 905c21c..deb74ac 100644
--- 
a/pulsar-zookeeper-utils/src/main/java/org/apache/pulsar/zookeeper/GlobalZooKeeperCache.java
+++ 
b/pulsar-zookeeper-utils/src/main/java/org/apache/pulsar/zookeeper/GlobalZooKeeperCache.java
@@ -65,7 +65,7 @@ public class GlobalZooKeeperCache extends ZooKeeperCache 
implements Closeable {
 
         // Initial session creation with global ZK must work
         try {
-            ZooKeeper newSession = zkFuture.get(10, TimeUnit.SECONDS);
+            ZooKeeper newSession = zkFuture.get(zkSessionTimeoutMillis, 
TimeUnit.MILLISECONDS);
             // Register self as a watcher to receive notification when session 
expires and trigger a new session to be
             // created
             newSession.register(this);

Reply via email to