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

Kihwal Lee commented on HDFS-3453:
----------------------------------

A bit more on the incompatibility:

ClientProtocol and namenode still have the original method and implementation. 
So pre-1.0 clients can still talk to 1.0.x namenodes. The 1.0.x client, on the 
other hand, internally calls only the new method; The original create method is 
never called. Since pre-1.0 namenode does not understand this new method, 1.0 
clients cannot create files on pre-1.0 clusters. The patch makes client call 
the new method only when createParent is set to false. All others will be 
fulfilled by the original method.

The protocol-level incompatibility still exists, but that only manifests when 
the new file system level method, FileSystem#createNonRecursive(), is 
explicitly called. Normal use cases within hadoop do not use this method. 
Currently only SequenceFile#createWriter() calls it when caller specifically 
asks for it. This was added to support HBase. 

In summary, 1.0.x and pre-1.0 are incompatible, but become interoperable with 
this patch for most use cases. 
                
> HDFS does not use ClientProtocol in a backward-compatible way
> -------------------------------------------------------------
>
>                 Key: HDFS-3453
>                 URL: https://issues.apache.org/jira/browse/HDFS-3453
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: hdfs client
>    Affects Versions: 1.0.0
>            Reporter: Kihwal Lee
>            Assignee: Kihwal Lee
>             Fix For: 1.1.0
>
>         Attachments: hdfs-3453-branch-1.patch
>
>
> HDFS-617 was brought into branch-0.20-security/branch-1 to support 
> non-recursive create, along with HADOOP-6840 and HADOOP-6886. However, the 
> changes in HDFS was done in an incompatible way, making the client unusable 
> against older clusters, even when plain old create() is called. This is 
> because DFS now internally calls create() through the newly introduced 
> method. By simply changing how the methods are wired internally, we can 
> remove this limitation. We may eventually switch back to the approach in 
> HDFS-617 when the majority of users adopt branch-1 based releases.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to