CHANGES
=======

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
