hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Doug Cutting (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-6904) A baby step towards inter-version communications between dfs client and NameNode
Date Fri, 06 Aug 2010 22:36:19 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-6904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12896178#action_12896178
] 

Doug Cutting commented on HADOOP-6904:
--------------------------------------

I think the long-term plan is to try to avoid version incompatibilities.  With Avro-based
RPC (HADOOP-6659) we could:
 - handle the addition of new parameters and fields with reasonable default values
 - handle changes to method semantics by adding new methods with the new semantics (eventually
perhaps removing the old methods).

We'd still need to be careful to design and test for back-compatibility, and only, e.g., make
sure new parameters and fields have good defaults, add new methods when semantics change,
and only remove an old method in a major release where we're willing to lose some back-compatibility.
 This approach might not need an explicit check of which versions are compatible, since Avro
could detect the missing method.

Unfortunately work on HADOOP-6659 has been stopped by a veto.

The approach you propose here could be useful until work on HADOOP-6659 is resumed, and may
be even useful afterwards, as it might permit more concise incompatibility errors.  It's not
a very large or complex change, so I don't see it creating a lot of risk or adding significant
maintenance costs.

> A baby step towards inter-version communications between dfs client and NameNode
> --------------------------------------------------------------------------------
>
>                 Key: HADOOP-6904
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6904
>             Project: Hadoop Common
>          Issue Type: New Feature
>          Components: ipc
>    Affects Versions: 0.22.0
>            Reporter: Hairong Kuang
>            Assignee: Hairong Kuang
>             Fix For: 0.22.0
>
>         Attachments: rpcVersion.patch
>
>
> Currently RPC communications in Hadoop is very strict. If a client has a different version
from that of the server, a VersionMismatched exception is thrown and the client can not connect
to the server. This force us to update both client and server all at once if a RPC protocol
is changed. But sometime different versions do not mean the client & server are not compatible.
It would be nice if we could relax this restriction and allows us to support inter-version
communications.
> My idea is that DfsClient catches VersionMismatched exception when it connects to NameNode.
It then checks if the client & the server is compatible. If yes, it sets the NameNode
version in the dfs client and allows the client to continue talking to NameNode. Otherwise,
rethrow the VersionMismatch exception.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message