diff --git a/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistry.java b/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistry.java index c83fcfa63c..37d4a9a78e 100644 --- a/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistry.java +++ b/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistry.java @@ -74,26 +74,26 @@ public class ZookeeperRegistry extends FailbackRegistry { @Override protected void doRetry() { - ZooKeeper zk = this.zookeeper; - if (zk == null || zk.getState() == null || ! zk.getState().isAlive()) { - initZookeeper(); - } + initZookeeper(); } private void initZookeeper() { - zookeeperLock.lock(); - try { - ZooKeeper zk = this.zookeeper; - if (zk == null || zk.getState() == null || ! zk.getState().isAlive()) { - this.zookeeper = createZookeeper(); + ZooKeeper zk = this.zookeeper; + if (zk == null || zk.getState() == null || ! zk.getState().isAlive()) { + zookeeperLock.lock(); + try { + zk = this.zookeeper; + if (zk == null || zk.getState() == null || ! zk.getState().isAlive()) { + this.zookeeper = createZookeeper(); + } + if (zk != null) { + zk.close(); + } + } catch (Exception e) { + throw new IllegalStateException(e.getMessage(), e); + } finally { + zookeeperLock.unlock(); } - if (zk != null) { - zk.close(); - } - } catch (Exception e) { - throw new IllegalStateException(e.getMessage(), e); - } finally { - zookeeperLock.unlock(); } }