Couchbase来自副本

时间:2016-08-01 11:52:58

标签: couchbase couchbase-java-api

我将couchbase 4.0.1与Java SDK一起使用。

这是我的代码:

bucket.async()
            .get(key)
            .onErrorResumeNext(throwable -> {
                if (throwable instanceof TimeoutException) {
                    return getBucket().async().getFromReplica(key, ReplicaMode.ALL);
                }
                return Observable.error(throwable);
            })
            .map(doc -> doc.content())
            .toBlocking()
            .singleOrDefault(null);

如果我收到TimeoutException - 我会转到副本,但是上周,由于服务器问题,我们从其中一个服务器获得了OutOfMemory异常。当然,我们没有从副本中获取文档,我们遇到了一些例外情况。

我想知道我是否应该在任何例外中转到副本?

谢谢,

1 个答案:

答案 0 :(得分:0)

总是转到副本不会对某些类错误有所帮助,例如DocumentDoesNotExistException

对于可能表示群集范围问题的其他人,例如CouchbaseOutOfMemoryException,转到副本是一个选项,它可能会给群集带来更多压力并使问题变得更糟。

最好退后一点,等一下再重试。