我将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异常。当然,我们没有从副本中获取文档,我们遇到了一些例外情况。
我想知道我是否应该在任何例外中转到副本?
谢谢,
伊
答案 0 :(得分:0)
总是转到副本不会对某些类错误有所帮助,例如DocumentDoesNotExistException
。
对于可能表示群集范围问题的其他人,例如CouchbaseOutOfMemoryException
,转到副本是一个选项但,它可能会给群集带来更多压力并使问题变得更糟。
最好退后一点,等一下再重试。