private static void createAndFailSilent(ZKWatcher zkw, CreateAndFailSilent cafs)
    throws KeeperException {
    CreateRequest create = (CreateRequest) toZooKeeperOp(zkw, cafs).toRequestRecord();
    String znode = create.getPath();
    RecoverableZooKeeper zk = zkw.getRecoverableZooKeeper();
    try {
      if (zk.exists(znode, false) == null) {
        zk.create(znode, create.getData(), create.getAcl(), CreateMode.fromFlag(create.getFlags()));
      }
    } catch (KeeperException.NodeExistsException nee) {
      // pass
    } catch (KeeperException.NoAuthException nee) {
      try {
        if (zk.exists(znode, false) == null) {
          // If we failed to create the file and it does not already exist.
          throw nee;
        }
      } catch (InterruptedException ie) {
        zkw.interruptedException(ie);
      }
    } catch (InterruptedException ie) {
      zkw.interruptedException(ie);
    }
  }
Creates the specified node containing specified data, iff the node does not exist. Does not set
a watch and fails silently if the node already exists. The node created is persistent and open
access.
@param zkw   zk reference
@param znode path of node
@param data  a byte array data to store in the znode
@throws KeeperException if unexpected zookeeper exception
hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java