Hi Ben, > Based on the pookeeper code (https://github.com/maguro/pookeeper), I've > implemented a version of kazoo that uses the wire protocol and is pure Python > (https://github.com/python-zk/kazoo/tree/pure-python). Speaking to Zookeeper > directly has been quite interesting. All the documentation assumes one uses > the C/Java libs, so what actually happens doesn't seem to be cleanly or > clearly defined anywhere beyond the implementations. Is there an actual spec > somewhere?
I don't think there is an official spec beyond the zookeeper.jute file. It would be very helpful if you can share what you have found implementing your python client. > One of the oddities of passing a bad auth packet (ie, saying 'asdfjasdf' > instead of 'digest'), is that Zookeeper returns an auth packet -4 with an > error header, and then drops the connections. In the state diagram, the > client is expected to 'end'. That's fine and all, my client happened to > reconnect the first time with the prior session id/password.... which was > still valid. Is this expected behavior? I think this is expected. ZooKeeper should not expire a session because of authentication failure. That would make it easier for a malicious client to expire random sessions. I don't know if there is a technical reason for dropping the connection though. Maybe it was an arbitrary decision? --Michi
