You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "Jordan Zimmerman (JIRA)" <ji...@apache.org> on 2015/05/05 22:02:59 UTC
[jira] [Commented] (CURATOR-212) checkState will set a new
connection to old connected state
[ https://issues.apache.org/jira/browse/CURATOR-212?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14529173#comment-14529173 ]
Jordan Zimmerman commented on CURATOR-212:
------------------------------------------
Is there a test that shows this?
> checkState will set a new connection to old connected state
> -----------------------------------------------------------
>
> Key: CURATOR-212
> URL: https://issues.apache.org/jira/browse/CURATOR-212
> Project: Apache Curator
> Issue Type: Bug
> Components: Client
> Affects Versions: TBD
> Reporter: Flier Lu
> Priority: Minor
>
> consider the situation, after the EnsembleProvider changed the connection string, ConnectionState.process received a session event, which will invoke checkState to check whether the client is connected.
> {code}
> @Override
> public void process(WatchedEvent event)
> {
> //...
> boolean wasConnected = isConnected.get();
> boolean newIsConnected = wasConnected;
> if ( event.getType() == Watcher.Event.EventType.None )
> {
> newIsConnected = checkState(event.getState(), wasConnected);
> }
> if ( newIsConnected != wasConnected )
> {
> isConnected.set(newIsConnected);
> connectionStartMs = System.currentTimeMillis();
> }
> }
> {code}
> if the old connection state is SyncConnected or ConnectedReadOnly, isConnected will be set true, even the handleNewConnectionString() was invoked, and the state was reset to create a new connection.
> After checkState return, process will set the new connection to the old connected state.
> {code}
> if ( checkNewConnectionString && zooKeeper.hasNewConnectionString() )
> {
> isConnected = false; // force to set it
> handleNewConnectionString();
> }
> {code}
> We could force the state to disconnected when we found a new connection will be create.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)