代码参见: doUnlock()
有清楚这一块逻辑的老哥吗? 我看了很多引用的地方和这一块的代码, 怎么看都是这几步操作不是原子性的, 随便一个操作出问题不就挂了.. 比如
- expire 失败, 不就不会自动过期了?
- doUnlcok 失败, 其他的程序如果调用需要加锁的地方不就都卡住了?
代码参见: doUnlock()
有清楚这一块逻辑的老哥吗? 我看了很多引用的地方和这一块的代码, 怎么看都是这几步操作不是原子性的, 随便一个操作出问题不就挂了.. 比如
1
BBCCBB OP 😱
|
2
pigmen Dec 9, 2020
expire 和 set 一起用不就行了,分开的话用 multi exec
doUnlock 应该是单个 key 的? |
3
Vedar Dec 9, 2020
看代码确实有这个问题,而且看 execute 还弄了个 interruptexception 的机制 看起来确实是没拿到锁就会一直等到被打断为止
|