All notable changes to this project will be documented in this file.
- Allow using Sentinels to handle redis connections
- Added a function on a lock manager to return check and return a list of all active locks
- Reverted back to using EVALSHA so that the scripts do not need to be uploaded for every command.
- Instead, if a script is not on the server for EVALSHA, then the exception is caught, the scripts are reuploaded, and the set is tried again.
- Add watchdogs to extend lock's lifetime automatically
- Aioredlock totally becomes a lock manager, it track locks' state.When Aioredlock is destroyed, it releases all locks it have
- Remove
lock_timeout
anddrift
from Aioredlock's initialization parameter list and move them toAioredlock.lock
- Add
internal_lock_timeout
as default lock_timeout for Aioredlock initialization Aioredlock.lock(resource)
is replaced byAioredlock.lock(resource_name, lock_timeout)
Aioredlock.extend(lock)
is replaced byAioredlock.extend(lock, lock_timeout)
- Remove lock_timeout from Redis' initialization parameter list
- Support support for initializing aioredlock with an existing aioredis pool
- Move all closing logic from Redis.clear_connections() to Instance.close()
- Fixes for new version of asynctest
- Support for aioredis version to 1.0.0.
- Complite lock refactoring using lua scripts .
Aioredlock.extend(lock)
is implemented to extend the lock lifetime.- The lock manager now raises the
LockError
exceptions if it can not lock, extend or unlock the resource. - The lock now can be released with async context manager.
- Support the same address formats as aioredis does.
Aioredlock.is_locked()
is implemented to check is the resource acquired by another redlock instance.- The
lock_timeout
anddrift
parameters now mesured in seconds, just likeretry_delay_min
andretry_delay_max
.
- Updated aioredis requirement version to 0.3.1.
- Incremented the maxsize connections pool from default to 100.
- Fixed a bug regarding the asyncio lock usage when creating the connection pool with redis.
- Drift time check. See https://redis.io/topics/distlock#is-the-algorithm-asynchronous
- Randomized the retry delay for trying to acquire the lock again (range between 0.1 and 0.3 seconds).
- aioredlock first version with all the basic distributed lock manager functionalities.