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

Session ids not preserved if EnsembleProvider has changed the ensemble

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 2.0.0-incubating
    • Fix Version/s: awaiting-response
    • Component/s: Client
    • Labels:
      None

      Description

      See https://github.com/Netflix/curator/issues/266

      InterProcessMutex, LeaderLatch, etc use an ephemeral node. If ZooKeeper gives a Disconnected event, the native client reconnects with the same session id, and the ephemeral node is preserved. If the ensemble changes at any point before a Disconnect, Curator's ConnectionState#checkState() calls handleNewConnectionString(), which constructs a new native ZK client, discarding the previous session id, and losing all locks.

      This can be expensive.

      Can ConnectionState be made to preserve the session id, or be more conservative about discarding the entire native client on a Disconnected event?

      Clarifications:

      An ensemble change (e.g. adding a new node to a cluster) does not mean that all session ids are now invalid. The next network glitch should not break locks.

      There is no assumption in this description that the reconfiguration and the glitch/disconnection were related - they need not be.

        Attachments

        1. CURATOR-7.patch.txt
          14 kB
          Mike Drob
        2. EnsembleProvider-zookeeper-3.5.x.patch
          13 kB
          Shevek

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                arren Shevek
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated: