Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
ZookeeperDistributedLock may hold the lock and not release it when the unlock operation was interrupted.
Because the unlock operation contains two steps:
1. peekLock: get the owner of the lock
2. purgeLock: purge the lock if the owner of the lock is the current client.
If the peekLock step is interrupted, the purgeLock step won't be executed. Thus the lock won't be released.
Meanwhile, the lock operation should also consider the interrupt cases.