1

我使用带有 Java SDK 的 couchbase 4.0.1。

这是我的代码:

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 异常。当然,我们没有从副本中获取文档,我们自己也遇到了一些例外情况。

我想知道我是否应该在任何异常情况下去副本?

谢谢,

我愿意

4

1 回答 1

0

总是访问副本不会对某些类别的错误有所帮助,DocumentDoesNotExistException当然。

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

最好退后一步,稍等片刻,然后重试。

于 2016-08-02T07:57:29.540 回答