首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果资源已被锁定,会发生什么情况?

如果资源已被锁定,会发生什么情况?
EN

Stack Overflow用户
提问于 2021-06-18 07:28:13
回答 1查看 288关注 0票数 1

我正在尝试使用RedLock来防止两个用户同时在同一资源上执行操作(从对方那里预订东西太快了)。但如果资源已经被其他人获得,我希望它完全失败(在请求提交事务之后,预订可用性将消失)。在文档中,我不清楚如果资源仍然被锁定会发生什么,以及在这一点上如何失败。它只是抛出一个错误吗?https://github.com/mike-marcacci/node-redlock#usage-promise-style

代码语言:javascript
复制
const redlock = new Redlock(...);
let lock;
try {
  lock = redlock.lock('bookId', 120000);
} catch (err) {
  // ... lock failed to be acquired because someone else still had it? (after retries are finish)
}
EN

回答 1

Stack Overflow用户

发布于 2021-06-23 09:01:40

我使用的上面的例子实际上是有效的。一旦所有获取锁的尝试都用完了,它就会抛出错误。在大多数互斥情况下,这种情况不应该发生。它应该进行配置,以便有足够的时间让其他客户端等待锁定的资源,以最终获得它。如果您希望它完全失败(您不希望第二个客户端获取资源),只需将Redlock配置为一次尝试,Redlock就会抛出。

代码语言:javascript
复制
const redlock = new Redlock(...);
let lock;
try {
  lock = redlock.lock('bookId', 120000);
} catch (err) {
  // Attempted to grab lock but failed after all attempts (configured) are finished
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68027628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档