This is an automated email from the ASF dual-hosted git repository.
victory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new 77a69e0 issue#4314: ZookeeperDynamicConfiguration will be busy wait
if zk is unavailable (#4582)
77a69e0 is described below
commit 77a69e0da9ea972b5b66da300e6c4116b75a9347
Author: Ian Luo <[email protected]>
AuthorDate: Wed Jul 17 09:50:38 2019 +0800
issue#4314: ZookeeperDynamicConfiguration will be busy wait if zk is
unavailable (#4582)
* issue#4314: ZookeeperDynamicConfiguration will be busy wait if zk is
unavailable
* fix logic issue
---
.../support/zookeeper/ZookeeperDynamicConfiguration.java | 8 +++++++-
.../dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java | 4 +++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git
a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
index a06537b..e52a24e 100644
---
a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
+++
b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
@@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
import static org.apache.dubbo.configcenter.Constants.CONFIG_NAMESPACE_KEY;
@@ -61,7 +62,12 @@ public class ZookeeperDynamicConfiguration implements
DynamicConfiguration {
zkClient.addDataListener(rootPath, cacheListener, executor);
try {
// Wait for connection
- this.initializedLatch.await();
+ long timeout = url.getParameter("init.timeout", 5000);
+ boolean isCountDown = this.initializedLatch.await(timeout,
TimeUnit.MILLISECONDS);
+ if (!isCountDown) {
+ throw new IllegalStateException("Failed to receive INITIALIZED
event from zookeeper, pls. check if url "
+ + url + " is correct");
+ }
} catch (InterruptedException e) {
logger.warn("Failed to build local cache for config center
(zookeeper)." + url);
}
diff --git
a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
index b14cd11..b20f4ae 100644
---
a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
+++
b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
@@ -227,12 +227,14 @@ public class CuratorZookeeperClient extends
AbstractZookeeperClient<CuratorZooke
try {
TreeCache treeCache = TreeCache.newBuilder(client,
path).setCacheData(false).build();
treeCacheMap.putIfAbsent(path, treeCache);
- treeCache.start();
+
if (executor == null) {
treeCache.getListenable().addListener(treeCacheListener);
} else {
treeCache.getListenable().addListener(treeCacheListener,
executor);
}
+
+ treeCache.start();
} catch (Exception e) {
throw new IllegalStateException("Add treeCache listener for path:"
+ path, e);
}