zookeeper错误KeeperErrorCode = ConnectionLoss解决
原因:
一般是由于连接还未完成就执行zookeeper的get/create/exsit操作引起的.
解决方法:
利用"CountDownLatch 类 + zookeeper的watcher + zookeeper的getStat" 实现连接完成后再调用.
可防止此错误发生.
示例类如下(为一配置获取类):
- import java.util.concurrent.CountDownLatch;
- import org.apache.zookeeper.WatchedEvent;
- import org.apache.zookeeper.Watcher;
- import org.apache.zookeeper.Watcher.Event.KeeperState;
- import org.apache.zookeeper.ZooKeeper;
- import org.apache.zookeeper.ZooKeeper.States;
- import org.apache.zookeeper.data.Stat;
- public class Conf{
- public static void waitUntilConnected(ZooKeeper zooKeeper, CountDownLatch connectedLatch) {
- if (States.CONNECTING == zooKeeper.getState()) {
- try {
- connectedLatch.await();
- } catch (InterruptedException e) {
- throw new IllegalStateException(e);
- }
- }
- }
- static class ConnectedWatcher implements Watcher {
- private CountDownLatch connectedLatch;
- ConnectedWatcher(CountDownLatch connectedLatch) {
- this.connectedLatch = connectedLatch;
- }
- @Override
- public void process(WatchedEvent event) {
- if (event.getState() == KeeperState.SyncConnected) {
- connectedLatch.countDown();
- }
- }
- }
- static public Conf Instance(){
- if(static_ == null){
- static_ = new Conf();
- }
- return static_;
- }
- public boolean Init(String hostports, int times){
- try{
- CountDownLatch connectedLatch = new CountDownLatch(1);
- Watcher watcher = new ConnectedWatcher(connectedLatch);
- zk_ = new ZooKeeper(hostports, times, watcher);
- waitUntilConnected(zk_, connectedLatch);
- }
- catch(Exception e){
- System.out.println(e);
- return false;
- }
- return true;
- }
- public String Get(String keys){
- String re = "";
- String ppath = "/zookeeper";
- int oldpos = -1;
- int pos = 0;
- while(true){
- pos = keys.indexOf(".", oldpos + 1);
- if(pos < 0){
- ppath += "/";
- String str = keys.substring(oldpos + 1);
- ppath += str;
- break;
- }
- ppath += "/";
- String str = keys.substring(oldpos + 1, pos);
- ppath += str;
- oldpos = pos;
- }
- Stat stat = new Stat();
- try{
- byte[] b = zk_.getData(ppath, false, stat); //获取节点的信息及存储的数据
- re = new String(b);
- }
- catch(Exception e){
- System.out.println(e);
- }
- return re;
- }
- private Conf(){
- }
- private ZooKeeper zk_;
- static private Conf static_;
- public static void main(String args[]){
- String hostports = "192.168.1.88:2181,192.168.1.88:2182,192.168.1.88:2183";
- Conf.Instance().Init(hostports, 1000);
- String str = Conf.Instance().Get("conf.logicpoint.subscriberserverip");
- str = Conf.Instance().Get("conf.logicpoint.subscriberserverport");
- System.out.println(str);
- while(true){
- try{Thread.sleep(100);}
- catch(Exception e){
- }
- }
- }
- }
zookeeper错误KeeperErrorCode = ConnectionLoss解决的更多相关文章
- zookeeper客户端KeeperErrorCode = ConnectionLoss异常问题排查历险记
经过线报,说前方应用有异常,导致了可用性变差.咦!讨厌的异常,抛异常是程序猿最讨厌的事情之一. 经过收集异常信息如下 2019-06-24 10:57:41.806 ERROR [hades- ...
- org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /eclipse20171118
1:如果有一天,你有幸看到了这个错误,也许你像我一样low,因为此时,你已经准备开发Zookeeper程序了,却还没有把Zookeeper的服务启动起来. org.apache.zookeeper.K ...
- java连接zookeeper服务器出现“KeeperErrorCode = ConnectionLoss for /test”
昨天调试java连接zookeeper服务器,zookeeper搭建过程在这里不做赘述,在创建连接后,然后操作节点一直报异常 错误信息如下: Exception in thread "mai ...
- alimama open source mdrill启动后访问蓝鲸任务时出错:Caused by:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
启动后,访问:http://IP:1107/mdrill.jsp 蓝鲸任务
- java连接zookeeper服务器出现“KeeperErrorCode = ConnectionLoss for ...”
错误信息如下: Exception in thread "main" org.apache.zookeeper.KeeperException$ConnectionLossExce ...
- zk的KeeperErrorCode = ConnectionLoss错误
额,这东西都快把人搞崩溃了,各种排查各种正常. 最后竟然是因为我在客户端未连接上zkserver的时候就进行了create操作造成的错误. 噗, Exception in thread "m ...
- keepererrorcode = connectionloss for 错误处理
自己的环境在虚拟机上,于是使用同事的环境调试问题,发现无法初始化成功,提示keepererrorcode = connectionloss for,于是上网查了下资料整理如下: 1.对比代码中引用的j ...
- coreseek常见错误原因及解决方法
coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...
- AndroidStudio错误总结及解决(待续)
AndroidStudio错误总结及解决 一. 当安装好AndroidStudio开启的时候出现如下错误: 百度的解决方法: 1)进入刚安装的Android Studio目录下的bin目录.找到ide ...
随机推荐
- Java抓取网页数据(原来的页面+Javascript返回数据)
转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/7909006 有时候因为种种原因,我们须要採集某个站点的数据,但因为不同 ...
- 从零开始学C++之从C到C++(二):引用、内联函数inline、四种类型转换运算符
一.引用 (1).引用是给一个变量起别名 定义引用的一般格式:类型 &引用名 = 变量名: 例如:int a=1; int &b=a;// b是a的别名,因此a和b是同一个单元 注 ...
- LeetCode——Search a 2D Matrix
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- BI中事实表和维度表的定义
一个典型的样例是,把逻辑业务比作一个立方体,产品维.时间维.地点维分别作为不同的坐标轴,而坐标轴的交点就是一个详细的事实.也就是说事实表是多个维度表的一个交点.而维度表是分析事实的一个窗体. 首先介绍 ...
- java 状态模式 解说演示样例代码
package org.rui.pattern; import junit.framework.*; /** * 为了使同一个方法调用能够产生不同的行为,State 模式在代理(surrogate)的 ...
- MySQL多表查询之外键、表连接、子查询、索引
MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...
- Linux源文件夹结构呈现
1.arch文件夹: - 相关的存储在不同平台上的代码,每个平台都采用了不同的文件夹来区分. ******Alpha平台 ******Arm平台 ******Arv32平台 ******X86平台 2 ...
- win7下硬盘安装win7+CentOS双系统方法
原文:win7下硬盘安装win7+CentOS双系统方法 LinuxCentOS安装大致介绍: win7下硬盘安装win7+CentOS双系统方法 原则: 所有的看完在装,请仔细看 一 条件: 1. ...
- asp.net EF6.0中出现未找到具有固定名称“System.Data.SqlClient”的 ADO.NET提供程序的实体框架提供程序解决办法
出现的错误信息如下所示: 指定的架构无效.错误: DataModel.ssdl(2,2) : 错误 0152: 未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提 ...
- 手机装linux系统
第一步: 首先 , 你的手机需要获取root权限. 如果不知道如何获取, 可以到电脑上搜索一下安卓手机root教程. 不同品牌的手机root的方法不同. 也可以到机锋论坛上寻找root的具体方法. 第 ...