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 RPC communications
Date Tue, 11 Jan 2011 00:29:52 GMT

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

Hairong Kuang commented on HADOOP-6904:

> If the client must provide an interface name that the server then uses to identify the
set of methods to fingerprint.
Client must provide an interface name but the server may choose not to verify/choose it. This
decision simply makes the server implementation more flexible. getProtocolSignature is called
only once when the client connects to the server. I do not think we should scarifies flexibility
for performance.

Look at the unit test TestRPCCompatibility#TestImpl0 that I provide. It does not use the client
provided protocol name.
    public ProtocolSignature getProtocolSigature(String protocol,
        long clientVersion, int clientMethodsHashCode)
    throws IOException {
      Class<? extends VersionedProtocol> inter;
      try {
        inter = (Class<? extends VersionedProtocol>)getClass().getGenericInterfaces()[0];
      } catch (Exception e) {
        throw new IOException(e);
      return ProtocolSignature.getProtocolSignature(clientMethodsHashCode, getVersion(), inter);

> A baby step towards inter-version RPC communications
> ----------------------------------------------------
>                 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.23.0
>         Attachments: majorMinorVersion.patch, majorMinorVersion1.patch, rpcCompatible-trunk.patch,
rpcCompatible-trunk1.patch, rpcCompatible-trunk2.patch, rpcCompatible-trunk4.patch, rpcCompatible-trunk5.patch,
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