Uploaded image for project: 'Apache Curator'
  1. Apache Curator
  2. CURATOR-212

checkState will set a new connection to old connected state

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • TBD
    • awaiting-response
    • Client
    • None
    • Patch

    Description

      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.

          @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();
              }
          }
      

      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.

              if ( checkNewConnectionString && zooKeeper.hasNewConnectionString() )
              {
                  isConnected = false; // force to set it
                  handleNewConnectionString();
              }
      

      We could force the state to disconnected when we found a new connection will be create.

      Attachments

        Activity

          People

            Unassigned Unassigned
            flier.lu Flier Lu
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: