永远不会返回的Couchbase查询

时间:2014-05-13 08:11:54

标签: couchbase

我刚开始使用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

谢谢

英巴尔

1 个答案:

答案 0 :(得分:2)

您使用的是哪个版本的java sdk?

可能与问题SPY-163 http://www.couchbase.com/issues/browse/SPY-163

有关

从Java sdk 1.4.1的发行说明(修复方法):

  

SPY-163:asyncGetBulk方法中已经修复了死锁(如果使用了setIncludeDocs(true),也可以通过视图查询机制来促进),当传入一个空的键列表时就会发生死锁。这也可能发生如果视图请求没有返回结果,那么空列表将向下传递给堆栈,从而导致一个不响应的线程。

http://docs.couchbase.com/couchbase-sdk-java-1.4/#release-notes-for-couchbase-client-library-java-141-ga-8-may-2014