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

The order of asynchronous setACL is not correct.

Add voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 3.4.8, 3.5.1
    • None
    • None
    • Linux Ubuntu
      Mac OS X

    Description

      Within a given client connection, the execution of commands on the ZooKeeper server is always ordered, as both synchronous and asynchronous commands are dispatched through queuePacket (directly or indirectly).

      In other words, Zookeeper guarantees sequential consistency: updates from a client will be applied in the order that they were sent.

      However, the order of asynchronous setACL is not correct on Ubuntu.
      When asynchronous setACL is called BEFORE another API is called, asynchronous setACL is applied AFTER another API.

      For example, if a client calls

      (1) asynchronous setACL to remove all permissions of node "/" and

      (2) synchronous create to create node "/a",
      synchronous create should fail, but it succeeds on Ubuntu.

      (We can see all permissions of node "/" are removed when the client calls getACL to node "/" after (2), so (1) is applied AFTER (2). If we call getACL between (1) and (2), the synchronous case works correctly but the asynchronous case still produces the bug.)

      The attached unit test reproduces this scenario. It fails on Linux Ubuntu but succeeds on Mac OS X. If used on a heavily loaded server on Mac OS, the test sometimes fails as well but only rarely.

      Attachments

        1. ZOOKEEPER-2439-WIP.patch
          9 kB
          Edward Ribeiro
        2. ZOOKEEPER-2439.patch
          5 kB
          Kazuaki Banzai

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            kazuakibanzai Kazuaki Banzai

            Dates

              Created:
              Updated:

              Slack

                Issue deployment