| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
| |
the handler has stopped running (#549)
This avoids zombie thread to appear when creating and closing the client right after. A new unit case is added.
|
| |
|
|
|
|
| |
Accept kazoo<=2.5.0 KazooRetry 'max_jitter' argument and display a
warning for backward compatibility.
|
|
|
|
|
|
|
| |
This ensures that the watcher is removed from the client listener when the func given to ChildrenWatch returns False.
Previously, the watcher was never removed so the ChildrenWatch object would endlessly grow in memory. A unit test is added to ensure this case never happen again.
Fix #542
|
|
|
|
|
| |
In the case of a zookeeper server under pressure, it will typically try to maintain the quorum rather than handling client requests. In this kind of case, the quorum is maintained, the connection works, but the client is frozen there.
Retrying after a shorter timeout means we can reconnect to another server before losing the session altogether.
|
|
|
|
|
|
|
|
|
|
| |
fix(recipe): Fix memory leak of TreeCache recipe.
Fix memory leak on idle handler and on closed TreeCache.
Add new memory tests for TreeCache recipe that uses
objgraph and other tests for various handler on TreeCache.
Let TreeCache start in a safe way. The doc now suggest to
close unused TreeCache.
|
|\
| |
| | |
chore: 2.6.0 release and changelog
|
|/ |
|
|
|
|
|
|
|
|
|
| |
Previously, a gap between calls to `time.time()` could lead to a
situation where the current time was less than `end` during the
`while` condition, but it was greater than `end` when assigning
a value to `timeout_at`.
Add tests to ensure a socket.error is raised instead of passing a
nonpositive value as a timeout to socket.create_connection.
|
| |
|
|\
| |
| | |
Add "Reviewed by Hound" badge
|
|/ |
|
|
|
| |
* docs: make badges link to travis and pypi
|
| |
|
|
|
| |
Pypi quit offering download stats, so remove this broken badge.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Version of Zookeeper is upgraded from 3.5.2-alpha to 3.5.4-beta for automated tests.
Reconfig now needs superuser authentification, a test is added to cover this feature.
Additionnal configuration and jvm parameters can be added when initializing
ManagedZookeeper. This is needed to ensure reconfig's tests to pass and can be used
in the future for similar needs.
Closes #477
|
| |
|
|
|
|
|
|
|
|
|
| |
Fixes the bug introduced by PR #512 where it is not possible to
connect in RO mode using authentication. Since the SASL
authentification feature, the _session_fallback method should
be called only after the SASL authentification is done. A new
method is added to the ConnectionHandler class in order to
correctly use KeeperState.CONNECTED or KeeperState.CONNECTED_RO.
|
|
|
| |
It is possible to race between processing a new addAuth request(which updates the client.auth_data set) and iterating through it during reconnect. To avoid set changes during iteration, make a copy.
|
|
|
|
|
|
|
|
| |
This adds the possibility to connect to Zookeeper using DIGEST-MD5 SASL.
It uses the pure-sasl library to connect using SASL. In case the library
is missing, connection to Zookeeper will be done without any
authentification and a warning message will be displayed. Tests have
been added for this feature. Documentation also has been updated.
|
|
|
|
| |
Version of Zookeeper for automated tests is upgraded from 3.4.10 to 3.4.13.
|
|
|
|
|
|
|
|
|
|
| |
interval (#521)
The previous implementation would add a fixed amount of jitter around
the calculated back-off time. Retry attempts were thus clustered
around the exponentially spaced backoff points.
This patch does exponential backoff but uniformly spreads the retries
over an interval [0, backoff**attempt]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* client: Allow SSL use when communicating with Zookeeper, fixes #382
Zookeeper 3.5 supports SSL for client communications, this commit
adds support for it on the Kazoo side.
Note that you need to give the client the key, certificate and CA
files.
Co-Authored-By: Monty Taylor <mordred@inaugust.com>
* Added keyfile password for ssl connection
* Added a way to bypass ssl certification validation
* Added a timeout when using SSL connection
|
|
|
|
|
|
|
| |
Delete lock node if already entry already consumed
Fix #366
Related: #347 / #373
|
|\
| |
| | |
chore: 2.5.0 release and changelog
|
|/ |
|
|
|
|
|
| |
gevent.event.Timeout is undocumented and will break when using gevent 1.3b1+.
Use gevent.Timeout as suggested in gevent docs.
|
|
|
|
|
|
| |
Due to the use of unbound lambdas in AsyncResult, multiple callbacks
wouldn't actually get called, it would only call the final callback N
times, where N is the number of registered callbacks.
|
|
|
|
| |
fix a typo.
|
|
|
|
|
|
|
|
|
|
| |
Right now if the program taking the lock exits, the lock is also
released implicitly as the zk node is ephemeral. In some usecases
its desirable to make the lock release explicit. For example, in
scripting multiple programs that contend for a lock, or purposeful
failing lock acquirers to detect issues.
The ephemeral flag in acquire() allows for this behavior.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous implementation of session watcher triggers blocked operations.
If there is a huge tree in ZooKeeper, reconnecting event will lead an
initialized TreeCache into a bad performance state, because the connection
routine was blocked by the session watcher of TreeCache.
This commit put those blocked operations into a background queue to fix this.
There is an example code snippet:
from kazoo.client import KazooClient
from kazoo.recipe.cache import TreeCache
client = KazooClient()
client.start()
cache = TreeCache(client, '/a-huge-tree')
cache.start()
# Wait the cache be initialized and trigger a connection lost event.
client.get_children('/') # The connection is still broken
The patch of this commit has been used in the production environment of
https://github.com/eleme.
|
| |
|
|
|
|
| |
This commit lets TreeCache do not use queue of connection routine any more.
|
|
|
|
| |
Then every handlers have queue_impl and queue_empty as their attributes.
|
|
|
|
|
|
|
|
| |
Using exists will register a creation, as well as update and deletion
watch on the given node. This introduces a race, where the predecessor
node can get deleted between the call to getChildren() and exists().
If that happens, the exists() sets a create watch on a node that will
never be created, leaks a create watch.
|
|
|
| |
We instrument calls to async functions, but are unable to get the watch parameter because it is not being passed as part of kwargs. This will allow us to capture the watch parameter.
|
|
|
|
|
| |
fix(core): resolve race in IAsyncResult.wait()
closes #485
|
|\
| |
| | |
fix: need gevent >= 1.2, not > 1.1
|
|/
|
|
|
|
|
| |
Python 2.6 support was dropped in 1.2, so https://github.com/python-zk/kazoo/commit/2e8dcd3836d01640f07e8de911cdfb3639f97d20 simplified the dependency graph to require `gevent>1.1`. However, bugfix releases to the 1.1 series (1.1.1, etc) will satisfy this requirement, so we should actually be requiring `gevent >= 1.2`
Additionally, these requirements should be specified in setup.py as
well.
|
|\
| |
| | |
docs: Correctly document supported versions
|
|/
|
|
|
| |
Gevent support < 1.2 was dropped in https://github.com/python-zk/kazoo/commit/2e8dcd3836d01640f07e8de911cdfb3639f97d20 (and further tweaked in https://github.com/python-zk/kazoo/pull/483).
Travis already tests the Zookeeper 3.5 series.
|
|\
| |
| | |
docs: Add license to Wheel
|
|/
|
| |
https://wheel.readthedocs.io/en/stable/index.html#including-the-license-in-the-generated-wheel-file
|
|\
| |
| | |
fix: Remove use of "async" as a variable
|
|/
|
|
|
|
|
| |
The use of "async" and "await" as variable are deprecated in Python 3.7. This
patch removes the use of "async" (there is no usage of "await" to fix).
Closes #455
|
|\
| |
| | |
Drop python 2.6 compatible gevent
|
|/
|
|
| |
We dropped python 2.6 support a while ago, so no need for the added complexity here.
|