I don't have hard evidence for this, but I think the following is possible:
And somewhere in there an Expired event for sessionid "a" shuts down the cluster (I'm not sure if it matters when), leaving the cluster in a shutdown state indefinitely because onConnect() for sessionid "b" was tricked into skipping cluster setup.
I don't have hard evidence for this, but I think the following is possible:
SyncConnectedfor sessionid"a"onConnect()"a"joinCluster()zk.get().getSessionIdestablishes new session with sessionid"b"and returns"b"/<name>/nodes/<nodeID>created with connectionID"b", lifetime bound to sessionid"b"joinCluster(),onConnect(),SyncConnectedSyncConnectedfor sessionid"b"onConnect()previousZKSessionStillActive()previousZKSessionStillActive()uses session"b"to read/<name>/nodes/<nodeID>, finds connectionID"b", returnstrueonConnect()returns early, skipping cluster setupAnd somewhere in there an
Expiredevent for sessionid"a"shuts down the cluster (I'm not sure if it matters when), leaving the cluster in a shutdown state indefinitely becauseonConnect()for sessionid"b"was tricked into skipping cluster setup.