[ https://issues.apache.org/jira/browse/ZOOKEEPER-2926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16322343#comment-16322343 ]
ASF GitHub Bot commented on ZOOKEEPER-2926: ------------------------------------------- Github user anmolnar commented on a diff in the pull request: https://github.com/apache/zookeeper/pull/447#discussion_r160976160 --- Diff: src/java/main/org/apache/zookeeper/server/quorum/LearnerSessionTracker.java --- @@ -102,32 +101,42 @@ public boolean isGlobalSession(long sessionId) { } public boolean addGlobalSession(long sessionId, int sessionTimeout) { + // no global session tracker, do nothing + return false; --- End diff -- Is it possible to throw UnsupportedOperationException instead? > 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 > Assignee: 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)