【问题标题】:Couchbase bucket insert behaves asynchronously javaCouchbase存储桶插入行为异步java
【发布时间】:2016-06-09 07:06:25
【问题描述】:

我在 couchbase-server-enterprise_4.1.0-ubuntu14.04_amd64 上使用 JsonDocument inserted = bucket.insert(doc);

究竟发生了什么,我触发了这个 insert 命令,并且在这个成功时我触发了同一文档上的 Select 命令。此 Select 命令不返回更新条目,而是仅返回旧条目。当我在 Select 之前使用调试器时(在 insert 之后等待几秒钟,然后调用 Select)它工作得很好。所以我认为 insert 的行为是异步的,不确定。

我检查的另一件事是 upsert 而不是 insert,它也不起作用。但是,当我执行 bucket.replace(doc) 然后调用 Select 时,它会返回更新后的结果。我已经尝试显式使用 bucket.async().insert(doc) 和使用 toBlocking().single() ,这也失败了。

insert/upsert 的问题还是我做错了什么。

下面是我的一些代码 sn-p ::

@Override
public T save(T entity, String username) {

String id = generateId(entity);

JsonObject data = JsonObject.fromJson(getContent(entity));
data.removeKey(ID);
data.put(TYPE, klass.getSimpleName());
data.put(CREATED_AT, new Date().getTime());
data.put(CREATED_BY, username);
data.put(MODIFIED_AT, new Date().getTime());
data.put(MODIFIED_BY, username);
data.put(ACTIVE, true);

T persistedEntity = getEntity(bucket.insert(JsonDocument.create(id, data)));

return persistedEntity;

}

@Override
public List findAll() {
Statement query = selectAll().where(typeExpression()).orderBy(Sort.desc(x(CREATED_AT)));
return getEntities(query);
}

protected AsPath selectAll() {
return Select.select("meta().id, *").from(i(bucket.name()));
}

【问题讨论】:

    标签: java asynchronous couchbase nosql


    【解决方案1】:

    N1QL 查询可以以不同程度的一致性运行,这与始终保持一致的键/值操作不同(您“读取自己的写入”)。

    所以在插入和索引器赶上它之间会有一点延迟。如果您默认执行 N1QL 查询,它将返回索引器的当前状态,因此如果它仍在为您的文档编制索引,您将看不到更新。

    尝试使用REQUEST_PLUS 中的ScanConsistency 执行查询,在此执行bucket().query(...)

    N1qlQuery n1qlQuery = N1qlQuery.simple(
        selectStatement, //that's the Statement query in your example
        N1qlParams
            .build()
            .consistency(ScanConsistency.REQUEST_PLUS)
    );
    

    这将指示 N1QL 等待索引器完成对未决突变的索引。

    【讨论】:

    • 西蒙,我认为不是那个问题; 'Select' 返回 'old' 一个……也就是说,不是索引问题。 “选择”找到“原始”文档,但它的“内容”是旧的......它可能无法查看查询陈旧问题。 :)
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    相关资源
    最近更新 更多