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

Jared Cantwell commented on ZOOKEEPER-906:
------------------------------------------

Some other small comments based on what I've seen so far with this project:

1. Are the changes to mt_adaptor still needed?
2. I think it can be restructured to remove the must_sleep bool and be more 
obvious whats going on.  The check that resets the index to 0 can happen all 
the time.  And then the two sleep conditions can be an if/else if, with a final 
else that does what the !must_sleep branch does now.
3. Changing 'zh->connect_index == zh->addrs_count' to 'zh->connect_index >= 
zh->addrs_count' may seem subtle, but there is a whole bug devoted to it, so 
this patch probably shouldn't change that.  See ZOOKEEPER-458.
4. Before this gets committed, i imagine its going to need a unittest or two.
5. Indentation should be 4 spaces.

> Improve C client connection reliability by making it sleep between reconnect 
> attempts as in Java Client
> -------------------------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-906
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-906
>             Project: Zookeeper
>          Issue Type: Improvement
>          Components: c client
>    Affects Versions: 3.3.1
>            Reporter: Radu Marin
>            Assignee: Radu Marin
>             Fix For: 3.4.0
>
>         Attachments: ZOOKEEPER-906.patch
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Currently, when a C client get disconnected, it retries a couple of hosts 
> (not all) with no delay between attempts and then if it doesn't succeed it 
> sleeps for 1/3 session expiration timeout period before trying again.
> In the worst case the disconnect event can occur after 2/3 of session 
> expiration timeout has past, and sleeping for even more 1/3 session timeout 
> will cause a session loss in most of the times.
> A better approach is to check all hosts but with random delay between 
> reconnect attempts. Also the delay must be independent of session timeout so 
> if we increase the session timeout we also increase the number of available 
> attempts.
> This improvement covers the case when the C client experiences network 
> problems for a short period of time and is not able to reach any zookeeper 
> hosts.
> Java client already uses this logic and works very good.

-- 
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