Open rickrankin opened 4 years ago
Hi,
Thanks for this issue, I will try to reproduce it.
This is actually due to the new 4lw.commands.whitelist
configuration added in Zookeeper 3.5.3 (see the docs). By default only srvr
is whitelisted, but envi
is required to get the Zookeeper server version. Deploying your Zookeeper servers with 4lw.commands.whitelist=srvr, envi
will fix your issue.
I guess we can try to give a little more detail when the server_version()
fails (or try to parse the envi is not executed because it is not in the whitelist.
response the ZK server sent)
Thank you for investigating and pointing this out. We're coming from ZooKeeper 3.4, where this configuration item didn't exist. I've verified in our setup that whitelisting envi
prevents the exception from being thrown.
I agree that a better error message might have helped. I'm not sure it would be necessary to do any parsing on the underlying response message, though. Now that I see it, just forwarding it would, I think, have given me a pretty good starting point.
We are in the process of upgrading ZooKeeper from 3.4.6 to 3.6.1. Upon doing so, kazoo.client.KazooClient().server_version() now throws an exception when connected to a zookeeper instance running zookeeper-3.6.1. This previously returned a valid version tuple when connecting to zookeeper-3.4.6
The ZooKeeper servers have been verified to be running. Calls to other KazooClient methods are working as expected, and ZooKeeoer utilities such as
zkCli.sh
are working as expected. So far, onlyserver_version()
is misbehaving.Expected Behavior
KazooClient.server_version()
method returns a valid tuple containing the zookeeper server versionActual Behavior
A
KazooException
is thrown (see below).Snippet to Reproduce the Problem
Logs with logging in DEBUG mode
N/A
Specifications
pip list
command: