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.