PotteryRedLock.locked() does not show real ttl
Describe the bug
If we define two objects of PotteryRedLock with same key (for example at different app instances), their locked() methods does not show states of other object
To Reproduce Steps to reproduce the behavior:
PotteryRedLock(key='key', masters=masters, auto_release_time=60).acquire()
PotteryRedLock(key='key', masters=masters).locked()
locked() will return 0, that means lock could be acquired, but second try to acquire will blocks for up to 60 seconds
Expected behavior
locked() returns value close to auto_release_time of first lock
Environment (please complete the following information):
-
OS: [e.g. macOS, Linux]
uname -a
Darwin xxx 20.6.0 Darwin Kernel Version 20.6.0: Wed Nov 10 22:23:05 PST 2021; root:xnu-7195.141.14~1/RELEASE_ARM64_T8101 arm64 -
Python version 3.9.15
-
Redis version 6.2.5
Found that locked() returns wrong value coz self._uuid = None, should it check db if no uuid?