尝试使用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 { ... }


没有缓存将失败。

10-06 02:39