You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Michi Mutsuzaki (JIRA)" <ji...@apache.org> on 2014/04/24 00:12:17 UTC

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

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-583?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michi Mutsuzaki updated ZOOKEEPER-583:
--------------------------------------

    Fix Version/s:     (was: 3.5.0)
                   3.6.0

> 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.1.1, 3.2.1
>            Reporter: Patrick Hunt
>             Fix For: 3.6.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 was sent by Atlassian JIRA
(v6.2#6252)