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.