Return-Path: Delivered-To: apmail-hadoop-common-issues-archive@minotaur.apache.org Received: (qmail 72430 invoked from network); 11 Jan 2011 00:06:12 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 11 Jan 2011 00:06:12 -0000 Received: (qmail 39559 invoked by uid 500); 11 Jan 2011 00:06:12 -0000 Delivered-To: apmail-hadoop-common-issues-archive@hadoop.apache.org Received: (qmail 39430 invoked by uid 500); 11 Jan 2011 00:06:12 -0000 Mailing-List: contact common-issues-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-issues@hadoop.apache.org Delivered-To: mailing list common-issues@hadoop.apache.org Received: (qmail 39422 invoked by uid 99); 11 Jan 2011 00:06:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Jan 2011 00:06:12 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.22] (HELO thor.apache.org) (140.211.11.22) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Jan 2011 00:06:10 +0000 Received: from thor (localhost [127.0.0.1]) by thor.apache.org (8.13.8+Sun/8.13.8) with ESMTP id p0B05m8P023294 for ; Tue, 11 Jan 2011 00:05:48 GMT Message-ID: <9557670.270121294704348425.JavaMail.jira@thor> Date: Mon, 10 Jan 2011 19:05:48 -0500 (EST) From: "Doug Cutting (JIRA)" To: common-issues@hadoop.apache.org Subject: [jira] Commented: (HADOOP-6904) A baby step towards inter-version RPC communications MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HADOOP-6904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12979860#action_12979860 ] Doug Cutting 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 then I don't see that adding the interface name to the fingerprint function would change semantics. Or am I missing something? It might even simplify some things, e.g., if the client's protocol fingerprint incorporated its protocol interface name then the fingerprint alone might be used to lookup cached server fingerprints. Are there protocols where we don't intend to use service authentication, where clients don't provide the protocol interface name? If so, that might argue against using the interface name in the protocol fingerprint. Are there other reasons? In the latest patch, we might better use ConcurrentHashMap for the fingerprint cache. Also, we should probably mark the cache 'static final' and name it something like FINGERPRINT_CACHE. > 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 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.