You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "Cam McKenzie (Jira)" <ji...@apache.org> on 2020/06/03 03:37:00 UTC

[jira] [Commented] (CURATOR-570) Excessive calls to ZooKeeper.updateServerList (which can result in session death)

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