• Zookeeper异常ConnectionLossException解决


    项目中要求做一个将配置文件读取到zookeeper节点上的工具:

    开发代码如下:

    但是当连接到远端的Zookeeper服务之后,出现了下面异常:

    Exception in thread "main" org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /test
    at org.apache.zookeeper.KeeperException.create(KeeperException.Java:99)
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
    at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1501)
    at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1529)
    at com.jiq.test.ZooKeeperTest.main(ZooKeeperTest.java:12)

    原因:

    new出ZooKeeper实例时只是建立了与服务端之间的会话,此时TCP连接可能还未建立完成,如果这时发出ZooKeeper操作命令的确会出现连接丢失异常,虽然这种概率相对较小。

    当客户端与服务端连接建立之后客户端会收到一个SyncConnected事件,此时将connectedSemaphore减到零就可以让阻塞的主线程继续运行,再来发出ZooKeeper操作命令就不会出现连接丢失的异常了。

    解决方法:

    将上图中注释的代码放出来就可以啦!


    ♥ 作者:明志健致远
    ♠ 出处:http://www.cnblogs.com/study-everyday/
    ♦ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    ♣ 本博客大多为学习笔记或读书笔记,本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。

  • 相关阅读:
    docker学习笔记及hadoop集群搭建
    Zookeeper+Kafka+Storm+HDFS实践
    zookeeper集群搭建
    scala学习笔记——特质
    scala学习笔记-集合
    scala学习笔记-隐式转换和隐式参数
    RDD 重新分区,排序 repartitionAndSortWithinPartitions
    scala学习笔记——操作符
    JAVA基础系列(一) 概述与相关概念
    网络收藏夹
  • 原文地址:https://www.cnblogs.com/study-everyday/p/6144251.html
Copyright © 2020-2023  润新知