[
https://issues.apache.org/jira/browse/HADOOP-5438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12693861#action_12693861
]
dhruba borthakur commented on HADOOP-5438:
------------------------------------------
1. You have to bump out the versionID number in ClientProtocol.
2. Please leave the original public method signatures in FileSystem.java as
they are (deprecate them). This is to ensure that existing apps do not break.
Then create a new create method signature and make the old methods invoke the
new create method internally.
3. And, of course, we would like a unit test that invokes the new create method
with all supported flags. One option would be to add a new method to
TestFileCreation.java.
> Merge FileSystem.create and FileSystem.append
> ---------------------------------------------
>
> Key: HADOOP-5438
> URL: https://issues.apache.org/jira/browse/HADOOP-5438
> Project: Hadoop Core
> Issue Type: Improvement
> Reporter: He Yongqiang
> Attachments: Hadoop-5438-2009-03-30.patch
>
>
> Currently, when a user wants to modify a file, the user first calls exists()
> to know if this file is already there. And then uses create() or append()
> according to whether the file exists or not.
> the code looks like:
> {code}
> FSDataOutputStream out_1 = null;
> if (fs.exists(path_1))
> out_1 = fs.append(path_1);
> else
> out_1 = fs.create(path_1);
> {code}
> . On the performace side,It involes two RPCs. On the easy-of-use side, it is
> not very convient in contrast to the traditional open interface.
> It will more complicate if there is a overwrite parameter specified. I donot
> know whether there is a bug about 'overwrite' in 0.19, some times it takes a
> long time for overwrite creates to reture. So i make the write file code with
> overwrite param works like:
> {code}
> boolean exists = fs.exists(name);
> if (overwrite) {
> if (exists)
> fs.delete(name, true);
> this.out = fs.create(name, overwrite, bufferSize, replication,
> blockSize, progress);
> this.currentRowID = 0;
> } else {
> if (!exists)
> this.out = fs.create(name, overwrite, bufferSize,
> replication, blockSize, progress);
> else
> this.out = fs.append(name, bufferSize, progress);
> {code}
> Some code statements there are really redundant and not needed, especialy
> with the delete(). But without deleting first, the overwrite takes a long
> time to reture.
> BTW, i will create another issue about the overwrite problem. If it is not a
> bug at all or a duplicate, someone please close it.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.