zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-2926) Data inconsistency issue due to the flaw in the session management
Date Tue, 09 Jan 2018 20:25:02 GMT

    [ 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:


    [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:


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

View raw message