| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Lock.acquire() can now be provided a token. If provided, this value will be
used as the value stored in Redis to hold the lock.
Lock.owned() returns a boolean indicating whether the lock is owned by the
current instance.
|
|
|
|
|
|
|
|
|
|
|
|
| |
`Lock` class provides a method called `.extend()` to manage a TTL of the
acquired lock. However, the method allows only to extend a timeout of
existing lock by N seconds, there's no way you can reset a TTL to the
timeout value you passed to this lock. There could be multiple use cases
for such behaviour. For instance, one may want to use a lock to
implement active/passive behaviour where only one process owns a lock
and resets its TTL all over again until it dies. This commit adds a new
method called `.reacquire()` to reset a TTL of the acquired lock back to
the passed timeout value.
|
| |
|
|
|
|
|
|
|
|
| |
Using the locking routines, it is useful to be able to
distingush a generic lock error from a one that is related
to the lock not being owned anymore (without doing string
checks); this allows say a lock extension thread to attempt
to re-acquire the lock in this case (vs just dying).
|
|
|
|
|
|
| |
This make just like threading.Lock objects do.
Fixed #1007
|
|
|
|
|
|
|
| |
Lock.locked() returns a boolean indicating if the lock is acquired and valid.
Thanks Alan Justino da Silva
Fixes #1007
|
|
|
|
|
| |
Fixes #621
Fixes #927
|
|
|
|
|
|
|
|
|
|
| |
Everyone is using Redis 2.6 or greater, right? The Lua lock implementation
is so much nicer and less buggy.
Fixes #1031
Fixes #902
Fixes #793
Fixes #610
|
|
|
|
| |
Remove workaround for handling unicode with older Pythons.
|
|
|
|
| |
This is python, not C
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
* add thread_local=False parameter to Lock.__init__() and StrictRedis.lock()
* use thread_local to decide whether to put token in thread-local storage
|
| |
|
|
|
|
|
|
| |
* assignment to self.token was not protected by the lock, so the value could get overwritten
* do_release() now has an expected_token parameter that receives the old token value
* NOTE: this only fixes the issue for locks that do not have timeouts
|
| |
|
|
* now uses unique string tokens to claim lock ownership
* added extend() method to extend the timeout on an already acquired lock
|