hadoop-common-issues mailing list archives

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

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

Hairong Kuang commented on HADOOP-6904:
---------------------------------------

> But the new client will get the "now such method" exception and will know that he is
talking to an older client. 
Sanjay I think you meant the old client will get the "no such method" exception and will know
he is talking to an older server.

Yes, this adds one more RPC and does not seem to be elegant. Furthermore,

If a protocol has a method x, if you add an improved version of x, called method y, to the
protocol. Later on add method an improved version of y, called method z,  a protocol. Both
changes do not bump version #. When a client failed on calling Z, it does not know it should
fail back to y or z.

I think bumping up version number is good, clearly indicating a change are made to a protocol.
It should be the application itself to decide how to deal with the change in a compatible
way.

> 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, rpcVersion1.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