0

当尝试更新之前删除的 couchbase 文档时,更新调用失败并显示 CASResponse.EXISTS 代码而不是 CASResponse.NOT_FOUND。但是,在删除完成后立即获取先前删除的键的调用按预期返回 null:

def main(args: Array[String]){
  val uris = List(URI.create("http://localhost:8091/pools"))

  val client = new CouchbaseClient(uris, "test", "password")  

  client.add("asdf", "qwer").get

  client.delete("asdf").get

  val result = client.asyncGets("asdf").get

  assert(result == null)

  val response = client.asyncCAS("asdf", 1, "bar").get

  response match {
    case CASResponse.NOT_FOUND => println("Document Not Found")
    case CASResponse.EXISTS => println("Document exists")
  }
}

在更新调用解决问题之前添加 Thread.sleep(1000) ,所以我的问题是这是 Couchbase 的预期行为吗?

Couchbase 版本是 2.2.0 企业版(build-821),在 Scala 2.10.2 中使用 Java 客户端版本 1.2.1。

谢谢

4

2 回答 2

1

我想你可能想做:

client.delete(key, PersistTo.MASTER).get();

您可以将枚举 PersistTo 更改为其他选项,例如 ONE、TWO、THREE(即 Master 加上额外数量的节点)。我只用一个节点测试了你的例子,上面对我有用。

于 2013-11-09T14:46:12.223 回答
0

您是否尝试过使用client.gets()而不是client.asyncGets().get()client.cas()而不是client.asyncCAS().get()?我认为它可以解决你的问题。

于 2013-11-09T14:14:25.807 回答