diff --git a/kazoo-2.2.1.tar.gz b/kazoo-2.2.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..5472a0197f28370e9304143be9d7ac50c2ec67d7 Binary files /dev/null and b/kazoo-2.2.1.tar.gz differ diff --git a/python-kazoo.spec b/python-kazoo.spec new file mode 100644 index 0000000000000000000000000000000000000000..83625e18a6a7fb6b146467ff9d975f2a4f1ffc8e --- /dev/null +++ b/python-kazoo.spec @@ -0,0 +1,2132 @@ +%global _empty_manifest_terminate_build 0 +Name: python-kazoo +Version: 2.2.1 +Release: 1 +Summary: Higher Level Zookeeper Client +License: Apache-2.0 +URL: https://kazoo.readthedocs.org +Source0: https://files.pythonhosted.org/packages/60/5c/210aa291f9b5be2d0424d512a04dea2f06db816f27289ad1080e267129ec/kazoo-2.2.1.tar.gz +BuildArch: noarch +%description +===== +Kazoo +===== + +.. image:: https://travis-ci.org/python-zk/kazoo.svg?branch=master + :target: https://travis-ci.org/python-zk/kazoo + :alt: Travis Build + +.. image:: https://img.shields.io/pypi/v/kazoo.svg + :target: https://pypi.python.org/pypi/kazoo/ + :alt: Latest Version + +.. image:: https://img.shields.io/pypi/dm/kazoo.svg + :target: https://pypi.python.org/pypi/kazoo/ + :alt: Downloads + +``kazoo`` implements a higher level API to `Apache Zookeeper`_ for Python +clients. + +See `the full docs`_ for more information. + +License +======= + +``kazoo`` is offered under the Apache License 2.0. + +Authors +======= + +``kazoo`` started under the `Nimbus Project`_ and through collaboration with +the open-source community has been merged with code from `Mozilla`_ and the +`Zope Corporation`_. It has since gathered an active community of over two +dozen contributors. + +.. _Apache Zookeeper: http://zookeeper.apache.org/ +.. _the full docs: http://kazoo.rtfd.org/ +.. _Nimbus Project: http://www.nimbusproject.org/ +.. _Zope Corporation: http://zope.com/ +.. _Mozilla: http://www.mozilla.org/ + + +Changelog +========= + +2.2.1 (2015-06-17) +------------------ + +Features +******** + +Bug Handling +************ +- handle NameError with basestring on py3k. + +Documentation +************* + +2.2 (2015-06-15) +---------------- + +Documentation +************* + +Features +******** + +- Issue #234: Add support for reconfig cluster membership operation + +Bug Handling +************ + +- #315: multiple acquires of a kazoo lock using the lock recipe would + block when using `acquire` even when non-blocking is specified (only + when the lock was/has been already acquired). +- #318: At exit register takes ``*args`` and ``**kwargs`` not args and kargs + +Documentation +************* + +2.1 (2015-05-11) +---------------- + +Features +******** + +- Start running tests against Zookeeper 3.5.0 alpha and explicitly configure + the `admin.serverPort` in tests to avoid port conflicts. The Zookeeper + alpha version is not yet officially supported. +- Integrate eventlet *handler* support into kazoo so that along with [gevent, + threading] handlers there can now be a dedicated eventlet handler for + projects that need to (or want to) use eventlet (such as those working + in the openstack community). The ``requirements_eventlet.txt`` file lists + the optional eventlet requirement(s) that needs to be satisfied when this + new handler is used. +- Use ``six`` to nicely handle the cross compatibility of kazoo with + python 2.x and 3.x (reducing/removing the need to have custom compatibility + code that replicates what six already provides). +- Add ``state_change_event`` to ``kazoo.recipe.partitioner.SetPartitioner`` + which is set on every state change. +- Add a NonBlockingLease recipe. The recipe allows e.g. cron jobs scheduled + on multiple machines to ensure that at most N instances will run a particular + job, with lease timeout for graceful handover in case of node failures. + + +Bug Handling +************ + +- #291: Kazoo lock recipe was only partially re-entrant in that multiple + calls to `acquire` would obtain the the lock but the first call to `release` + would remove the underlying lock. This would leave the X - 1 other `acquire` + statements unprotected (and no longer holding there expected lock). To fix + this the comment about that lock recipe being re-entrant has been removed + and multiple acquires will now block when attempted. + +- #78: Kazoo now uses socketpairs instead of pipes making it compatible with + Windows. + +- #144, #221: Let `client.command` work with IPv6 addresses. + +- #216: Fixed timeout for ConnectionHandler._invoke. + +- #261: Creating a sequential znode under / doesn't work. + +- #274: Add server_version() retries (by default 4 attempts will be made) to + better handle flakey responses. + +- #271: Fixed handling of KazooState.SUSPENDED in SetPartitioner. + +- #283: Fixed a race condition in SetPartitioner when party changes during + handling of lock acquisition. + +- #303: don't crash on random input as the hosts string. + +Documentation +************* + +- #222: Document that committed on the transaction is used to ensure only one + commit and is not an indicator of whether operations in the transaction + returned desired results. + +2.0 (2014-06-19) +---------------- + +Documentation +************* + +- Extend support to Python 3.4, deprecating Python 3.2. +- Issue #198: Mention Zake as a sophisticated kazoo mock testing library. +- Issue #181: Add documentation on basic logging setup. + + +2.0b1 (2014-04-24) +------------------ + +API Changes +*********** + +- Null or None data is no longer treated as "". Pull req #165, patch by + Raul Gutierrez S. This will affect how you should treat null data in a + znode vs. an empty string. +- Passing acl=[] to create() now works properly instead of an InvalidACLError + as it returned before. Patch by Raul Gutierrez S in PR #164. +- Removed the dependency on zope.interface. The classes in the interfaces + module are left for documentation purposes only (issue #131). + +Features +******** + +- Logging levels have been reduced. + + - Logging previously at the ``logging.DEBUG`` level is now logged at + the ``kazoo.loggingsupport.BLATHER`` level (5). + + - Some low-level logging previously at the ``logging.INFO`` level is + now logged at the ``logging.DEBUG`` level. + +- Issue #133: Introduce a new environment variable `ZOOKEEPER_PORT_OFFSET` + for the testing support, to run the testing cluster on a different range. + +Bug Handling +************ + +- When authenticating via add_auth() the auth data will be saved to ensure that + the authentication happens on reconnect (as is the case when feeding auth + data via KazooClient's constructor). PR #172, patch by Raul Gutierrez S. +- Change gevent import to remove deprecation warning when newer gevent is + used. PR #191, patch by Hiroaki Kawai. +- Lock recipe was failing to use the client's sleep_func causing issues with + gevent. Issue #150. +- Calling a DataWatch or ChildrenWatch instance twice (decorator) now throws + an exception as only a single function can be associated with a single + watcher. Issue #154. +- Another fix for atexit handling so that when disposing of connections the + atexit handler is removed. PR #190, patch by Devaev Maxim. +- Fix atexit handling for kazoo threading handler, PR #183. Patch by + Brian Wickman. +- Partitioner should handle a suspended connection properly and restore + an allocated state if it was allocated previously. Patch by Manish Tomar. +- Issue #167: Closing a client that was never started throws a type error. + Patch by Joshua Harlow. +- Passing dictionaries to KazooClient.__init__() wasn't actually working + properly. Patch by Ryan Uber. +- Issue #119: Handler timeout takes the max of the random interval or + the read timeout to ensure a negative number isn't used for the read + timeout. +- Fix ordering of exception catches in lock.acquire as it was capturing a + parent exception before the child. Patch by ReneSac. +- Fix issue with client.stop() not always setting the client state to + KeeperState.CLOSED. Patch by Jyrki Pulliainen in PR #174. +- Issue #169: Fixed pipes leaking into child processes. + +Documentation +************* + +- Add section on contributing recipes, add maintainer/status information for + existing recipes. +- Add note about alternate use of DataWatch. + +1.3.1 (2013-09-25) +------------------ + +Bug Handling +************ + +- #118, #125, #128: Fix unknown variable in KazooClient `command_retry` + argument handling. + +- #126: Fix `KazooRetry.copy` to correctly copy sleep function. + +- #118: Correct session/socket timeout conversion (int vs. float). + +Documentation +************* + +- #121: Add a note about `kazoo.recipe.queue.LockingQueue` requiring a + Zookeeper 3.4+ server. + + +1.3 (2013-09-05) +---------------- + +Features +******** + +- #115: Limit the backends we use for SLF4J during tests. + +- #112: Add IPv6 support. Patch by Dan Kruchinin. + +1.2.1 (2013-08-01) +------------------ + +Bug Handling +************ + +- Issue #108: Circular import fail when importing kazoo.recipe.watchers + directly has now been resolved. Watchers and partitioner properly import + the KazooState from kazoo.protocol.states rather than kazoo.client. +- Issue #109: Partials not usable properly as a datawatch call can now be + used. All funcs will be called with 3 args and fall back to 2 args if + there's an argument error. +- Issue #106, #107: `client.create_async` didn't strip change root from the + returned path. + +1.2 (2013-07-24) +---------------- + +Features +******** + +- KazooClient can now be stopped more reliably even if its in the middle + of a long retry sleep. This utilizes the new interrupt feature of + KazooRetry which lets the sleep be broken down into chunks and an + interrupt function called to determine if the retry should fail early. + +- Issue #62, #92, #89, #101, #102: Allow KazooRetry to have a + max deadline, transition properly when connection fails to LOST, and + setup separate connection retry behavior from client command retry + behavior. Patches by Mike Lundy. + +- Issue #100: Make it easier to see exception context in threading and + connection modules. + +- Issue #85: Increase information density of logs and don't prevent + dynamic reconfiguration of log levels at runtime. + +- Data-watchers for the same node are no longer 'stacked'. That is, if + a get and an exists call occur for the same node with the same watch + function, then it will be registered only once. This change results in + Kazoo behaving per Zookeeper client spec regarding repeat watch use. + +Bug Handling +************ + +- Issue #53: Throw a warning upon starting if the chroot path doesn't exist + so that it's more obvious when the chroot should be created before + performing more operations. + +- Kazoo previously would let the same function be registered as a data-watch + or child-watch multiple times, and then call it multiple times upon being + triggered. This was non-compliant Zookeeper client behavior, the same + watch can now only be registered once for the same znode path per Zookeeper + client documentation. + +- Issue #105: Avoid rare import lock problems by moving module imports in + client.py to the module scope. + +- Issue #103: Allow prefix-less sequential znodes. + +- Issue #98: Extend testing ZK harness to work with different file locations + on some versions of Debian/Ubuntu. + +- Issue #97: Update some docstrings to reflect current state of handlers. + +- Issue #62, #92, #89, #101, #102: Allow KazooRetry to have a + max deadline, transition properly when connection fails to LOST, and + setup separate connection retry behavior from client command retry + behavior. Patches by Mike Lundy. + +API Changes +*********** + +- The `kazoo.testing.harness.KazooTestHarness` class directly inherits from + `unittest.TestCase` and you need to ensure to call its `__init__` method. + +- DataWatch no longer takes any parameters besides for the optional function + during instantiation. The additional options are now implicitly True, with + the user being left to ignore events as they choose. See the DataWatch + API docs for more information. + +- Issue #99: Better exception raised when the writer fails to close. A + WriterNotClosedException that inherits from KazooException is now raised + when the writer fails to close in time. + +1.1 (2013-06-08) +---------------- + +Features +******** + +- Issue #93: Add timeout option to lock/semaphore acquire methods. + +- Issue #79 / #90: Add ability to pass the WatchedEvent to DataWatch and + ChildWatch functions. + +- Respect large client timeout values when closing the connection. + +- Add a `max_leases` consistency check to the semaphore recipe. + +- Issue #76: Extend testing helpers to allow customization of the Java + classpath by specifying the new `ZOOKEEPER_CLASSPATH` environment variable. + +- Issue #65: Allow non-blocking semaphore acquisition. + +Bug Handling +************ + +- Issue #96: Provide Windows compatibility in testing harness. + +- Issue #95: Handle errors deserializing connection response. + +- Issue #94: Clean up stray bytes in connection pipe. + +- Issue #87 / #88: Allow re-acquiring lock after cancel. + +- Issue #77: Use timeout in initial socket connection. + +- Issue #69: Only ensure path once in lock and semaphore recipes. + +- Issue #68: Closing the connection causes exceptions to be raised by watchers + which assume the connection won't be closed when running commands. + +- Issue #66: Require ping reply before sending another ping, otherwise the + connection will be considered dead and a ConnectionDropped will be raised + to trigger a reconnect. + +- Issue #63: Watchers weren't reset on lost connection. + +- Issue #58: DataWatcher failed to re-register for changes after non-existent + node was created then deleted. + +API Changes +*********** + +- KazooClient.create_async now supports the makepath argument. + +- KazooClient.ensure_path now has an async version, ensure_path_async. + +1.0 (2013-03-26) +---------------- + +Features +******** + +- Added a LockingQueue recipe. The queue first locks an item and removes it + from the queue only after the consume() method is called. This enables other + nodes to retake the item if an error occurs on the first node. + +Bug Handling +************ + +- Issue #50: Avoid problems with sleep function in mixed gevent/threading + setup. + +- Issue #56: Avoid issues with watch callbacks evaluating to false. + +1.0b1 (2013-02-24) +------------------ + +Features +******** + +- Refactored the internal connection handler to use a single thread. It now + uses a deque and pipe to signal the ZK thread that there's a new command to + send, so that the ZK thread can send it, or retrieve a response. + Processing ZK requests and responses serially in a single thread eliminates + the need for a bunch of the locking, the peekable queue and two threads + working on the same underlying socket. + +- Issue #48: Added documentation for the `retry` helper module. + +- Issue #55: Fix `os.pipe` file descriptor leak and introduce a + `KazooClient.close` method. The method is particular useful in tests, where + multiple KazooClients are created and closed in the same process. + +Bug Handling +************ + +- Issue #46: Avoid TypeError in GeneratorContextManager on process shutdown. + +- Issue #43: Let DataWatch return node data if allow_missing_node is used. + +0.9 (2013-01-07) +---------------- + +API Changes +*********** + +- When a retry operation ultimately fails, it now raises a + `kazoo.retry.RetryFailedError` exception, instead of a general `Exception` + instance. `RetryFailedError` also inherits from the base `KazooException`. + +Features +******** + +- Improvements to Debian packaging rules. + +Bug Handling +************ + +- Issue #39 / #41: Handle connection dropped errors during session writes. + Ensure client connection is re-established to a new ZK node if available. + +- Issue #38: Set `CLOEXEC` flag on all sockets when available. + +- Issue #37 / #40: Handle timeout errors during `select` calls on sockets. + +- Issue #36: Correctly set `ConnectionHandler.writer_stopped` even if an + exception is raised inside the writer, like a retry operation failing. + +0.8 (2012-10-26) +---------------- + +API Changes +*********** + +- The `KazooClient.__init__` took as `watcher` argument as its second keyword + argument. The argument had no effect anymore since version 0.5 and was + removed. + +Bug Handling +************ + +- Issue #35: `KazooClient.__init__` didn't pass on `retry_max_delay` to the + retry helper. + +- Issue #34: Be more careful while handling socket connection errors. + +0.7 (2012-10-15) +---------------- + +Features +******** + +- DataWatch now has a `allow_missing_node` setting that allows a watch to be + set on a node that doesn't exist when the DataWatch is created. +- Add new Queue recipe, with optional priority support. +- Add new Counter recipe. +- Added debian packaging rules. + +Bug Handling +************ + +- Issue #31 fixed: Only catch KazooExceptions in catch-all calls. +- Issue #15 fixed again: Force sleep delay to be a float to appease gevent. +- Issue #29 fixed: DataWatch and ChildrenWatch properly re-register their + watches on server disconnect. + +0.6 (2012-09-27) +---------------- + +API Changes +*********** + +- Node paths are assumed to be Unicode objects. Under Python 2 pure-ascii + strings will also be accepted. Node values are considered bytes. The byte + type is an alias for `str` under Python 2. +- New KeeperState.CONNECTED_RO state for Zookeeper servers connected in + read-only mode. +- New NotReadOnlyCallError exception when issuing a write change against a + server thats currently read-only. + +Features +******** + +- Add support for Python 3.2, 3.3 and PyPy (only for the threading handler). +- Handles connecting to Zookeeper 3.4+ read-only servers. +- Automatic background scanning for a Read/Write server when connected to a + server in read-only mode. +- Add new Semaphore recipe. +- Add a new `retry_max_delay` argument to the client and by default limit the + retry delay to at most an hour regardless of exponential backoff settings. +- Add new `randomize_hosts` argument to `KazooClient`, allowing one to disable + host randomization. + +Bug Handling +************ + +- Fix bug with locks not handling intermediary lock contenders disappearing. +- Fix bug with set_data type check failing to catch unicode values. +- Fix bug with gevent 0.13.x backport of peekable queue. +- Fix PatientChildrenWatch to use handler specific sleep function. + +0.5 (2012-09-06) +---------------- + +Skipping a version to reflect the magnitude of the change. Kazoo is now a pure +Python client with no C bindings. This release should run without a problem +on alternate Python implementations such as PyPy and Jython. Porting to Python +3 in the future should also be much easier. + +Documentation +************* + +- Docs have been restructured to handle the new classes and locations of the + methods from the pure Python refactor. + +Bug Handling +************ + +This change may introduce new bugs, however there is no longer the possibility +of a complete Python segfault due to errors in the C library and/or the C +binding. + +- Possible segfaults from the C lib are gone. +- Password mangling due to the C lib is gone. +- The party recipes didn't set their participating flag to False after + leaving. + +Features +******** + +- New `client.command` and `client.server_version` API, exposing Zookeeper's + four letter commands and giving access to structured version information. +- Added 'include_data' option for get_children to include the node's Stat + object. +- Substantial increase in logging data with debug mode. All correspondence with + the Zookeeper server can now be seen to help in debugging. + +API Changes +*********** + +- The testing helpers have been moved from `testing.__init__` into a + `testing.harness` module. The official API's of `KazooTestCase` and + `KazooTestHarness` can still be directly imported from `testing`. +- The kazoo.handlers.util module was removed. +- Backwards compatible exception class aliases are provided for now in kazoo + exceptions for the prior C exception names. +- Unicode strings now work fine for node names and are properly converted to + and from unicode objects. +- The data value argument for the create and create_async methods of the + client was made optional and defaults to an empty byte string. The data + value must be a byte string. Unicode values are no longer allowed and + will raise a TypeError. + + +0.3 (2012-08-23) +---------------- + +API Changes +*********** + +- Handler interface now has an rlock_object for use by recipes. + +Bug Handling +************ + +- Fixed password bug with updated zc-zookeeper-static release, which retains + null bytes in the password properly. +- Fixed reconnect hammering, so that the reconnection follows retry jitter and + retry backoff's. +- Fixed possible bug with using a threading.Condition in the set partitioner. + Set partitioner uses new rlock_object handler API to get an appropriate RLock + for gevent. +- Issue #17 fixed: Wrap timeout exceptions with staticmethod so they can be + used directly as intended. Patch by Bob Van Zant. +- Fixed bug with client reconnection looping indefinitely using an expired + session id. + +0.2 (2012-08-12) +---------------- + +Documentation +************* + +- Fixed doc references to start_async using an AsyncResult object, it uses + an Event object. + +Bug Handling +************ + +- Issue #16 fixed: gevent zookeeper logging failed to handle a monkey patched + logging setup. Logging is now setup such that a greenlet is used for logging + messages under gevent, and the thread one is used otherwise. +- Fixed bug similar to #14 for ChildrenWatch on the session listener. +- Issue #14 fixed: DataWatch had inconsistent handling of the node it was + watching not existing. DataWatch also properly spawns its _get_data function + to avoid blocking session events. +- Issue #15 fixed: sleep_func for SequentialGeventHandler was not set on the + class appropriately leading to additional arguments being passed to + gevent.sleep. +- Issue #9 fixed: Threads/greenlets didn't gracefully shut down. Handler now + has a start/stop that is used by the client when calling start and stop that + shuts down the handler workers. This addresses errors and warnings that could + be emitted upon process shutdown regarding a clean exit of the workers. +- Issue #12 fixed: gevent 0.13 doesn't use the same start_new_thread as gevent + 1.0 which resulted in a fully monkey-patched environment halting due to the + wrong thread. Updated to use the older kazoo method of getting the real thread + module object. + +API Changes +*********** + +- The KazooClient handler is now officially exposed as KazooClient.handler + so that the appropriate sync objects can be used by end-users. +- Refactored ChildrenWatcher used by SetPartitioner into a publicly exposed + PatientChildrenWatch under recipe.watchers. + +Deprecations +************ + +- connect/connect_async has been renamed to start/start_async to better match + the stop to indicate connection handling. The prior names are aliased for + the time being. + +Recipes +******* + +- Added Barrier and DoubleBarrier implementation. + +0.2b1 (2012-07-27) +------------------ + +Bug Handling +************ + +- ZOOKEEPER-1318: SystemError is caught and rethrown as the proper invalid + state exception in older zookeeper python bindings where this issue is still + valid. +- ZOOKEEPER-1431: Install the latest zc-zookeeper-static library or use the + packaged ubuntu one for ubuntu 12.04 or later. +- ZOOKEEPER-553: State handling isn't checked via this method, we track it in + a simpler manner with the watcher to ensure we know the right state. + +Features +******** + +- Exponential backoff with jitter for retrying commands. +- Gevent 0.13 and 1.0b support. +- Lock, Party, SetPartitioner, and Election recipe implementations. +- Data and Children watching API's. +- State transition handling with listener registering to handle session state + changes (choose to fatal the app on session expiration, etc.) +- Zookeeper logging stream redirected into Python logging channel under the + name 'Zookeeper'. +- Base client library with handler support for threading and gevent async + environments. + +%package -n python2-kazoo +Summary: Higher Level Zookeeper Client +Provides: python-kazoo +BuildRequires: python2-devel +BuildRequires: python2-setuptools +Requires: python2-six +Requires: python2-six +Requires: python2-coverage +Requires: python2-mock +Requires: python2-nose +Requires: python2-flake8 +Requires: python2-gevent +Requires: python2-eventlet +%description -n python2-kazoo +===== +Kazoo +===== + +.. image:: https://travis-ci.org/python-zk/kazoo.svg?branch=master + :target: https://travis-ci.org/python-zk/kazoo + :alt: Travis Build + +.. image:: https://img.shields.io/pypi/v/kazoo.svg + :target: https://pypi.python.org/pypi/kazoo/ + :alt: Latest Version + +.. image:: https://img.shields.io/pypi/dm/kazoo.svg + :target: https://pypi.python.org/pypi/kazoo/ + :alt: Downloads + +``kazoo`` implements a higher level API to `Apache Zookeeper`_ for Python +clients. + +See `the full docs`_ for more information. + +License +======= + +``kazoo`` is offered under the Apache License 2.0. + +Authors +======= + +``kazoo`` started under the `Nimbus Project`_ and through collaboration with +the open-source community has been merged with code from `Mozilla`_ and the +`Zope Corporation`_. It has since gathered an active community of over two +dozen contributors. + +.. _Apache Zookeeper: http://zookeeper.apache.org/ +.. _the full docs: http://kazoo.rtfd.org/ +.. _Nimbus Project: http://www.nimbusproject.org/ +.. _Zope Corporation: http://zope.com/ +.. _Mozilla: http://www.mozilla.org/ + + +Changelog +========= + +2.2.1 (2015-06-17) +------------------ + +Features +******** + +Bug Handling +************ +- handle NameError with basestring on py3k. + +Documentation +************* + +2.2 (2015-06-15) +---------------- + +Documentation +************* + +Features +******** + +- Issue #234: Add support for reconfig cluster membership operation + +Bug Handling +************ + +- #315: multiple acquires of a kazoo lock using the lock recipe would + block when using `acquire` even when non-blocking is specified (only + when the lock was/has been already acquired). +- #318: At exit register takes ``*args`` and ``**kwargs`` not args and kargs + +Documentation +************* + +2.1 (2015-05-11) +---------------- + +Features +******** + +- Start running tests against Zookeeper 3.5.0 alpha and explicitly configure + the `admin.serverPort` in tests to avoid port conflicts. The Zookeeper + alpha version is not yet officially supported. +- Integrate eventlet *handler* support into kazoo so that along with [gevent, + threading] handlers there can now be a dedicated eventlet handler for + projects that need to (or want to) use eventlet (such as those working + in the openstack community). The ``requirements_eventlet.txt`` file lists + the optional eventlet requirement(s) that needs to be satisfied when this + new handler is used. +- Use ``six`` to nicely handle the cross compatibility of kazoo with + python 2.x and 3.x (reducing/removing the need to have custom compatibility + code that replicates what six already provides). +- Add ``state_change_event`` to ``kazoo.recipe.partitioner.SetPartitioner`` + which is set on every state change. +- Add a NonBlockingLease recipe. The recipe allows e.g. cron jobs scheduled + on multiple machines to ensure that at most N instances will run a particular + job, with lease timeout for graceful handover in case of node failures. + + +Bug Handling +************ + +- #291: Kazoo lock recipe was only partially re-entrant in that multiple + calls to `acquire` would obtain the the lock but the first call to `release` + would remove the underlying lock. This would leave the X - 1 other `acquire` + statements unprotected (and no longer holding there expected lock). To fix + this the comment about that lock recipe being re-entrant has been removed + and multiple acquires will now block when attempted. + +- #78: Kazoo now uses socketpairs instead of pipes making it compatible with + Windows. + +- #144, #221: Let `client.command` work with IPv6 addresses. + +- #216: Fixed timeout for ConnectionHandler._invoke. + +- #261: Creating a sequential znode under / doesn't work. + +- #274: Add server_version() retries (by default 4 attempts will be made) to + better handle flakey responses. + +- #271: Fixed handling of KazooState.SUSPENDED in SetPartitioner. + +- #283: Fixed a race condition in SetPartitioner when party changes during + handling of lock acquisition. + +- #303: don't crash on random input as the hosts string. + +Documentation +************* + +- #222: Document that committed on the transaction is used to ensure only one + commit and is not an indicator of whether operations in the transaction + returned desired results. + +2.0 (2014-06-19) +---------------- + +Documentation +************* + +- Extend support to Python 3.4, deprecating Python 3.2. +- Issue #198: Mention Zake as a sophisticated kazoo mock testing library. +- Issue #181: Add documentation on basic logging setup. + + +2.0b1 (2014-04-24) +------------------ + +API Changes +*********** + +- Null or None data is no longer treated as "". Pull req #165, patch by + Raul Gutierrez S. This will affect how you should treat null data in a + znode vs. an empty string. +- Passing acl=[] to create() now works properly instead of an InvalidACLError + as it returned before. Patch by Raul Gutierrez S in PR #164. +- Removed the dependency on zope.interface. The classes in the interfaces + module are left for documentation purposes only (issue #131). + +Features +******** + +- Logging levels have been reduced. + + - Logging previously at the ``logging.DEBUG`` level is now logged at + the ``kazoo.loggingsupport.BLATHER`` level (5). + + - Some low-level logging previously at the ``logging.INFO`` level is + now logged at the ``logging.DEBUG`` level. + +- Issue #133: Introduce a new environment variable `ZOOKEEPER_PORT_OFFSET` + for the testing support, to run the testing cluster on a different range. + +Bug Handling +************ + +- When authenticating via add_auth() the auth data will be saved to ensure that + the authentication happens on reconnect (as is the case when feeding auth + data via KazooClient's constructor). PR #172, patch by Raul Gutierrez S. +- Change gevent import to remove deprecation warning when newer gevent is + used. PR #191, patch by Hiroaki Kawai. +- Lock recipe was failing to use the client's sleep_func causing issues with + gevent. Issue #150. +- Calling a DataWatch or ChildrenWatch instance twice (decorator) now throws + an exception as only a single function can be associated with a single + watcher. Issue #154. +- Another fix for atexit handling so that when disposing of connections the + atexit handler is removed. PR #190, patch by Devaev Maxim. +- Fix atexit handling for kazoo threading handler, PR #183. Patch by + Brian Wickman. +- Partitioner should handle a suspended connection properly and restore + an allocated state if it was allocated previously. Patch by Manish Tomar. +- Issue #167: Closing a client that was never started throws a type error. + Patch by Joshua Harlow. +- Passing dictionaries to KazooClient.__init__() wasn't actually working + properly. Patch by Ryan Uber. +- Issue #119: Handler timeout takes the max of the random interval or + the read timeout to ensure a negative number isn't used for the read + timeout. +- Fix ordering of exception catches in lock.acquire as it was capturing a + parent exception before the child. Patch by ReneSac. +- Fix issue with client.stop() not always setting the client state to + KeeperState.CLOSED. Patch by Jyrki Pulliainen in PR #174. +- Issue #169: Fixed pipes leaking into child processes. + +Documentation +************* + +- Add section on contributing recipes, add maintainer/status information for + existing recipes. +- Add note about alternate use of DataWatch. + +1.3.1 (2013-09-25) +------------------ + +Bug Handling +************ + +- #118, #125, #128: Fix unknown variable in KazooClient `command_retry` + argument handling. + +- #126: Fix `KazooRetry.copy` to correctly copy sleep function. + +- #118: Correct session/socket timeout conversion (int vs. float). + +Documentation +************* + +- #121: Add a note about `kazoo.recipe.queue.LockingQueue` requiring a + Zookeeper 3.4+ server. + + +1.3 (2013-09-05) +---------------- + +Features +******** + +- #115: Limit the backends we use for SLF4J during tests. + +- #112: Add IPv6 support. Patch by Dan Kruchinin. + +1.2.1 (2013-08-01) +------------------ + +Bug Handling +************ + +- Issue #108: Circular import fail when importing kazoo.recipe.watchers + directly has now been resolved. Watchers and partitioner properly import + the KazooState from kazoo.protocol.states rather than kazoo.client. +- Issue #109: Partials not usable properly as a datawatch call can now be + used. All funcs will be called with 3 args and fall back to 2 args if + there's an argument error. +- Issue #106, #107: `client.create_async` didn't strip change root from the + returned path. + +1.2 (2013-07-24) +---------------- + +Features +******** + +- KazooClient can now be stopped more reliably even if its in the middle + of a long retry sleep. This utilizes the new interrupt feature of + KazooRetry which lets the sleep be broken down into chunks and an + interrupt function called to determine if the retry should fail early. + +- Issue #62, #92, #89, #101, #102: Allow KazooRetry to have a + max deadline, transition properly when connection fails to LOST, and + setup separate connection retry behavior from client command retry + behavior. Patches by Mike Lundy. + +- Issue #100: Make it easier to see exception context in threading and + connection modules. + +- Issue #85: Increase information density of logs and don't prevent + dynamic reconfiguration of log levels at runtime. + +- Data-watchers for the same node are no longer 'stacked'. That is, if + a get and an exists call occur for the same node with the same watch + function, then it will be registered only once. This change results in + Kazoo behaving per Zookeeper client spec regarding repeat watch use. + +Bug Handling +************ + +- Issue #53: Throw a warning upon starting if the chroot path doesn't exist + so that it's more obvious when the chroot should be created before + performing more operations. + +- Kazoo previously would let the same function be registered as a data-watch + or child-watch multiple times, and then call it multiple times upon being + triggered. This was non-compliant Zookeeper client behavior, the same + watch can now only be registered once for the same znode path per Zookeeper + client documentation. + +- Issue #105: Avoid rare import lock problems by moving module imports in + client.py to the module scope. + +- Issue #103: Allow prefix-less sequential znodes. + +- Issue #98: Extend testing ZK harness to work with different file locations + on some versions of Debian/Ubuntu. + +- Issue #97: Update some docstrings to reflect current state of handlers. + +- Issue #62, #92, #89, #101, #102: Allow KazooRetry to have a + max deadline, transition properly when connection fails to LOST, and + setup separate connection retry behavior from client command retry + behavior. Patches by Mike Lundy. + +API Changes +*********** + +- The `kazoo.testing.harness.KazooTestHarness` class directly inherits from + `unittest.TestCase` and you need to ensure to call its `__init__` method. + +- DataWatch no longer takes any parameters besides for the optional function + during instantiation. The additional options are now implicitly True, with + the user being left to ignore events as they choose. See the DataWatch + API docs for more information. + +- Issue #99: Better exception raised when the writer fails to close. A + WriterNotClosedException that inherits from KazooException is now raised + when the writer fails to close in time. + +1.1 (2013-06-08) +---------------- + +Features +******** + +- Issue #93: Add timeout option to lock/semaphore acquire methods. + +- Issue #79 / #90: Add ability to pass the WatchedEvent to DataWatch and + ChildWatch functions. + +- Respect large client timeout values when closing the connection. + +- Add a `max_leases` consistency check to the semaphore recipe. + +- Issue #76: Extend testing helpers to allow customization of the Java + classpath by specifying the new `ZOOKEEPER_CLASSPATH` environment variable. + +- Issue #65: Allow non-blocking semaphore acquisition. + +Bug Handling +************ + +- Issue #96: Provide Windows compatibility in testing harness. + +- Issue #95: Handle errors deserializing connection response. + +- Issue #94: Clean up stray bytes in connection pipe. + +- Issue #87 / #88: Allow re-acquiring lock after cancel. + +- Issue #77: Use timeout in initial socket connection. + +- Issue #69: Only ensure path once in lock and semaphore recipes. + +- Issue #68: Closing the connection causes exceptions to be raised by watchers + which assume the connection won't be closed when running commands. + +- Issue #66: Require ping reply before sending another ping, otherwise the + connection will be considered dead and a ConnectionDropped will be raised + to trigger a reconnect. + +- Issue #63: Watchers weren't reset on lost connection. + +- Issue #58: DataWatcher failed to re-register for changes after non-existent + node was created then deleted. + +API Changes +*********** + +- KazooClient.create_async now supports the makepath argument. + +- KazooClient.ensure_path now has an async version, ensure_path_async. + +1.0 (2013-03-26) +---------------- + +Features +******** + +- Added a LockingQueue recipe. The queue first locks an item and removes it + from the queue only after the consume() method is called. This enables other + nodes to retake the item if an error occurs on the first node. + +Bug Handling +************ + +- Issue #50: Avoid problems with sleep function in mixed gevent/threading + setup. + +- Issue #56: Avoid issues with watch callbacks evaluating to false. + +1.0b1 (2013-02-24) +------------------ + +Features +******** + +- Refactored the internal connection handler to use a single thread. It now + uses a deque and pipe to signal the ZK thread that there's a new command to + send, so that the ZK thread can send it, or retrieve a response. + Processing ZK requests and responses serially in a single thread eliminates + the need for a bunch of the locking, the peekable queue and two threads + working on the same underlying socket. + +- Issue #48: Added documentation for the `retry` helper module. + +- Issue #55: Fix `os.pipe` file descriptor leak and introduce a + `KazooClient.close` method. The method is particular useful in tests, where + multiple KazooClients are created and closed in the same process. + +Bug Handling +************ + +- Issue #46: Avoid TypeError in GeneratorContextManager on process shutdown. + +- Issue #43: Let DataWatch return node data if allow_missing_node is used. + +0.9 (2013-01-07) +---------------- + +API Changes +*********** + +- When a retry operation ultimately fails, it now raises a + `kazoo.retry.RetryFailedError` exception, instead of a general `Exception` + instance. `RetryFailedError` also inherits from the base `KazooException`. + +Features +******** + +- Improvements to Debian packaging rules. + +Bug Handling +************ + +- Issue #39 / #41: Handle connection dropped errors during session writes. + Ensure client connection is re-established to a new ZK node if available. + +- Issue #38: Set `CLOEXEC` flag on all sockets when available. + +- Issue #37 / #40: Handle timeout errors during `select` calls on sockets. + +- Issue #36: Correctly set `ConnectionHandler.writer_stopped` even if an + exception is raised inside the writer, like a retry operation failing. + +0.8 (2012-10-26) +---------------- + +API Changes +*********** + +- The `KazooClient.__init__` took as `watcher` argument as its second keyword + argument. The argument had no effect anymore since version 0.5 and was + removed. + +Bug Handling +************ + +- Issue #35: `KazooClient.__init__` didn't pass on `retry_max_delay` to the + retry helper. + +- Issue #34: Be more careful while handling socket connection errors. + +0.7 (2012-10-15) +---------------- + +Features +******** + +- DataWatch now has a `allow_missing_node` setting that allows a watch to be + set on a node that doesn't exist when the DataWatch is created. +- Add new Queue recipe, with optional priority support. +- Add new Counter recipe. +- Added debian packaging rules. + +Bug Handling +************ + +- Issue #31 fixed: Only catch KazooExceptions in catch-all calls. +- Issue #15 fixed again: Force sleep delay to be a float to appease gevent. +- Issue #29 fixed: DataWatch and ChildrenWatch properly re-register their + watches on server disconnect. + +0.6 (2012-09-27) +---------------- + +API Changes +*********** + +- Node paths are assumed to be Unicode objects. Under Python 2 pure-ascii + strings will also be accepted. Node values are considered bytes. The byte + type is an alias for `str` under Python 2. +- New KeeperState.CONNECTED_RO state for Zookeeper servers connected in + read-only mode. +- New NotReadOnlyCallError exception when issuing a write change against a + server thats currently read-only. + +Features +******** + +- Add support for Python 3.2, 3.3 and PyPy (only for the threading handler). +- Handles connecting to Zookeeper 3.4+ read-only servers. +- Automatic background scanning for a Read/Write server when connected to a + server in read-only mode. +- Add new Semaphore recipe. +- Add a new `retry_max_delay` argument to the client and by default limit the + retry delay to at most an hour regardless of exponential backoff settings. +- Add new `randomize_hosts` argument to `KazooClient`, allowing one to disable + host randomization. + +Bug Handling +************ + +- Fix bug with locks not handling intermediary lock contenders disappearing. +- Fix bug with set_data type check failing to catch unicode values. +- Fix bug with gevent 0.13.x backport of peekable queue. +- Fix PatientChildrenWatch to use handler specific sleep function. + +0.5 (2012-09-06) +---------------- + +Skipping a version to reflect the magnitude of the change. Kazoo is now a pure +Python client with no C bindings. This release should run without a problem +on alternate Python implementations such as PyPy and Jython. Porting to Python +3 in the future should also be much easier. + +Documentation +************* + +- Docs have been restructured to handle the new classes and locations of the + methods from the pure Python refactor. + +Bug Handling +************ + +This change may introduce new bugs, however there is no longer the possibility +of a complete Python segfault due to errors in the C library and/or the C +binding. + +- Possible segfaults from the C lib are gone. +- Password mangling due to the C lib is gone. +- The party recipes didn't set their participating flag to False after + leaving. + +Features +******** + +- New `client.command` and `client.server_version` API, exposing Zookeeper's + four letter commands and giving access to structured version information. +- Added 'include_data' option for get_children to include the node's Stat + object. +- Substantial increase in logging data with debug mode. All correspondence with + the Zookeeper server can now be seen to help in debugging. + +API Changes +*********** + +- The testing helpers have been moved from `testing.__init__` into a + `testing.harness` module. The official API's of `KazooTestCase` and + `KazooTestHarness` can still be directly imported from `testing`. +- The kazoo.handlers.util module was removed. +- Backwards compatible exception class aliases are provided for now in kazoo + exceptions for the prior C exception names. +- Unicode strings now work fine for node names and are properly converted to + and from unicode objects. +- The data value argument for the create and create_async methods of the + client was made optional and defaults to an empty byte string. The data + value must be a byte string. Unicode values are no longer allowed and + will raise a TypeError. + + +0.3 (2012-08-23) +---------------- + +API Changes +*********** + +- Handler interface now has an rlock_object for use by recipes. + +Bug Handling +************ + +- Fixed password bug with updated zc-zookeeper-static release, which retains + null bytes in the password properly. +- Fixed reconnect hammering, so that the reconnection follows retry jitter and + retry backoff's. +- Fixed possible bug with using a threading.Condition in the set partitioner. + Set partitioner uses new rlock_object handler API to get an appropriate RLock + for gevent. +- Issue #17 fixed: Wrap timeout exceptions with staticmethod so they can be + used directly as intended. Patch by Bob Van Zant. +- Fixed bug with client reconnection looping indefinitely using an expired + session id. + +0.2 (2012-08-12) +---------------- + +Documentation +************* + +- Fixed doc references to start_async using an AsyncResult object, it uses + an Event object. + +Bug Handling +************ + +- Issue #16 fixed: gevent zookeeper logging failed to handle a monkey patched + logging setup. Logging is now setup such that a greenlet is used for logging + messages under gevent, and the thread one is used otherwise. +- Fixed bug similar to #14 for ChildrenWatch on the session listener. +- Issue #14 fixed: DataWatch had inconsistent handling of the node it was + watching not existing. DataWatch also properly spawns its _get_data function + to avoid blocking session events. +- Issue #15 fixed: sleep_func for SequentialGeventHandler was not set on the + class appropriately leading to additional arguments being passed to + gevent.sleep. +- Issue #9 fixed: Threads/greenlets didn't gracefully shut down. Handler now + has a start/stop that is used by the client when calling start and stop that + shuts down the handler workers. This addresses errors and warnings that could + be emitted upon process shutdown regarding a clean exit of the workers. +- Issue #12 fixed: gevent 0.13 doesn't use the same start_new_thread as gevent + 1.0 which resulted in a fully monkey-patched environment halting due to the + wrong thread. Updated to use the older kazoo method of getting the real thread + module object. + +API Changes +*********** + +- The KazooClient handler is now officially exposed as KazooClient.handler + so that the appropriate sync objects can be used by end-users. +- Refactored ChildrenWatcher used by SetPartitioner into a publicly exposed + PatientChildrenWatch under recipe.watchers. + +Deprecations +************ + +- connect/connect_async has been renamed to start/start_async to better match + the stop to indicate connection handling. The prior names are aliased for + the time being. + +Recipes +******* + +- Added Barrier and DoubleBarrier implementation. + +0.2b1 (2012-07-27) +------------------ + +Bug Handling +************ + +- ZOOKEEPER-1318: SystemError is caught and rethrown as the proper invalid + state exception in older zookeeper python bindings where this issue is still + valid. +- ZOOKEEPER-1431: Install the latest zc-zookeeper-static library or use the + packaged ubuntu one for ubuntu 12.04 or later. +- ZOOKEEPER-553: State handling isn't checked via this method, we track it in + a simpler manner with the watcher to ensure we know the right state. + +Features +******** + +- Exponential backoff with jitter for retrying commands. +- Gevent 0.13 and 1.0b support. +- Lock, Party, SetPartitioner, and Election recipe implementations. +- Data and Children watching API's. +- State transition handling with listener registering to handle session state + changes (choose to fatal the app on session expiration, etc.) +- Zookeeper logging stream redirected into Python logging channel under the + name 'Zookeeper'. +- Base client library with handler support for threading and gevent async + environments. + +%package help +Summary: Development documents and examples for kazoo +Provides: python2-kazoo-doc +%description help +===== +Kazoo +===== + +.. image:: https://travis-ci.org/python-zk/kazoo.svg?branch=master + :target: https://travis-ci.org/python-zk/kazoo + :alt: Travis Build + +.. image:: https://img.shields.io/pypi/v/kazoo.svg + :target: https://pypi.python.org/pypi/kazoo/ + :alt: Latest Version + +.. image:: https://img.shields.io/pypi/dm/kazoo.svg + :target: https://pypi.python.org/pypi/kazoo/ + :alt: Downloads + +``kazoo`` implements a higher level API to `Apache Zookeeper`_ for Python +clients. + +See `the full docs`_ for more information. + +License +======= + +``kazoo`` is offered under the Apache License 2.0. + +Authors +======= + +``kazoo`` started under the `Nimbus Project`_ and through collaboration with +the open-source community has been merged with code from `Mozilla`_ and the +`Zope Corporation`_. It has since gathered an active community of over two +dozen contributors. + +.. _Apache Zookeeper: http://zookeeper.apache.org/ +.. _the full docs: http://kazoo.rtfd.org/ +.. _Nimbus Project: http://www.nimbusproject.org/ +.. _Zope Corporation: http://zope.com/ +.. _Mozilla: http://www.mozilla.org/ + + +Changelog +========= + +2.2.1 (2015-06-17) +------------------ + +Features +******** + +Bug Handling +************ +- handle NameError with basestring on py3k. + +Documentation +************* + +2.2 (2015-06-15) +---------------- + +Documentation +************* + +Features +******** + +- Issue #234: Add support for reconfig cluster membership operation + +Bug Handling +************ + +- #315: multiple acquires of a kazoo lock using the lock recipe would + block when using `acquire` even when non-blocking is specified (only + when the lock was/has been already acquired). +- #318: At exit register takes ``*args`` and ``**kwargs`` not args and kargs + +Documentation +************* + +2.1 (2015-05-11) +---------------- + +Features +******** + +- Start running tests against Zookeeper 3.5.0 alpha and explicitly configure + the `admin.serverPort` in tests to avoid port conflicts. The Zookeeper + alpha version is not yet officially supported. +- Integrate eventlet *handler* support into kazoo so that along with [gevent, + threading] handlers there can now be a dedicated eventlet handler for + projects that need to (or want to) use eventlet (such as those working + in the openstack community). The ``requirements_eventlet.txt`` file lists + the optional eventlet requirement(s) that needs to be satisfied when this + new handler is used. +- Use ``six`` to nicely handle the cross compatibility of kazoo with + python 2.x and 3.x (reducing/removing the need to have custom compatibility + code that replicates what six already provides). +- Add ``state_change_event`` to ``kazoo.recipe.partitioner.SetPartitioner`` + which is set on every state change. +- Add a NonBlockingLease recipe. The recipe allows e.g. cron jobs scheduled + on multiple machines to ensure that at most N instances will run a particular + job, with lease timeout for graceful handover in case of node failures. + + +Bug Handling +************ + +- #291: Kazoo lock recipe was only partially re-entrant in that multiple + calls to `acquire` would obtain the the lock but the first call to `release` + would remove the underlying lock. This would leave the X - 1 other `acquire` + statements unprotected (and no longer holding there expected lock). To fix + this the comment about that lock recipe being re-entrant has been removed + and multiple acquires will now block when attempted. + +- #78: Kazoo now uses socketpairs instead of pipes making it compatible with + Windows. + +- #144, #221: Let `client.command` work with IPv6 addresses. + +- #216: Fixed timeout for ConnectionHandler._invoke. + +- #261: Creating a sequential znode under / doesn't work. + +- #274: Add server_version() retries (by default 4 attempts will be made) to + better handle flakey responses. + +- #271: Fixed handling of KazooState.SUSPENDED in SetPartitioner. + +- #283: Fixed a race condition in SetPartitioner when party changes during + handling of lock acquisition. + +- #303: don't crash on random input as the hosts string. + +Documentation +************* + +- #222: Document that committed on the transaction is used to ensure only one + commit and is not an indicator of whether operations in the transaction + returned desired results. + +2.0 (2014-06-19) +---------------- + +Documentation +************* + +- Extend support to Python 3.4, deprecating Python 3.2. +- Issue #198: Mention Zake as a sophisticated kazoo mock testing library. +- Issue #181: Add documentation on basic logging setup. + + +2.0b1 (2014-04-24) +------------------ + +API Changes +*********** + +- Null or None data is no longer treated as "". Pull req #165, patch by + Raul Gutierrez S. This will affect how you should treat null data in a + znode vs. an empty string. +- Passing acl=[] to create() now works properly instead of an InvalidACLError + as it returned before. Patch by Raul Gutierrez S in PR #164. +- Removed the dependency on zope.interface. The classes in the interfaces + module are left for documentation purposes only (issue #131). + +Features +******** + +- Logging levels have been reduced. + + - Logging previously at the ``logging.DEBUG`` level is now logged at + the ``kazoo.loggingsupport.BLATHER`` level (5). + + - Some low-level logging previously at the ``logging.INFO`` level is + now logged at the ``logging.DEBUG`` level. + +- Issue #133: Introduce a new environment variable `ZOOKEEPER_PORT_OFFSET` + for the testing support, to run the testing cluster on a different range. + +Bug Handling +************ + +- When authenticating via add_auth() the auth data will be saved to ensure that + the authentication happens on reconnect (as is the case when feeding auth + data via KazooClient's constructor). PR #172, patch by Raul Gutierrez S. +- Change gevent import to remove deprecation warning when newer gevent is + used. PR #191, patch by Hiroaki Kawai. +- Lock recipe was failing to use the client's sleep_func causing issues with + gevent. Issue #150. +- Calling a DataWatch or ChildrenWatch instance twice (decorator) now throws + an exception as only a single function can be associated with a single + watcher. Issue #154. +- Another fix for atexit handling so that when disposing of connections the + atexit handler is removed. PR #190, patch by Devaev Maxim. +- Fix atexit handling for kazoo threading handler, PR #183. Patch by + Brian Wickman. +- Partitioner should handle a suspended connection properly and restore + an allocated state if it was allocated previously. Patch by Manish Tomar. +- Issue #167: Closing a client that was never started throws a type error. + Patch by Joshua Harlow. +- Passing dictionaries to KazooClient.__init__() wasn't actually working + properly. Patch by Ryan Uber. +- Issue #119: Handler timeout takes the max of the random interval or + the read timeout to ensure a negative number isn't used for the read + timeout. +- Fix ordering of exception catches in lock.acquire as it was capturing a + parent exception before the child. Patch by ReneSac. +- Fix issue with client.stop() not always setting the client state to + KeeperState.CLOSED. Patch by Jyrki Pulliainen in PR #174. +- Issue #169: Fixed pipes leaking into child processes. + +Documentation +************* + +- Add section on contributing recipes, add maintainer/status information for + existing recipes. +- Add note about alternate use of DataWatch. + +1.3.1 (2013-09-25) +------------------ + +Bug Handling +************ + +- #118, #125, #128: Fix unknown variable in KazooClient `command_retry` + argument handling. + +- #126: Fix `KazooRetry.copy` to correctly copy sleep function. + +- #118: Correct session/socket timeout conversion (int vs. float). + +Documentation +************* + +- #121: Add a note about `kazoo.recipe.queue.LockingQueue` requiring a + Zookeeper 3.4+ server. + + +1.3 (2013-09-05) +---------------- + +Features +******** + +- #115: Limit the backends we use for SLF4J during tests. + +- #112: Add IPv6 support. Patch by Dan Kruchinin. + +1.2.1 (2013-08-01) +------------------ + +Bug Handling +************ + +- Issue #108: Circular import fail when importing kazoo.recipe.watchers + directly has now been resolved. Watchers and partitioner properly import + the KazooState from kazoo.protocol.states rather than kazoo.client. +- Issue #109: Partials not usable properly as a datawatch call can now be + used. All funcs will be called with 3 args and fall back to 2 args if + there's an argument error. +- Issue #106, #107: `client.create_async` didn't strip change root from the + returned path. + +1.2 (2013-07-24) +---------------- + +Features +******** + +- KazooClient can now be stopped more reliably even if its in the middle + of a long retry sleep. This utilizes the new interrupt feature of + KazooRetry which lets the sleep be broken down into chunks and an + interrupt function called to determine if the retry should fail early. + +- Issue #62, #92, #89, #101, #102: Allow KazooRetry to have a + max deadline, transition properly when connection fails to LOST, and + setup separate connection retry behavior from client command retry + behavior. Patches by Mike Lundy. + +- Issue #100: Make it easier to see exception context in threading and + connection modules. + +- Issue #85: Increase information density of logs and don't prevent + dynamic reconfiguration of log levels at runtime. + +- Data-watchers for the same node are no longer 'stacked'. That is, if + a get and an exists call occur for the same node with the same watch + function, then it will be registered only once. This change results in + Kazoo behaving per Zookeeper client spec regarding repeat watch use. + +Bug Handling +************ + +- Issue #53: Throw a warning upon starting if the chroot path doesn't exist + so that it's more obvious when the chroot should be created before + performing more operations. + +- Kazoo previously would let the same function be registered as a data-watch + or child-watch multiple times, and then call it multiple times upon being + triggered. This was non-compliant Zookeeper client behavior, the same + watch can now only be registered once for the same znode path per Zookeeper + client documentation. + +- Issue #105: Avoid rare import lock problems by moving module imports in + client.py to the module scope. + +- Issue #103: Allow prefix-less sequential znodes. + +- Issue #98: Extend testing ZK harness to work with different file locations + on some versions of Debian/Ubuntu. + +- Issue #97: Update some docstrings to reflect current state of handlers. + +- Issue #62, #92, #89, #101, #102: Allow KazooRetry to have a + max deadline, transition properly when connection fails to LOST, and + setup separate connection retry behavior from client command retry + behavior. Patches by Mike Lundy. + +API Changes +*********** + +- The `kazoo.testing.harness.KazooTestHarness` class directly inherits from + `unittest.TestCase` and you need to ensure to call its `__init__` method. + +- DataWatch no longer takes any parameters besides for the optional function + during instantiation. The additional options are now implicitly True, with + the user being left to ignore events as they choose. See the DataWatch + API docs for more information. + +- Issue #99: Better exception raised when the writer fails to close. A + WriterNotClosedException that inherits from KazooException is now raised + when the writer fails to close in time. + +1.1 (2013-06-08) +---------------- + +Features +******** + +- Issue #93: Add timeout option to lock/semaphore acquire methods. + +- Issue #79 / #90: Add ability to pass the WatchedEvent to DataWatch and + ChildWatch functions. + +- Respect large client timeout values when closing the connection. + +- Add a `max_leases` consistency check to the semaphore recipe. + +- Issue #76: Extend testing helpers to allow customization of the Java + classpath by specifying the new `ZOOKEEPER_CLASSPATH` environment variable. + +- Issue #65: Allow non-blocking semaphore acquisition. + +Bug Handling +************ + +- Issue #96: Provide Windows compatibility in testing harness. + +- Issue #95: Handle errors deserializing connection response. + +- Issue #94: Clean up stray bytes in connection pipe. + +- Issue #87 / #88: Allow re-acquiring lock after cancel. + +- Issue #77: Use timeout in initial socket connection. + +- Issue #69: Only ensure path once in lock and semaphore recipes. + +- Issue #68: Closing the connection causes exceptions to be raised by watchers + which assume the connection won't be closed when running commands. + +- Issue #66: Require ping reply before sending another ping, otherwise the + connection will be considered dead and a ConnectionDropped will be raised + to trigger a reconnect. + +- Issue #63: Watchers weren't reset on lost connection. + +- Issue #58: DataWatcher failed to re-register for changes after non-existent + node was created then deleted. + +API Changes +*********** + +- KazooClient.create_async now supports the makepath argument. + +- KazooClient.ensure_path now has an async version, ensure_path_async. + +1.0 (2013-03-26) +---------------- + +Features +******** + +- Added a LockingQueue recipe. The queue first locks an item and removes it + from the queue only after the consume() method is called. This enables other + nodes to retake the item if an error occurs on the first node. + +Bug Handling +************ + +- Issue #50: Avoid problems with sleep function in mixed gevent/threading + setup. + +- Issue #56: Avoid issues with watch callbacks evaluating to false. + +1.0b1 (2013-02-24) +------------------ + +Features +******** + +- Refactored the internal connection handler to use a single thread. It now + uses a deque and pipe to signal the ZK thread that there's a new command to + send, so that the ZK thread can send it, or retrieve a response. + Processing ZK requests and responses serially in a single thread eliminates + the need for a bunch of the locking, the peekable queue and two threads + working on the same underlying socket. + +- Issue #48: Added documentation for the `retry` helper module. + +- Issue #55: Fix `os.pipe` file descriptor leak and introduce a + `KazooClient.close` method. The method is particular useful in tests, where + multiple KazooClients are created and closed in the same process. + +Bug Handling +************ + +- Issue #46: Avoid TypeError in GeneratorContextManager on process shutdown. + +- Issue #43: Let DataWatch return node data if allow_missing_node is used. + +0.9 (2013-01-07) +---------------- + +API Changes +*********** + +- When a retry operation ultimately fails, it now raises a + `kazoo.retry.RetryFailedError` exception, instead of a general `Exception` + instance. `RetryFailedError` also inherits from the base `KazooException`. + +Features +******** + +- Improvements to Debian packaging rules. + +Bug Handling +************ + +- Issue #39 / #41: Handle connection dropped errors during session writes. + Ensure client connection is re-established to a new ZK node if available. + +- Issue #38: Set `CLOEXEC` flag on all sockets when available. + +- Issue #37 / #40: Handle timeout errors during `select` calls on sockets. + +- Issue #36: Correctly set `ConnectionHandler.writer_stopped` even if an + exception is raised inside the writer, like a retry operation failing. + +0.8 (2012-10-26) +---------------- + +API Changes +*********** + +- The `KazooClient.__init__` took as `watcher` argument as its second keyword + argument. The argument had no effect anymore since version 0.5 and was + removed. + +Bug Handling +************ + +- Issue #35: `KazooClient.__init__` didn't pass on `retry_max_delay` to the + retry helper. + +- Issue #34: Be more careful while handling socket connection errors. + +0.7 (2012-10-15) +---------------- + +Features +******** + +- DataWatch now has a `allow_missing_node` setting that allows a watch to be + set on a node that doesn't exist when the DataWatch is created. +- Add new Queue recipe, with optional priority support. +- Add new Counter recipe. +- Added debian packaging rules. + +Bug Handling +************ + +- Issue #31 fixed: Only catch KazooExceptions in catch-all calls. +- Issue #15 fixed again: Force sleep delay to be a float to appease gevent. +- Issue #29 fixed: DataWatch and ChildrenWatch properly re-register their + watches on server disconnect. + +0.6 (2012-09-27) +---------------- + +API Changes +*********** + +- Node paths are assumed to be Unicode objects. Under Python 2 pure-ascii + strings will also be accepted. Node values are considered bytes. The byte + type is an alias for `str` under Python 2. +- New KeeperState.CONNECTED_RO state for Zookeeper servers connected in + read-only mode. +- New NotReadOnlyCallError exception when issuing a write change against a + server thats currently read-only. + +Features +******** + +- Add support for Python 3.2, 3.3 and PyPy (only for the threading handler). +- Handles connecting to Zookeeper 3.4+ read-only servers. +- Automatic background scanning for a Read/Write server when connected to a + server in read-only mode. +- Add new Semaphore recipe. +- Add a new `retry_max_delay` argument to the client and by default limit the + retry delay to at most an hour regardless of exponential backoff settings. +- Add new `randomize_hosts` argument to `KazooClient`, allowing one to disable + host randomization. + +Bug Handling +************ + +- Fix bug with locks not handling intermediary lock contenders disappearing. +- Fix bug with set_data type check failing to catch unicode values. +- Fix bug with gevent 0.13.x backport of peekable queue. +- Fix PatientChildrenWatch to use handler specific sleep function. + +0.5 (2012-09-06) +---------------- + +Skipping a version to reflect the magnitude of the change. Kazoo is now a pure +Python client with no C bindings. This release should run without a problem +on alternate Python implementations such as PyPy and Jython. Porting to Python +3 in the future should also be much easier. + +Documentation +************* + +- Docs have been restructured to handle the new classes and locations of the + methods from the pure Python refactor. + +Bug Handling +************ + +This change may introduce new bugs, however there is no longer the possibility +of a complete Python segfault due to errors in the C library and/or the C +binding. + +- Possible segfaults from the C lib are gone. +- Password mangling due to the C lib is gone. +- The party recipes didn't set their participating flag to False after + leaving. + +Features +******** + +- New `client.command` and `client.server_version` API, exposing Zookeeper's + four letter commands and giving access to structured version information. +- Added 'include_data' option for get_children to include the node's Stat + object. +- Substantial increase in logging data with debug mode. All correspondence with + the Zookeeper server can now be seen to help in debugging. + +API Changes +*********** + +- The testing helpers have been moved from `testing.__init__` into a + `testing.harness` module. The official API's of `KazooTestCase` and + `KazooTestHarness` can still be directly imported from `testing`. +- The kazoo.handlers.util module was removed. +- Backwards compatible exception class aliases are provided for now in kazoo + exceptions for the prior C exception names. +- Unicode strings now work fine for node names and are properly converted to + and from unicode objects. +- The data value argument for the create and create_async methods of the + client was made optional and defaults to an empty byte string. The data + value must be a byte string. Unicode values are no longer allowed and + will raise a TypeError. + + +0.3 (2012-08-23) +---------------- + +API Changes +*********** + +- Handler interface now has an rlock_object for use by recipes. + +Bug Handling +************ + +- Fixed password bug with updated zc-zookeeper-static release, which retains + null bytes in the password properly. +- Fixed reconnect hammering, so that the reconnection follows retry jitter and + retry backoff's. +- Fixed possible bug with using a threading.Condition in the set partitioner. + Set partitioner uses new rlock_object handler API to get an appropriate RLock + for gevent. +- Issue #17 fixed: Wrap timeout exceptions with staticmethod so they can be + used directly as intended. Patch by Bob Van Zant. +- Fixed bug with client reconnection looping indefinitely using an expired + session id. + +0.2 (2012-08-12) +---------------- + +Documentation +************* + +- Fixed doc references to start_async using an AsyncResult object, it uses + an Event object. + +Bug Handling +************ + +- Issue #16 fixed: gevent zookeeper logging failed to handle a monkey patched + logging setup. Logging is now setup such that a greenlet is used for logging + messages under gevent, and the thread one is used otherwise. +- Fixed bug similar to #14 for ChildrenWatch on the session listener. +- Issue #14 fixed: DataWatch had inconsistent handling of the node it was + watching not existing. DataWatch also properly spawns its _get_data function + to avoid blocking session events. +- Issue #15 fixed: sleep_func for SequentialGeventHandler was not set on the + class appropriately leading to additional arguments being passed to + gevent.sleep. +- Issue #9 fixed: Threads/greenlets didn't gracefully shut down. Handler now + has a start/stop that is used by the client when calling start and stop that + shuts down the handler workers. This addresses errors and warnings that could + be emitted upon process shutdown regarding a clean exit of the workers. +- Issue #12 fixed: gevent 0.13 doesn't use the same start_new_thread as gevent + 1.0 which resulted in a fully monkey-patched environment halting due to the + wrong thread. Updated to use the older kazoo method of getting the real thread + module object. + +API Changes +*********** + +- The KazooClient handler is now officially exposed as KazooClient.handler + so that the appropriate sync objects can be used by end-users. +- Refactored ChildrenWatcher used by SetPartitioner into a publicly exposed + PatientChildrenWatch under recipe.watchers. + +Deprecations +************ + +- connect/connect_async has been renamed to start/start_async to better match + the stop to indicate connection handling. The prior names are aliased for + the time being. + +Recipes +******* + +- Added Barrier and DoubleBarrier implementation. + +0.2b1 (2012-07-27) +------------------ + +Bug Handling +************ + +- ZOOKEEPER-1318: SystemError is caught and rethrown as the proper invalid + state exception in older zookeeper python bindings where this issue is still + valid. +- ZOOKEEPER-1431: Install the latest zc-zookeeper-static library or use the + packaged ubuntu one for ubuntu 12.04 or later. +- ZOOKEEPER-553: State handling isn't checked via this method, we track it in + a simpler manner with the watcher to ensure we know the right state. + +Features +******** + +- Exponential backoff with jitter for retrying commands. +- Gevent 0.13 and 1.0b support. +- Lock, Party, SetPartitioner, and Election recipe implementations. +- Data and Children watching API's. +- State transition handling with listener registering to handle session state + changes (choose to fatal the app on session expiration, etc.) +- Zookeeper logging stream redirected into Python logging channel under the + name 'Zookeeper'. +- Base client library with handler support for threading and gevent async + environments. + +%prep +%autosetup -n kazoo-2.2.1 + +%build +%py2_build + +%install +%py2_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python2-kazoo -f filelist.lst +%{python2_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 12 2021 openstack-sig +- Package Spec generated