Uploaded image for project: 'ZooKeeper'
  1. ZooKeeper
  2. ZOOKEEPER-1667

Watch event isn't handled correctly when a client reestablish to a server

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 3.3.6, 3.4.5
    • Fix Version/s: 3.4.6, 3.5.0
    • Component/s: server
    • Labels:
      None

      Description

      When a client reestablish to a server, it will send the watches which have not been triggered. But the code in DataTree does not handle it correctly.

      It is obvious, we just do not notice it

      scenario:
      1) Client a set a data watch on /d, then disconnect, client b delete /d and create it again. When client a reestablish to zk, it will receive a NodeCreated rather than a NodeDataChanged.
      2) Client a set a exists watch on /e(not exist), then disconnect, client b create /e. When client a reestablish to zk, it will receive a NodeDataChanged rather than a NodeCreated.

        Attachments

        1. ZOOKEEPER-1667.patch
          10 kB
          Jacky007
        2. ZOOKEEPER-1667-r34.patch
          10 kB
          Jacky007
        3. ZOOKEEPER-1667-b3.4.patch
          12 kB
          Flavio Junqueira
        4. ZOOKEEPER-1667-b3.4.patch
          13 kB
          Flavio Junqueira
        5. ZOOKEEPER-1667-trunk.patch
          13 kB
          Flavio Junqueira

          Issue Links

            Activity

              People

              • Assignee:
                fpj Flavio Junqueira
                Reporter:
                fanster.z Jacky007
              • Votes:
                1 Vote for this issue
                Watchers:
                13 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: