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:58:18 GMT

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

Hairong Kuang commented on HADOOP-6904:

> Slight improvement to your design:
> If a new server knows that it is compatible with an older client then it should accept
the client's version.
> If the client is new then the decision can only be made on the client side. 

Sanjay, this is exactly what I did in my patch to HDFS-1335. Here is the algorithm for getProtocolVersion:

If client is old and server is new
  server checks compatibility. if not compatible, throws VersionIncompatibleException. Connection
  Otherwise, return server version; RPC client will throw a VersionMismatch. DFS client catches
VersionMismatch but ignores it because server is newer. Connection succeeds.

if client is newer and server is old
  server simply returns the server version;
  RPC client throws VersionMismatch. DFS client catches VersionMismatch and then performs
a compatibility check; If not compatible, throws VersionIncompatible and connection fails.
Otherwise, connection succeeds.

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

View raw message