Java Couchbase群集-1个节点关闭时出现异常

Java Couchbase群集-1个节点关闭时出现异常,java,couchbase,Java,Couchbase,我有一个有3个节点的Couchbase集群。我有一个java进程可以写入这个集群。 当其中一个节点关闭时,我会遇到以下异常: 2013-12-30 14:03:23.259 WARN com.couchbase.client.CouchbaseConnection: Node expected to receive data is inactive. This could be due to a failure within the cluster. Will check for update

我有一个有3个节点的Couchbase集群。我有一个java进程可以写入这个集群。 当其中一个节点关闭时,我会遇到以下异常:

2013-12-30 14:03:23.259 WARN com.couchbase.client.CouchbaseConnection:  Node expected to receive data is inactive. This could be due to a failure within the cluster. Will check for updated configuration. Key without a configured node is: 980d330b2a96656a93bd08e48e6fc759135e6e6f.
Dec 30, 2013 2:03:23 PM com.couchbase.client.CouchbaseConnectionFactory resubConfigUpdate
INFO: Attempting to resubscribe for cluster config updates.
Dec 30, 2013 2:03:23 PM com.couchbase.client.CouchbaseConnectionFactory$Resubscriber run
INFO: Reconnect attempt 1, waiting 0ms
2013-12-30 14:03:24.020 INFO com.couchbase.client.CouchbaseConnection:  Reconnecting {QA sa=10.223.224.79/10.223.224.79:11210, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2013-12-30 14:03:24.261 WARN net.spy.memcached.protocol.binary.BinaryMemcachedNodeImpl:  Operation canceled because authentication or reconnection and authentication has taken more than one second to complete.
2013-12-30 14:03:24.263 WARN com.couchbase.client.CouchbaseConnection:  Node expected to receive data is inactive. This could be due to a failure within the cluster. Will check for updated configuration. Key without a configured node is: 980d330b2a96656a93bd08e48e6fc759135e6e6f.
2013-12-30 14:03:25.265 WARN net.spy.memcached.protocol.binary.BinaryMemcachedNodeImpl:  Operation canceled because authentication or reconnection and authentication has taken more than one second to complete.
441016302 [pool-5-thread-1] ERROR com.polimo.rtb.writer.CouchbaseWriter  - Error while trying to write to couchbase
java.util.concurrent.CancellationException: Cancelled
        at net.spy.memcached.internal.OperationFuture.get(OperationFuture.java:176)
        at net.spy.memcached.MemcachedClient.mutateWithDefault(MemcachedClient.java:1842)
        at net.spy.memcached.MemcachedClient.incr(MemcachedClient.java:1788)
        at com.polimo.rtb.writer.CouchbaseWriter.incrementCounterInDb(CouchbaseWriter.java:107)
        at com.polimo.rtb.writer.CouchbaseWriter.write(CouchbaseWriter.java:90)
        at com.polimo.rtb.consumer.ConsumerThread.run(ConsumerThread.java:40)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:724)
我使用的是一个集群,按照所描述的行为,我觉得我忽略了使用集群的全部意义,我的意思是,如果一个节点发生故障,所有的东西都应该工作正常


是否缺少某些配置(服务器或客户端)?

复制是按每个存储桶配置的。如果未配置复制副本,则当节点停机时,该节点承载的vBucket将不再可用,因此,对该数据执行操作的任何尝试都将失败,正如您所看到的


有关配置副本的详细信息,请参阅Couchbase手册中的。特别是“创建Bucket”过程中的副本部分和节点部分。

如何配置客户端。配置中是否有所有群集节点的IP地址?如果配置中只有一个IP地址,并且此节点崩溃,则应用程序无法访问群集

您有哪些复制选项?如果您没有启用复制副本,则失去一个节点将意味着该节点上的数据不再可用,因此您将无法增加该文档。此外,您可以发布代码摘要吗?@DaveRigby是正确的,如果节点失败,您必须将其故障转移到副本分区(自动或手动),或者如果未配置副本,则散列到存在于故障节点上的分区中的密钥将无法访问。@DaveRigby我应该遵循哪些复制选项?我应该在群集管理器中找到它吗?@forhas:Replication是基于每个bucket设置的-有关详细信息,请参阅。我已经为具有2个节点的bucket启用了副本,但是我在使用
client.getBulk(key)
时遇到了相同的错误。它适用于
客户机.get(key)
方法。