Extra checks in DFS.create() are not necessary.
-----------------------------------------------

                 Key: HADOOP-1910
                 URL: https://issues.apache.org/jira/browse/HADOOP-1910
             Project: Hadoop
          Issue Type: Bug
          Components: dfs
            Reporter: Raghu Angadi
            Priority: Minor



{{DistributedFileSystem.create(path)}} like this :
{code}
  public FSDataOutputStream create(Path f, boolean overwrite,
    int bufferSize, short replication, long blockSize,
    Progressable progress) throws IOException {
    if (exists(f) && !overwrite) {
      throw new IOException("File already exists:"+f);
    }
    Path parent = f.getParent();
    if (parent != null && !exists(parent) && !mkdirs(parent)) {
      throw new IOException("Mkdirs failed to create " + parent);
    }

    return new FSDataOutputStream( dfs.create(getPathName(f), overwrite, 
                                              replication, blockSize, 
                                              progress, bufferSize, ticket));
  }
{code}

This has overhead of 2-3 RPCs to namenode for every create(). The first 
{{exists()}} is not required because {{overwrite}} flag is passed to Namenode. 
The second {{exists()}} and {{mkdirs()}} is not required since {{create()}} 
already does this.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to