2015-06-09 126 views
0

我在java-client-2.1.0得到這個錯誤,而試圖與AsyncBucket工作:Couchbase Java的客戶端IllegalReferenceCountException

com.couchbase.client.deps.io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1 

一段時間,我想通了之後。 Couchbase完全忽略了這種情況,所以沒有來自庫的適當反饋,Netty內部沒有幫助。

回答

1

結果當你多次使用CB的物品時你會得到這個錯誤。例如,

val getObs = asyncBucket.get("blah") 
val emptyObs = getObs.isEmpty.doOnEach(...).subscribe() 
val docObs = getObs.doOnEach(...).subscribe() 

這是我可以拿出來處理「找不到文檔」場景的唯一方法。

要解決此問題,使用cache()

val getObs = asyncBucket.get("blah").cache() 

緩存的觀察者會消耗Couchbase的項目,然後多個用戶可以安全地從緩存中消耗。

如果您使用的是rxscala,則修復方法相同。

getObs.singleOption.foreach { ... } 

沒有緩存會失敗。