- Monotonic clock for locks, avoiding issues with DST (thanks @doits)
- Pooled connection support (thanks @mlarraz)
- Switch to Github actions for tests (thanks @mlarraz)
- Update supported Ruby versions (thanks @mlarraz & @pat)
- Support for connection pooling when using memcached locks, via
with
blocks using Dalli (thanks to Lev).
- Default TTL for keys to allow for short-lived locking keys (thanks to Ian Remillard) without leaking memory.
- Vastly improve initial lock acquisition, especially on Redis (thanks to Jeremy Wadscak).
- Custom lock tokens (thanks to avokhmin).
- Slight memory leak fix.
- Dramatically simplify the interface by forcing clients to specify the key & resources at lock initialization instead of every method call.
- Clarify documentation further with respect to semaphores.
- Fix bug with refresh - typo would've prevented real use.
- Clean up code.
- Improve documentation a bit.
- 100% test coverage.
- Fix bug when dealing with real-world Redis error conditions.
- Refactor class methods into instance methods to simplify implementation.
- Increase thread safety with Memcached implementation.
- Properly throw Suo::LockClientError when the connection itself fails (Memcache server not reachable, etc.)
- Fix retry_timeout to properly use the full time (was being calculated incorrectly).
- Refactor client implementations to re-use more code.
- Use MessagePack for lock serialization.
- First release.