2016-08-01 128 views
1

我使用couchbase 4.0.1與Java SDK。Couchbase從副本

這是我的代碼:

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異常 - 我去副本,但上週,由於服務器的問題,我們從一臺服務器有內存溢出的例外。當然,我們沒有從副本中獲得文檔,我們遭受了一些例外。

我想知道是否應該去的任何例外副本嗎?

感謝,

回答

0

總是將副本是不會幫助錯誤的一些類,像當然DocumentDoesNotExistException

對於其他人可能表明集羣範圍內的問題,像CouchbaseOutOfMemoryException,去副本是一個選項它可以把更多的壓力在集羣上,使問題變得更糟。

退後可能會更好,稍等一會再試。