CHANGES
- import zuul job settings from project-config
 
- Fix sphinx-docs job for stable branch
 
- Add doc/requirements.txt
 
1.48.2
- redis: fix concurrent access on acquire()
 
- Rewrite heartbeat runner with event
 
 
1.48.1
- Updated from global requirements
 
- Update .gitreview 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