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

Thawan Kooburat commented on ZOOKEEPER-1558:
--------------------------------------------

Again, my concern is that the current solution would cause leader to be blocked 
taking the snapshot before starting to send ping to quorum members. If the 
snapshot taking time is larger than syncLimit, the quorum will tear down. You 
can simply simulate this situation by adding sleep which is longer that 
syncLimit into the new code where takeSnaphot() is called. 

If we agree that this is any issue, a simple fix is to create a method that 
take snapshot asynchronously (spin up a thread on demand similar to 
SyncRequestProcessor).  Some refactoring and additional locking may be needed 
as well in order to do this cleanly.  

> Leader should not snapshot uncommitted state
> --------------------------------------------
>
>                 Key: ZOOKEEPER-1558
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1558
>             Project: ZooKeeper
>          Issue Type: Sub-task
>          Components: quorum
>    Affects Versions: 3.4.6
>            Reporter: Flavio Junqueira
>            Assignee: Flavio Junqueira
>            Priority: Blocker
>             Fix For: 3.4.6
>
>         Attachments: ZOOKEEPER-1558.patch, ZOOKEEPER-1558.patch, 
> ZOOKEEPER-1558.patch, ZOOKEEPER-1558.patch
>
>
> Leader currently takes a snapshot when it calls loadData in the beginning of 
> the lead() method. The loaded data, however, may contain uncommitted state.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to