Hi ZooKeepers, I want to trace where Watcher.Event.KeeperState.Expired generated and it seems only generated when connect to server fails due to exceed session timeout.
Besides, I find code snippet in ClientCnxn as below void queueEvent(String clientPath, int err, Set<Watcher> materializedWatchers, EventType eventType) { KeeperState sessionState = KeeperState.SyncConnected; if (KeeperException.Code.SESSIONEXPIRED.intValue() == err || KeeperException.Code.CONNECTIONLOSS.intValue() == err) { sessionState = Event.KeeperState.Disconnected; } WatchedEvent event = new WatchedEvent(eventType, sessionState, clientPath); eventThread.queueEvent(event, materializedWatchers); } which seems a bit wried to me what we queue a Event.KeeperState.Disconnected on KeeperException.Code.SESSIONEXPIRED. Back to the question, how zookeeper discovers and triggers session expire event on session expired after connection established successfully? Best, tison.