Redis for humans. 🌎🌍🌏
NextId.reset()
, reset all Redis mastersPreviously, I'd modified the NextId.__current_id
getter to get the ID from n // 2 + 1
Redis masters, then to return the highest of those
IDs.
This means that NextId.reset()
must delete the Redis key from all masters.
Full Changelog: https://github.com/brainix/pottery/compare/v1.4.1...v1.4.2
On read operations, once we've achieved quorum and read the value that we need, cancel pending in-flight futures.
Full Changelog: https://github.com/brainix/pottery/compare/v1.4.0...v1.4.1
NextId.reset()
NextId.reset()
deletes the NextId
object's key from the Redis masters, in effect resetting the current ID to 0.
Full Changelog: https://github.com/brainix/pottery/compare/v1.3.6...v1.4.0
bytes
and str
responsesbytes
responses. However, the Redis client can be configured to return str
responses. Make Pottery work for either type of responses.NextId
initialization.Full Changelog: https://github.com/brainix/pottery/compare/v1.3.5...v1.3.6
Full Changelog: https://github.com/brainix/pottery/compare/v1.3.4...v1.3.5
LOLWUT
LOLWUT
command: https://redis.io/commands/lolwut
Full Changelog: https://github.com/brainix/pottery/compare/v1.3.3...v1.3.4
Redlock.__repr__()
and NextId.__repr__()
When the Redis connection pool is exhausted, the Redis client throws ConnectionError
s. Then the Sentry SDK tries to record the tracebacks. If you have a Redlock
or a NextId
anywhere in those tracebacks, then the Sentry SDK calls repr()
on those objects. And if those objects' .__repr__()
s try to talk to Redis, then the client throws nested ConnectionError
s.
So don't talk to Redis from Redlock.__repr__()
or NextId.__repr__()
.
Full Changelog: https://github.com/brainix/pottery/compare/v1.3.2...v1.3.3
ValueError
on invalid arguments to Redlock.__init__()
_ContextPipeline.__slots__
to reduce memory usage and improve performance@synchronize()
decorator spends waiting for and holding the Redlock
Full Changelog: https://github.com/brainix/pottery/compare/v1.3.1...v1.3.2
.__slots__
on Redlock
and NextId
Redlock
and NextId
are designed to be instantiated often. .__slots__
might help someone.
Full Changelog: https://github.com/brainix/pottery/compare/v1.3.0...v1.3.1
Discussion here: https://github.com/brainix/pottery/issues/422
Full Changelog: https://github.com/brainix/pottery/compare/v1.2.1...v1.3.0