Flavio Paiva Junqueira updated ZOOKEEPER-2:

    Attachment: patch-le-polish

This is a tentative patch to fix the problems pointed out on QuorumPeer and 

1- Makes logicalclock volatile;
2- Creates accessor methods for currentVote and state, and enforce their use;
3- Accessor methods are synchronized.


> Synchronization issues in QuorumPeer and FastLeader election
> ------------------------------------------------------------
>                 Key: ZOOKEEPER-2
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2
>             Project: Zookeeper
>          Issue Type: Bug
>          Components: leaderElection
>            Reporter: Benjamin Reed
>            Assignee: Flavio Paiva Junqueira
>         Attachments: patch-le-polish
> There are a couple of cases of member variables that need to be marked 
> volatile or surrounded in a synchronization block. A couple of examples are:
> * QuorumPeer state should be synchronous
> * currentVote in QuorumPeer is marked volatile, but when it's members are 
> often accessed individually as if they were in an atomic unit. Such code 
> should be changed to get a reference to the currentVote and they access 
> members through that reference.
> * It looks like logicalClock in FastLeaderElection should be volatile. It 
> should either be fixed or commented to explain why it doesn't need to be.

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