[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13079095#comment-13079095
 ] 

Eugene Koontz commented on ZOOKEEPER-1144:
------------------------------------------

Thanks Vishal, hopefully this is the same problem with the same solution.

> ZooKeeperServer not starting on leader due to a race condition
> --------------------------------------------------------------
>
>                 Key: ZOOKEEPER-1144
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1144
>             Project: ZooKeeper
>          Issue Type: Bug
>    Affects Versions: 3.4.0
>            Reporter: Vishal Kher
>            Priority: Blocker
>             Fix For: 3.4.0
>
>
> I have found one problem that is causing QuorumPeerMainTest:testQuorum to 
> fail. This test uses 2 ZK servers. 
> The test is failing because leader is not starting ZooKeeperServer after 
> leader election. so everything halts.
> With the new changes, the server is now started in Leader.processAck() which 
> is called from LeaderHandler. processAck() starts ZooKeeperServer if majority 
> have acked NEWLEADER. The leader puts its ack in the the ackSet in 
> Leader.lead(). Since processAck() is called from LearnerHandler it can happen 
> that the learner's ack is processed before the leader is able to put its ack 
> in the ackSet. When LearnerHandler invokes processAck(), the ackSet for 
> newLeaderProposal will not have quorum (in this case 2). As a result, the 
> ZooKeeperServer is never started on the Leader.
> The leader needs to ensure that its ack is put in ackSet before starting 
> LearnerCnxAcceptor or invoke processAck() itself after adding to ackSet. I 
> haven't had time to go through the ZAB2 changes so I am not too familiar with 
> the code. Can Ben/Flavio fix this?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to