尝试使用java-client-2.1.0
时,我在AsyncBucket
上收到此错误:
com.couchbase.client.deps.io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
过了一会儿,我明白了。 Couchbase完全忽略了这种情况,因此库没有适当的反馈,而Netty内部人员也无济于事。
最佳答案
原来,当您多次消费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 { ... }
没有缓存将失败。