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