• zookeeper连接客户端操作数据时报错Socket is not connected



    一、报错信息

    DEBUG org.apache.zookeeper.ClientCnxnSocketNIO - Ignoring exception during shutdown input
    java.net.SocketException: Socket is not connected
    	at sun.nio.ch.Net.translateToSocketException(Net.java:123)
    	at sun.nio.ch.Net.translateException(Net.java:157)
    	at sun.nio.ch.Net.translateException(Net.java:163)
    	at sun.nio.ch.SocketAdaptor.shutdownInput(SocketAdaptor.java:401)
    	at org.apache.zookeeper.ClientCnxnSocketNIO.cleanup(ClientCnxnSocketNIO.java:200)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    二、问题描述

    在使用java连接zookeeper客户端时,发现连接是成功的,但是操作数据时报错

    连接zookeeper客户端代码

    public class Test {
         //此处是机器ip:端口号。多个ip用,隔开
        private static String connectString = "机器ip:2181";
        int sessionTimeout = 5000;
        @org.junit.Test
        public void test() throws IOException {
    
            ZooKeeper zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
    
                /**
                 * 监听事件
                 * @param event
                 */
                @Override
                public void process(WatchedEvent event) {
                    System.out.println("监听事件"+event);
    
                }
            });
            System.out.println(zooKeeper);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    打印信息——连接成功

    State:CONNECTING sessionid:0x0 local:null remoteserver:null lastZxid:0 xid:1 sent:0 recv:0 queuedpkts:0 pendingresp:0 queuedevents:0
    
    • 1

    操作zookeeper代码

    
    public class Test1 {
    
        String connectString = "192.168.75.130:2181,192.168.75.131:2181,192.168.75.132:2181";
        int sessionTimeout = 5000;
        ZooKeeper zooKeeper = null;
    
        @Before
        public void test() throws IOException {
            zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
                /**
                 * 监听事件
                 * @param event
                 */
                @Override
                public void process(WatchedEvent event) {
                    System.out.println("监听事件" + event);
                }
            });
    //        System.out.println(zooKeeper);
        }
        /**
         * 创建节点
         */
        @Test
        public void createNode() throws Exception {
            String path = zooKeeper.create("/apptest" // 节点路径
                    , "HelloZookeeper".getBytes() // 节点的数据
                    , ZooDefs.Ids.OPEN_ACL_UNSAFE // 权限
                    , CreateMode.PERSISTENT // 节点类型
            );
            System.out.println(path);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    打印信息——报错

    DEBUG org.apache.zookeeper.ClientCnxnSocketNIO - Ignoring exception during shutdown input
    java.net.SocketException: Socket is not connected
    	at sun.nio.ch.Net.translateToSocketException(Net.java:123)
    	at sun.nio.ch.Net.translateException(Net.java:157)
    	at sun.nio.ch.Net.translateException(Net.java:163)
    	at sun.nio.ch.SocketAdaptor.shutdownInput(SocketAdaptor.java:401)
    	at org.apache.zookeeper.ClientCnxnSocketNIO.cleanup(ClientCnxnSocketNIO.java:200)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    三、原因分析:

    服务器zookeeper版本和pom依赖版本不一致导致的


    四、解决方案:

    将pom依赖版本服务器zookeeper版本

    服务器版本查看3.8.2版本:

    [root@zookeeper01 lib]# pwd
    /opt/zookeeper/lib
    [root@zookeeper01 lib]# 
    [root@zookeeper01 lib]# ll -r
    总用量 12192
    -rw-r--r--. 1 root root   23744 831 00:20 zookeeper-prometheus-metrics-3.8.2.jar
    -rw-r--r--. 1 root root  256137 831 00:20 zookeeper-jute-3.8.2.jar
    -rw-r--r--. 1 root root 1328066 831 00:20 zookeeper-3.8.2.jar
    -rw-r--r--. 1 root root   11358 831 00:20 snappy-java-1.1.10.1.jar_LICENSE.txt
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    更改pom依赖版本为3.8.2

        
            <dependency>
                <groupId>org.apache.zookeepergroupId>
                <artifactId>zookeeperartifactId>
                <version>3.8.2version>
            dependency>
            <dependency>
                <groupId>com.github.sgroschupfgroupId>
                <artifactId>zkclientartifactId>
                <version>0.1version>
            dependency>
            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>4.12version>
            dependency>
        dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    .NET程序配置文件操作(ini,cfg,config)
    常见的RabbitMQ测试点及解决办法
    Python基础语法
    阿里影业业绩大涨,除了沸腾的文娱市场还有什么原因?
    C# using语句使用介绍
    5.第五部分 异步爬虫
    用节点亲和性把 Pod 分配到节点
    关于我的家乡网页设计主题题材——梧州14页HTML+CSS网页
    DERT:End-to-End Object Detection with Transformers
    安全员c证考试科目有几门----唐山海德教育安全员报考
  • 原文地址:https://blog.csdn.net/weixin_45112292/article/details/133896071