Details
Description
There is a retry mechanism in RecoverableZooKeeper, but when the session expires, the whole ZooKeeperWatcher is recreated, hence the retry mechanism does not work in this case. This is why a sleep is needed in TestZooKeeper#testMasterSessionExpired: we need to wait for ZooKeeperWatcher to be recreated before using the connection.
This can happen in real life, it can happen when:
- master & zookeeper starts
- zookeeper connection is cut
- master enters the retry loop
- in the meantime the session expires
- the network comes back, the session is recreated
- the retries continues, but on the wrong object, hence fails.
Attachments
Attachments
Issue Links
- is related to
-
HBASE-5399 Cut the link between the client and the zookeeper ensemble
- Closed
-
HBASE-5572 KeeperException.SessionExpiredException management could be improved in Master
- Closed
- supercedes
-
HBASE-5572 KeeperException.SessionExpiredException management could be improved in Master
- Closed