Hello, I've got a question regarding the connectionloss exception thrown by Java. I've got an ensemble running with three zk servers. If one of the three servers is not running, the whole ensemble should still work (and it does, so that's fine). But in this situation I experience quite often a connectionloss exception and I'm wondering if I'm doing something wrong or if that's to be expected.
My Code is rather simple: I create a new connection to my ensemble using ZooKeeper zk = new ZooKeeper (connectString, timeOut, new MyWatcher ()); where connectString contains all three servers. Then I use the ZooKeeper to read data from a certain path: zk.getData (path, false, null); This call quite often returns an exception like org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /125/170/test But according to your documentation, the connectionloss exception should only occur in the following two cases: > 1. The application calls an operation on a session that is no longer > alive/valid This should not be the case, since I only just created the session. > 2. The ZooKeeper client disconnects from a server when there are pending > operations to that server, i.e., there is a pending asynchronous call. The should also not be the case. I was just doing a read request and no other client was accessing the ensemble. My only idea is that maybe the connection call first tried to connect to the zookeeper server that was not running (remember only two of the three servers are running) and before it had a chance to try to connect to one of the other servers, my getData call was made and failed with connectionloss. Could that be the reason? But I thought the connection handling was automatic and if a connection failed the client would automatically try any of the other listed servers without the user noticing!? Thanks for any help. Cheers, Michael -- Michael Bauland michael.baul...@knipp.de bauland.tel