2015-06-09 87 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 { ... } 

没有缓存会失败。