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

Cam McKenzie commented on CURATOR-570:
--------------------------------------

[~ryarran], I was just taking a quick look at this. Maybe I'm missing 
something, but from my reading getNewConnectionString() will only return non 
null if the existing connection string is non null and the connection string 
provided by the ensemble is different from the existing connection string.
{code:java}
String getNewConnectionString()
{
    String helperConnectionString = (helper != null) ? 
helper.getConnectionString() : null;
    String ensembleProviderConnectionString = 
ensembleProvider.getConnectionString();
    return ((helperConnectionString != null) && 
!ensembleProviderConnectionString.equals(helperConnectionString)) ? 
ensembleProviderConnectionString : null;
}
{code}
and handleNewConnection only gets called if getNewConnectionString() returns a 
non null value.

 

> Excessive calls to ZooKeeper.updateServerList (which can result in session 
> death)
> ---------------------------------------------------------------------------------
>
>                 Key: CURATOR-570
>                 URL: https://issues.apache.org/jira/browse/CURATOR-570
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 4.2.0, 4.3.0
>            Reporter: Rhys Yarranton
>            Priority: Major
>
> On suspend and reconnect, Curator calls ZooKeeper.updateServerList via 
> ConnectionState.checkState --> ConnectionState.handleNewConnectionString.  In 
> addition, recipes may be triggered by this as well, and they too make calls 
> ZooKeeper.updateServerList via ConnectState.checkTimeouts --> 
> ConnectionState.handleNewConnectionString.
> This happens even though the connection string has not actually changed.
> Due to ZOOKEEPER-3825, this can cause the connection to be closed 
> immediately.  On its own this would be perceived as a glitch.  But due to the 
> Curator-induced calls, what we see is a cycle of SUSPENDED/RECONNECTED, until 
> eventually the session dies and a new session is recreated.
> Based on the source code (at time of writing), ZooKeeper.updateServerList is 
> not intended to be called frequently like this.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to