CHANGES
1.54.0
- redis: fix concurrent access on acquire()
- tests: tests fail if no URL is set + run partitioner tests on basic drivers
- tests: fix etcd and consul test run
- add weight tests for add_nodes
- get weight of existing members
- coordination: do not get member list if not needed
- Add shared filelock
1.53.0
- Enhance heartbeat sleep timer
1.52.0
- FileDriver:Support multiple processes
- Switch tests to use latest etcd - 3.1.3
1.51.0
- pass on partitions
- hashring: allow to use bytes as node name
1.50.0
- postgresql: only pass username and password if they are set
- Rewrite heartbeat runner with event
- Adds authentication support for zookeeperDriver
1.49.0
- support unicode node name
- Update reno for stable/ocata
1.48.0
- Fix test function name with two underscores to have only one
1.47.0
- Add partitioner implementation
- Stop making tooz.utils depending on tooz.coordination
- [doc] Note lack of constraints is a choice
- The ‘moves.moved_class’ function creates a new class
- Add weight support to the hashring
- coordination: allow to pass capabilities in join_group_create()
- coordination: fix moved_class usage for ToozError
- zookeeper: switch to standard group membership watching
- Add a hashring implementation
- Move ToozError to root module
- Fixup concurrent modification
- Replaces uuid.uuid4 with uuidutils.generate_uuid()
1.46.0
- Do not re-set the members cache for watchers by default
- coordination: add __repr__ for join/leave events
- coordination: renforce event based testing
- Factorize member_id in the base coordinator class
- Use the internal group of list rather than listing the groups
- Move the cached-based watcher implementation into its own class
1.45.0
- Factorize group quit on stop()
- coordination: make get_members() return a set
- Replace ‘assertTrue(a (not)in b)’ with ‘assert(Not)In(a, b)’
- Changed author and author-email
- redis: make sure we don’t release and heartbeat a lock at the same time
- coordinator: add join_group_create
- Replace retrying with tenacity
- Add CONTRIBUTING.rst
- Replace ‘assertTrue(a in b)’ with ‘assertIn(a, b)’ and ‘assertFalse(a in b)’ with ‘assertNotIn(a, b)’
- Using assertIsNone() instead of assertEqual(None, ...)
- tox: use pretty tox output
- tox: install docs dependency in docs target and reno
- Bump hacking to 0.12
- Add reno for release notes management
1.44.0
- Changed the home-page link
- file: update .metadata atomically
- file: return converted voluptuous data
- file: move _load_and_validate to a method
- file: move _read_{group,member}_id to staticmethod-s
- etcd: run tests in clustering mode too
- Use method ensure_tree from oslo.utils
- Switch from Python 3.4 to Python 3.5
- Install only needed packages
- Fix a typo in file.py
- Update etcd version in tests
1.43.0
- Makedirs only throws oserror, so only catch that
1.42.0
- etcd: don’t run heartbeat() concurrently
- Raise tooz error when unexpected last entries found
- etcd: properly block when using ‘wait’
- Share _get_random_uuid() among all tests
- Updated from global requirements
- Clean leave group hooks when unwatching
- Fix the test test_unwatch_elected_as_leader
- Updated from global requirements
1.41.0
- File driver: properly handle Windows paths
- Updated from global requirements
- Updated from global requirements
1.40.0
- Add docs for new consul driver
- Change dependency to use flavors
- Run doc8 only in pep8 target
- Move pep8 requirements in their own target
- zookeeper: do not hard depend on eventlet
- Remove unused iso8601 dependency
- tests: remove testscenario usage
- file: set no timeout by default
- tests: move bad_url from scenarios to static test
- Expose timeout capabilities and use them for tests
- Use pifpaf to setup daemons
1.39.0
- Updated from global requirements
1.38.0
- Using LOG.warning instead of LOG.warn
- Updated from global requirements
- redis: do not force LuaLock
- Fix coordinator typo
- Updated from global requirements
- Ensure etcd is in developer and driver docs
1.37.0
- Remove unused consul future result
- Updated from global requirements
- Add a consul based driver
- file: make python2 payload readable from python3
1.36.0
- Updated from global requirements
1.35.0
- Drop babel as requirement since its not used
- Updated from global requirements
- Updated from global requirements
- Updated from global requirements
- Updated from global requirements
- coordination: expose a heartbeat loop method
1.34.0
1.33.0
- Updated from global requirements
- Compute requires_beating
- Fix calling acquire(blocking=False) twice leads to a deadlock
1.32.0
- Raises proper error when unwatching a group
1.31.0
- Updated from global requirements
- Updated from global requirements
- Add .tox, *.pyo and *.egg to .gitignore
- Enable OS_LOG_CAPTURE so that logs can be seen (on error)
1.30.0
- Updated from global requirements
- Add lock breaking
- pgsql: fix hostname parsing
- Updated from global requirements
- Updated from global requirements
- Update voluptuous requirement
- Updated from global requirements
- Updated from global requirements
- Have zookeeper heartbeat perform basic get
- Add desired characteristics strict subset validation
- Add base64 key encoder (and validations)
- Use voluptuous instead of jsonschema
- Add programatic introspection of drivers characteristic(s)
- Updated from global requirements
- pep8: fix remaining errors and enable all checks
- Use utils.convert_blocking to convert blocking argument
- Adjust some of the zookeeper exception message
- Fix etcd env setup
- tests: do not hardcode /tmp
- utils: replace exception_message by exception_to_unicode
- Add a default port and default host
- etcd: driver with lock support
- Use utils.to_binary instead of using redis module equivalent
- Remove tested under 2.6 from docs
1.29.0
- Updated from global requirements
- Add basic file content schema validation
- Spice up the driver summary/info page
- Make all locks operate the same when fetched from different coordinators
- Add noted driver weaknesses onto the drivers docs
- Updated from global requirements
- File: read member id from file with suffix ”.raw”
- Reduce duplication of code in handling multi-type blocking argument
- Updated from global requirements
- Add comment in memcache explaining the current situation with lock release
1.28.0
- Add ‘requires_beating’ property to coordination driver
- {pg,my}sql: fix AttributeError on connection failure
- tests: allow ipc to bypass blocking=False test
- pgsql: remove unused left-over code
- Add ‘is_still_owner’ lock test function
1.27.0
- Updated from global requirements
- Updated from global requirements
- Remove python 2.6 and cleanup tox.ini
1.26.0
- Updated from global requirements
- Allow specifying a kazoo async handler ‘kind’
- Updated from global requirements
1.25.0
- Updated from global requirements
- Add standard code coverage configuration file
- docs - Set pbr ‘warnerrors’ option for doc build
- Include changelog/history in docs
- Updated from global requirements
- Expose Znode Stats and Capabilities
- Allow more kazoo specific client options to be proxied through
1.24.0
- Updated from global requirements
1.23.0
- Changes to add driver list to the documentation
- Updated from global requirements
1.22.0
- Updated from global requirements
- Accept blocking argument in lock’s context manager
- Make RedisLock’s init consistent with other locks
- Updated from global requirements
1.21.0
- Raise exception on failed lock’s CM acquire fail
- Be more restrictive on the executors users can provide
1.20.0
- Updated from global requirements
- Updated from global requirements
- Use futurist to allow for executor providing and unifying
- Use a lua script(s) instead of transactions
1.19.0
- Updated from global requirements
- Change Lock.name to a property
- Update .gitignore
- Updated from global requirements
- Fixup dependencies
- Expose started state of coordinator to external
- Updated from global requirements
- Updated from global requirements
1.18.0
- Remove tooz/openstack as it is empty and not used
- Fix sp ‘seonds’ -> ‘seconds’
- Ensure run_watchers called from mixin, not base class
- Updated from global requirements
- Update compatibility matrix due to file drivers new abilities
0.17.0
- No longer need kazoo lock custom retry code
- Ensure unwatch_elected_as_leader correctly clears hooks
0.16.0
- Updated from global requirements
- Updated from global requirements
- Ensure lock(s) acquire/release returns boolean values
- Expose ‘run_elect_coordinator’ and call it from ‘run_watchers’
- Share most of the run_watchers code via a common mixin
- Remove 2.6 classifier
- Remove file-driver special no-async abilities
- Delay interpolating the LOG string
- Use encodeutils.exception_to_unicode for exception -> string function
- Use the excutils.raise_with_cause after doing our type check
- Updated from global requirements
- Use the ‘driver_lock’ around read operations
- Updated from global requirements
- Switch badges from ‘pypip.in’ to ‘shields.io’
- Updated from global requirements
- Add watch file driver support
- Make the file driver more capable (with regard to groups)
- Ensure locks can not be created outside of the root file driver directory
- Updated from global requirements
- Use MySQL default port when not set explicitly
- Use fasteners library for interprocess locks
- Implement watch/unwatch elected_as_leader for redis driver
- Updated from global requirements
- Use lua locks instead of pipeline locks
- Move more string constants to class constants with docstrings
- Updated from global requirements
- Updated from global requirements
- Remove support for redis < 2.6.0
- Expose Zookeeper client class constants
- Expose redis client class constants
- Use a serialization/deserialization specific exception
- Expose memcache coord. class constants
- Explicitly start and execute most transactions
- Provide and use a options collapsing function
- Add zookeeper tag in setup.cfg
- Use pymemcache pooled client
- Use oslo.serialization msgpackutils
- Provide ability for namespace customization for Zookeeper and Zake drivers
- Typo in Locking doc
- Move optional driver requirements to test-requirements.txt
- Have run_watchers take a timeout and respect it
- Heartbeat on acquired locks copy
- Avoid using a thread local token storage
0.15.0
- Fix param name to be its right name
- Replace more instance(s) of exception chaining with helper
- Just use staticmethod functions to create _dumps/_loads
- Uncap library requirements for liberty
- Link AOF to redis persistence docs
- Add exception docs to developer docs
- Add + use helper to raise + chain exceptions
- Allow the acquired file to be closed manually
- Updated from global requirements
- Silence logs + errors when stopping and group membership lost
- Make and use a thread safe pymemcache client subclass
- Handle errors that come out of pymemcache better
- Use rst inline code structure + link to sentinel
0.14.0
- Beef up the docstrings on the various drivers
- fix lock concurrency issues with certain drivers
- Add pypi download + version badges
- Denote that 2.6 testing is still happening
- Updated from global requirements
- Use a sentinel connection pool to manage failover
- fix mysql driver url parsing
0.13.1
- Switch to non-namespaced module imports
- Add a driver feature compatibility matrix
- Remove support for 3.3
0.13.0
- Two locks acquired from one coord must works
- Updated from global requirements
- Releases locks in tests
- Allow coordinator non-string options and use them
- Since we use msgpack this can be more than a str
- Updated from global requirements
- Avoid re-using the same timeout for further watcher ops
0.12
- retry: fix decorator
- file: fix typo in errno.EACCES
0.11
- Add a file based driver
- Upgrade to hacking 0.10
- Update sentinel support to allow multiple sentinel hosts
- Allow to pass arguments to retry()
- IPC simplification
0.10
- Add support for an optional redis-sentinel
- README.rst tweaks
- A few more documentation tweaks
- Sync requirements to global requirements
- Add create/join/leave group support in IPC driver
- Add driver autogenerated docs
- Update links + python version supported
- zookeeper: add support for delete group
- redis: add support for group deletion
- tests: minor code simplification
- memcached: add support for group deletion
- memcached: add support for _destroy_group
- Switch to using oslosphinx
- Add doc on how transaction is itself retrying internally
- Fix .gitreview after rename/transfer
- tests: use scenarios attributes for timeout capability
- tests: check for leave group events on dead members cleanup
- memcached: delete stale/dead group members on get_members()
- tests: remove check_port
- tests: do not skip test on connection error
0.9
- doc: add missing new drivers
- doc: switch examples to Zake
- doc: add locking
- Fix tox envlist
- Drop Python 3.3 tests in tox
- Allow tox with py34 and MySQL
- Test connection error scenarios on more drivers
- Translate psycopg2 errors/exceptions into tooz exceptions
- Ensure ‘leave_group’ result gotten before further work
- watch_leave_group not triggering callback on expired members
- Add MySQL driver
- Discard ‘self’ from ‘_joined_groups’ if we got booted out
- Implement non-blocking locks with PostgreSQL
- More retry code out of memcached
- Add a PostgreSQL driver
- Fix gate
- Handle when a group used to exist but no longer does
- tox: split redis/memcached env
- Fix memcached heartbeat on start()
- tox: splits test scenarios
- Add a minimum redis version check while starting
- Make requirement on redis 2.10.x explicit
- Try to use PSETEX when possible
- Use hdel with many keys where supported
- Avoid logging warnings when group deleted or member gone
- Ensure that we correctly expire (and cleanup) redis members
- Various fixes for locks and version compatibility
- Move sysv_ipc deps to test-requirements
0.8
- test: try to stop() first
- Convert the rest of memcached driver functions to futures
- Add a assertRaisesAny helper method
- Allow zake to be tested
- Add a redis driver
- Ensure groups leaving returns are gotten
- Raise the new OperationTimedOut when futures don’t finish
- Start to add a catch and reraise of timed out exceptions
- Adjust the timeout to reflect the repeated retries
- ipc: do not delete the lock if we never acquired it
- Add home-page field
0.7
- Split up the requirements for py2.x and py3.x
- ipc: Fix acquire lock loop logic
0.6
- Make lock blocking with no time out by default
0.5
- coordination: remove destroy() from the lock protocol
- IPC: fix a potential race condition at init
- Fix IPC driver on OS X
- Switch to oslo.utils
- Blacklist retrying 1.3.0
- Use futures to make parts of the memcached driver async
- Have examples run in the py27 environment and make them work
0.4
- Standardize the async result subclasses
- Fix the comment which was borrowed from the IPC driver
- Be more tolerant of unicode exceptions
- Standardize on the same lock acquire method definition
- Standardize on hiding the lock implementation
- On lock removal validate that they key was actually deleted
- Use a thread safe deque instead of a queue
- Change inline docs about class fake storage variable
- LOG a warning if the heartbeat can not be validated
- Add doc8 to the py27 test running
- Use the more reliable sysv_ipc instead of posix_ipc+lockutils
- Only start zookeeper/memcached when not already running
- Let zake act as a in-memory fully functional driver
- Switch to a custom NotImplemented error
- Ensure lock list isn’t mutated while iterating
- Move Zake driver code to separated Python module
- Work toward Python 3.4 support and testing
- Unlock the kazoo version
- Bump up zake to be using the newer 0.1 or greater
- Fix zake driver with latest release
- memcached: switch leader election implementation to a lock
- Add the generation of the documentation in tox.ini
- Add coverage report
0.3
- Switch to URL for loading backends
- Import network_utils from Oslo
- coordination: add IPC driver
- coordination: raise NotImplementedError as default
- Add documentation
- Upgrade hacking requirement
- memcached: use retrying rather than sleeping
- Use retrying instead of our custom code
- Update requirements file matching global requ
0.2
- memcached: implement leader election
- Fix a race condition in one of the test
0.1
- memcached: add locking
- coordination: implement lock mechanism in ZK
- coordination, zookeeper: add get_leader()
- coordination, zookeeper: implement leader election
- coordination: remove wrong comment in tests
- memcached: add support for leave events
- memcached: implement {un,}watch_join_group()
- coordination: raise GroupNotCreated when watching uncreated group
- coordination, zookeeper: add {un,}watch_leave_group
- coordination, zookeeper: add watch_join_group
- tests: skip test if function is not implemented
- coordination: add hooks system
- Add memcached driver
- zookeeper: use bytes as input/output type
- tests: test client disconnection
- coordination: add heartbeat method
- Add pbr generated and testr files to gitignore
- coordination: enhance MemberAlreadyExist exception
- coordination: enhance GroupNotCreated exception
- coordination: enhance MemberNotJoined
- coordination: enhance GroupAlreadyExist exception
- tests: test capabilities on non existent group/member
- tests: add a test for group already existing
- tests: fix variable name
- Fix the default prototype for join_group
- Adds basic tests which deals with exceptions
- Fixes TypeError in _leave_group_handler
- Remove _wrap_call_kazoo
- Add asynchronous API
- Delete models.py and clean get_members()
- Add a fake ZooKeeper driver
- Allow passing in a handler
- First commit of Tooz
- Added .gitreview