我刚开始使用Couchbase并尝试执行一个简单的查询。
当我设置一个在我的存储桶中存在的密钥时,查询有效,我得到一个结果。但是当我设置一个不存在的密钥时,查询似乎永远不会返回。
我正在使用Java客户端来创建和执行查询。当我从Couchbase管理UI执行它时,它可以正常工作。
有什么想法吗?
观点:
function (doc, meta) {
if (doc.doc_type && doc.doc_type == "MyType") {
emit(doc.myStr);
}
}
查询:
Query query = new Query();
query.setIncludeDocs(true);
query.setStale(Stale.FALSE);
query.setKey("BB"); // i have no document with myStr == "BB"
ViewResponse res = client.query(view, query); // this row never returns
谢谢
英巴尔
答案 0 :(得分:2)
您使用的是哪个版本的java sdk?
可能与问题SPY-163 http://www.couchbase.com/issues/browse/SPY-163
有关从Java sdk 1.4.1的发行说明(修复方法):
SPY-163:asyncGetBulk方法中已经修复了死锁(如果使用了setIncludeDocs(true),也可以通过视图查询机制来促进),当传入一个空的键列表时就会发生死锁。这也可能发生如果视图请求没有返回结果,那么空列表将向下传递给堆栈,从而导致一个不响应的线程。