[ 
https://issues.apache.org/jira/browse/HDFS-4340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13553054#comment-13553054
 ] 

Brandon Li commented on HDFS-4340:
----------------------------------

Thanks, Nicholas.

{quote}    The DFSOutputStream constructor for append does not set fileId. It 
would be great if we can change fileId to final. However, it may need some 
refactoring of the constructors.{quote}
Refactored the constructors and changed fileId to final.

{quote}    The DFSOutputStream constructor for create should not have an 
additional RPC call to namenode.getFileInfo(src). Change create(..) to return 
fileId (or HdfsFileStatus.){quote}
Modified create() to return HdfsFileStatus.

{quote}    With fileId, the source path is no longer needed for 
ClientProtocol.addBlock(..). Howw about using the src String parameter to pass 
fileId? The server side can determine whether it is a path or file id by the 
leading "/". This may be a wild suggestion. Please see if you think it is a 
good idea.{quote}
Overloading a parameter can be tricky. Using only fileId in addBlock() sounds 
better but currently we don't have the fileId to path mapping on NN. For now, 
let's keep both path and fileId, and consider removing path once we have the 
fileId->path map on NN. Does this sound ok to you? 

{quote}    Need to change WebHDFS to support file ID. This may be done in a 
separated JIRA.{quote}
Filed JIRA HDFS-4398 for the WebHDFS changes.

 {quote}   Before changing WebHDFS, add file_id to the other HdfsFileStatus 
constructor and then pass GRANDFATHER_INODE_ID in the caller.{quote}
Updated.

{quote}    Similarly, add file_id to HdfsLocatedFileStatus constructor. Then 
you don't have to add a new constructor.{quote}
Updated.

{quote}    It should not pass GRANDFATHER_INODE_ID in checkLease(..). The file 
id should be availabe for all cases. We need to add fileId to other RPC methods 
such as abandonBlock(..), complete(..), etc. Are you plan to do it 
separately?{quote}
Passing GRANDFATHER_INODE_ID in checkLease() only when the client is old client 
using obsolete addBlock() call. 
I plan to modify other rpc calls(except create) in a different JIRA.

{quote}    Why change SequentialNumber to public?{quote}
Class SequentialNumber is not changed. INodeId changed to public so protobuf 
classes can use GRANDFATHER_INODE_ID.

                
> Update addBlock() to inculde inode id as additional argument
> ------------------------------------------------------------
>
>                 Key: HDFS-4340
>                 URL: https://issues.apache.org/jira/browse/HDFS-4340
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: hdfs-client, namenode
>    Affects Versions: 3.0.0
>            Reporter: Brandon Li
>            Assignee: Brandon Li
>         Attachments: HDFS-4340.patch, HDFS-4340.patch, HDFS-4340.patch
>
>


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to