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

Henry Robinson commented on ZOOKEEPER-1521:
-------------------------------------------

Good catch. Here's what I notice in branch-3.3:

* {{Leader.java:240}} - the initial read timeout is set to {{syncLimit}} ticks, 
but the first thing we wait for is an ACK from the follower saying that it has 
got up-to-date, which should be subject to {{initLimit}}
* I also saw that in {{Learner.java:220}}, the connection should be established 
with {{initLimit}} as the connection timeout (this is not fixed in branch-3.4). 
However, because there's a retry loop, there's no guarantee that we will 
connect in less than initLimit or syncLimit. So {{initLimit}} is not a hard 
limit at all; but it isn't already for other reasons. 

In branch-3.4:

* {{LearnerHandler.java:336}} sets the initial timeout to {{initLimit}}, but 
never sets it back again after the ACK. And it should just be setting the 
timeout in {{Leader.java:254}} anyhow. 


                
> LearnerHandler initLimit/syncLimit problems specifying follower socket 
> timeout limits
> -------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-1521
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1521
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.4.3, 3.3.5, 3.5.0
>            Reporter: Patrick Hunt
>            Priority: Critical
>             Fix For: 3.3.6, 3.4.4, 3.5.0
>
>         Attachments: ZOOKEEPER-1521_br33.patch
>
>
> branch 3.3: The leader is expecting the follower to initialize in syncLimit 
> time rather than initLimit. In LearnerHandler run line 395 (branch33) we look 
> for the ack from the follower with a timeout of syncLimit.
> branch 3.4+: seems like ZOOKEEPER-1136 introduced a regression while 
> attempting to fix the problem. It sets the timeout as initLimit however it 
> never sets the timeout to syncLimit once the ack is received.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to