Couchbase Java getAndLock混乱

时间:2013-03-27 04:30:34

标签: java multithreading couchbase membase

我有两个问题。我有一个多线程Java应用程序。当一个线程在一个键上调用getAndLock时会发生什么,并且在另一个线程在同一个键上调用getAndLock之后会立即发生什么?

  1. 第二个线程会自动阻塞,直到第一个线程释放出来 锁?或者,函数调用将以空CAS值返回吗?或者,它会抛出一个 例外

  2. 如果第一个线程删除了密钥(整个文档),那么会发生什么 第二个帖子?

1 个答案:

答案 0 :(得分:0)

(一粒盐;我只是非常熟悉pecl-memcache语义)。

documentation表示它会尝试获取锁定三秒钟,然后返回OperationTimeoutException。 (正如mikeweid指出的那样)如果锁已经存在,它应该立即返回并指示错误消息中存在该键,但文档没有说明在这种情况下抛出了什么异常/错误。

至于第二个问题,如果第一个线程删除了一个键,它应该返回,就好像该键从不存在一样;在这种情况下null