Flavio Paiva Junqueira updated ZOOKEEPER-480:

    Attachment: ZOOKEEPER-480.patch

* Adds a case to leader election to recover from a lost message when one single 
follower elects a leader, but the leader missed the new vote from the follower. 
This is not a really critical case because in practice the servers would just 
move to a new round of leader election, and the likelihood that this keeps 
happening forever is small;
* It adds a unit test that basically mocks a server to force a particular 
sequence and interleaving of messages;
* It makes some methods and variables public in QuorumCnxManager to enable the 
unit test to access them directly.

> FLE should perform leader check when node is not leading and add vote of 
> follower
> ---------------------------------------------------------------------------------
>                 Key: ZOOKEEPER-480
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-480
>             Project: Zookeeper
>          Issue Type: Bug
>            Reporter: Flavio Paiva Junqueira
>             Fix For: 3.2.1
>         Attachments: ZOOKEEPER-480.patch, ZOOKEEPER-480.patch
> As a server may join leader election while others have already elected a 
> leader, it is necessary that a server handles some special cases of leader 
> election when notifications are from servers that are either LEADING or 
> FOLLOWING. In such special cases, we check if we have received a message from 
> the leader to declare a leader elected. This check does not consider the case 
> that the process performing the check might be a recently elected leader, and 
> consequently the check fails.
> This patch also adds a new case, which corresponds to adding a vote to 
> recvset when the notification is from a process LEADING or FOLLOWING. This 
> fixes the case raised in ZOOKEEPER-475.

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

Reply via email to