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

CreateOption.doProtected uses null protectedId when applied via AsyncCreateBuilderImpl

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.0.1
    • 4.1.0
    • None
    • None

    Description

      When trying to apply "protection" to an async node-creation with
      CreateOption.doProtected, the protection is undermined because the node is created with protectionId = null.

      The AsyncCreateBuilderImpl does pass doProtected = true to the CreateBuilderImpl constructor. However, this constructor (incorrectly?) assigns protectedId = null, resulting in a node-prefix of _c_null- (because getProtectedPrefix does not validate that the provided protectedId is non-null). This entirely undermines the effectiveness of the protection.

          public CreateBuilderImpl(CuratorFrameworkImpl client, CreateMode createMode, Backgrounding backgrounding, boolean createParentsIfNeeded, boolean createParentsAsContainers, boolean doProtected, boolean compress, boolean setDataIfExists, List<ACL> aclList, Stat storingStat, long ttl)
          {
              this.client = client;
              this.createMode = createMode;
              this.backgrounding = backgrounding;
              this.createParentsIfNeeded = createParentsIfNeeded;
              this.createParentsAsContainers = createParentsAsContainers;
              this.doProtected = doProtected;
              this.compress = compress;
              this.setDataIfExists = setDataIfExists;
              protectedId = null;                     // *** incorrect if doProtected?! ***
              this.acling = new ACLing(client.getAclProvider(), aclList);
              this.storingStat = storingStat;
              this.ttl = ttl;
          }
      

      It looks to me as if that constructor should be assigning protectedId if doProtected is true.

      I wonder if the doProtected field should just be eliminated in favor a method that checks protectedId != null, to avoid this redundant encoding of intent?

      Attachments

        Issue Links

          Activity

            People

              randgalt Jordan Zimmerman
              joshng josh gruenberg
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: