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 ...
随机推荐
- ThinkPHP 的模型使用详细介绍--模型的核心(七)
原文:ThinkPHP 的模型使用详细介绍--模型的核心(七) 注意:本节是ThinkPhp框架对数据操作的核心处理部分 大家还是在这里看清楚可以将其剪切放到代码编辑器中查看 本章节给大家着重介绍模型 ...
- Oracle控制文件操作
控制文件是连接instance和 database的纽带.记录了database的结构信息. 控制文件是1个2进制文件.记录的是当前database的状态. 控制文件可以有多个,在参数文件中通过con ...
- hdu 3832 Earth Hour (最短路变形)
Earth Hour Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Tota ...
- Redis最有用的中文资源,你值得拥有
只是为了记录资源地址,最好直接访问doc.redisfans.com更美观 Redis 命令参考 本文档是 Redis Command Reference 和 Redis Documentation ...
- WinCE隐藏显示任务栏,当任务栏隐藏时将其显示,当任务栏显示时将其隐藏(FindWindow,ShowWindow,IsWindowVisible),
HANDLE hWndTaskBar = ::FindWindow(TEXT("HHTaskBar"), NULL); if(::IsWindowVisible(hWndTask ...
- BZOJ 2809 APIO2012 dispatching Treap+启示式合并 / 可并堆
题目大意:给定一棵树,选定一棵子树中的一些点,薪水和不能超过m,求点的数量*子树根节点的领导能力的最大值 考虑对于每一个节点,我们维护一种数据结构,在当中贪心寻找薪金小的雇佣. 每一个节点暴力重建一定 ...
- Java生成目录
Java生成目录 1.说明 推断目录是否存在,假设不存在就创建该目录.并打印其路径.假设存在,打印其路径 2.实现源代码 /** * @Title:BuildFolder.java * @Packag ...
- hdu4521 小明系列的问题——小明序列(LIS变种 (段树+单点更新解决方案))
链接: huangjing 题目:中文题目 思路: 1:这个题目假设去掉那个距离大于d的条件,那么必定是一个普通的LIS.可是加上那个条件后就变得复杂了.我用的线段树的解法. . .就是採用延迟更新的 ...
- mongodb分页优化
现在参与一个项目的开发,需要用java查询mongodb数据库,在这里分页用的skip sort 和limit结合,查询语句如下(已经在相关字段建立索引) DBCursor cursor = coll ...
- POJ 2365 Rope(水题)
[题意简述]:给出我们钉子个数与半径,让我们求出缠绕在钉子上的绳子有多长. [分析]:从题目中我们能够看出,绳子长度的和等于每两个钉子的距离的和加上接触在钉子上的绳子的长度,不难发现这部分长度事实上就 ...