You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Patrick Hunt (JIRA)" <ji...@apache.org> on 2009/11/17 23:48:40 UTC

[jira] Created: (ZOOKEEPER-583) on resync client should generate session expired exception if there is no server in cluster with acceptable zxid

on resync client should generate session expired exception if there is no server in cluster with acceptable zxid
----------------------------------------------------------------------------------------------------------------

                 Key: ZOOKEEPER-583
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-583
             Project: Zookeeper
          Issue Type: Bug
          Components: c client, java client
    Affects Versions: 3.2.1, 3.1.1
            Reporter: Patrick Hunt
             Fix For: 3.3.0


Both the c and java clients attempt to connect to a server in the cluster by iterating through
a randomized list of servers as listed in the connect string passed to the zookeeper_init (c)
or ZooKeeper constructor (java). The clients do this indefinitely, until successfully connecting
to a server or until the client is close()ed. Additionally if a client is disconnected from a server
it will attempt to reconnect to another server in the cluster, in this case it will only connect
to a server that has the same, or higher, zxid as seen by the client on the previous server that
it was connected to (this ensures that the client never sees old data).

In some weird cases (in particular where operators reset the server database, clearing out the
existing snapshots and txnlogs) existing clients will now see a much lower zxid (due to the
epoch number being reset) regardless of the server that the client attempts to connect to. In this
case the current client will iterate essentially forever.

Instead the client should throw session expired in this case (notify any watchers). After iterating
through all of the servers in the list, if none of the servers have an acceptable zxid the client
should expire the session and shut down the handle. This will ensure that the client will eventually
shutdown in this unusual, but possible (esp with server operators who don't also control the
clients) situation.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.