spymemcached java客户端失败处理无法正常工作:membase server

时间:2017-03-21 07:30:52

标签: java spymemcached membase

我正在使用aspymemcached java客户端来评论membase服务器:

 public static void main(String[] args) throws Exception{
        MemcachedClient client = null;
        try {
            URI server1 = new URI("http://192.168.100.111:8091/pools");  //primary 
            URI server2 = new URI("http://127.0.0.1:8091/pools"); //secondry 
            ArrayList<URI> serverList = new ArrayList<URI>();
            serverList.add(server1);
            serverList.add(server2);
            client = new MemcachedClient(serverList, "bucketName", ""); 
            client.set("spoon", 50000, "Hello World!");  //after this line i am going to down server 1 (192.168.100.111:8091/pools)
            Thread.sleep(35000);
            Object obj = client.get("spoon"); // on excetuting this line value should returns from server 2
        }  catch (Exception e) {
            log.error("Exception in initializing membase connection:" + e.getMessage(), e);
        }
 }

我有2个成员服务器在复制时运行。现在,如果主(server1)节点发生故障,那么客户端不会从辅助节点(server2)读取值,并且我收到以下错误:

2017-03-20 07:51:55,655 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
2017-03-20 07:51:55,655 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
2017-03-20 07:51:55,655 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:407)
2017-03-20 07:51:55,655 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:275)
2017-03-20 07:51:55,655 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at net.spy.memcached.MemcachedClient.run(MemcachedClient.java:2030)
2017-03-20 07:51:55,656 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) 2017-03-20 07:51:55.656 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/192.168.100.111:8091, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}, attempt 5.
2017-03-20 07:52:04,549 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) 2017-03-20 07:52:04.549 INFO net.spy.memcached.MemcachedConnection:  Reconnecting {QA sa=/192.168.100.111:8091, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2017-03-20 07:52:05,542 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) 2017-03-20 07:52:05.542 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@58b50eaf
2017-03-20 07:52:05,542 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) 2017-03-20 07:52:05.542 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to failure to connect to {QA sa=/192.168.100.111:8091, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2017-03-20 07:52:05,542 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) java.net.ConnectException: Connection refused: no further information
2017-03-20 07:52:05,542 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
2017-03-20 07:52:05,542 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
2017-03-20 07:52:05,542 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:407)
2017-03-20 07:52:05,542 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:275)
2017-03-20 07:52:05,543 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at net.spy.memcached.MemcachedClient.run(MemcachedClient.java:2030)
2017-03-20 07:52:05,543 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) 2017-03-20 07:52:05.543 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/192.168.100.111:8091, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}, attempt 5.
2017-03-20 07:52:20,356 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) 2017-03-20 07:52:20.356 INFO net.spy.memcached.MemcachedConnection:  Reconnecting {QA sa=/192.168.100.111:8091, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2017-03-20 07:52:21,356 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) 2017-03-20 07:52:21.356 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@6fab717a
2017-03-20 07:52:21,356 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) 2017-03-20 07:52:21.356 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to failure to connect to {QA sa=/192.168.100.111:8091, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2017-03-20 07:52:21,356 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091}) java.net.ConnectException: Connection refused: no further information
2017-03-20 07:52:21,356 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
2017-03-20 07:52:21,356 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
2017-03-20 07:52:21,356 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:407)
2017-03-20 07:52:21,356 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:275)
2017-03-20 07:52:21,356 ERROR [stderr] (Memcached IO over {MemcachedConnection to /127.0.0.1:8091 /192.168.100.111:8091})   at net.spy.memcached.MemcachedClient.run(MemcachedClient.java:2030)

我的预期行为是,客户端应该从重新连接主服务器的二次服务器(server2)中读取值。

1 个答案:

答案 0 :(得分:0)

我们使用ConnectionObserver处理了它 看看我的answer