[ https://issues.apache.org/jira/browse/ZOOKEEPER-2926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16319086#comment-16319086 ]
ASF GitHub Bot commented on ZOOKEEPER-2926: ------------------------------------------- GitHub user lvfangmin opened a pull request: https://github.com/apache/zookeeper/pull/447 [ZOOKEEPER-2926] Fix potential data consistency issue due to the session management bug You can merge this pull request into a Git repository by running: $ git pull https://github.com/lvfangmin/zookeeper ZOOKEEPER-2926 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/zookeeper/pull/447.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #447 ---- commit 04ec15841c5d164f1212eea9cdfd02e10aa4478e Author: Fangmin Lyu <allenlyu@...> Date: 2018-01-09T06:58:32Z fix potential data consistency issue due to global session added too early ---- > Data inconsistency issue due to the flaw in the session management > ------------------------------------------------------------------ > > Key: ZOOKEEPER-2926 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2926 > Project: ZooKeeper > Issue Type: Bug > Components: server > Affects Versions: 3.5.3, 3.6.0 > Reporter: Fangmin Lv > Priority: Critical > > The local session upgrading feature will upgrade the session locally before > receving a quorum commit of creating global session. It's possible that the > server shutdown before the creating session request being sent to leader, if > we retained the ZKDatabase or there is Snapshot happened just before > shutdown, then only this server will have the global session. > If that server didn't become leader, then it will have more global sessions > than others, and those global sessions won't expire as the leader doesn't > know it's existence. If the server became leader, it will accept the client > renew session request and the client is allowed to create ephemeral nodes, > which means other servers only have ephemeral nodes but not that global > session. If there is follower going to have SNAP sync with it, then it will > also have the global session. If the server without that global session > becomes new leader, it will check and delete those dangling ephemeral node > before serving traffic. These could introduce the issues that the ephemeral > node being exist on some servers but not others. > There is dangling global session issue even without local session feature, > because on leader it will update the ZKDatabase when processing > ConnectionRequest and in the PrepRequestProcessor before it's quorum > committed, which also has this risk. -- This message was sent by Atlassian JIRA (v6.4.14#64029)