Return-Path: Delivered-To: apmail-hadoop-core-dev-archive@www.apache.org Received: (qmail 86563 invoked from network); 11 Feb 2009 21:50:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 11 Feb 2009 21:50:26 -0000 Received: (qmail 80064 invoked by uid 500); 11 Feb 2009 21:50:23 -0000 Delivered-To: apmail-hadoop-core-dev-archive@hadoop.apache.org Received: (qmail 80026 invoked by uid 500); 11 Feb 2009 21:50:23 -0000 Mailing-List: contact core-dev-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: core-dev@hadoop.apache.org Delivered-To: mailing list core-dev@hadoop.apache.org Received: (qmail 80010 invoked by uid 99); 11 Feb 2009 21:50:23 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Feb 2009 13:50:23 -0800 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.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Feb 2009 21:50:21 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id CAF8E234C4A7 for ; Wed, 11 Feb 2009 13:49:59 -0800 (PST) Message-ID: <865409711.1234388999830.JavaMail.jira@brutus> Date: Wed, 11 Feb 2009 13:49:59 -0800 (PST) From: "dhruba borthakur (JIRA)" To: core-dev@hadoop.apache.org Subject: [jira] Commented: (HADOOP-4707) Improvements to Hadoop Thrift bindings In-Reply-To: <27601025.1227303344296.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HADOOP-4707?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12672796#action_12672796 ] dhruba borthakur commented on HADOOP-4707: ------------------------------------------ > Would it make sense to open a new JIRA issue to implement the plugin functionality? Yes, please open a new JIRA to implement "export namenode/datanode functionality through a pluggable RPC layer". The component for this jira will be "dfs". You can submit the code for this new JIRA, get it vetted by the HDFS community and then commit to svn. After that is done, then we can work on getting this one (HADOOP-4707) commiited. You might need a separate unit test associated with this new JIRA. > Reading is by far more important to me than writing, and I could just do the writes using Java. I like this staged approach. I know that many would like to write to HDFS using Thrift, but with an eye to gettting this committed sooner, I would rather that we take it in steps. > was very helpful during development. Will it be possible to do a similar thing when the Thrift code moves back Yes, If you move the TestThriftServer code to src/contrib/thriftfs/test/org/apache/hadoop/thriftfs, that should be all that is required. > Improvements to Hadoop Thrift bindings > -------------------------------------- > > Key: HADOOP-4707 > URL: https://issues.apache.org/jira/browse/HADOOP-4707 > Project: Hadoop Core > Issue Type: Improvement > Components: contrib/thiftfs > Affects Versions: 0.20.0 > Environment: Tested under Linux x86-64 > Reporter: Carlos Valiente > Priority: Minor > Attachments: all.diff, BlockManager.java, build_xml.diff, DefaultBlockManager.java, DFSBlockManager.java, gen.diff, HADOOP-4707.diff, hadoopfs_thrift.diff, hadoopthriftapi.jar, HadoopThriftServer.java, HadoopThriftServer_java.diff, hdfs.py, hdfs_py_venky.diff, libthrift.jar, libthrift.jar > > > I have made the following changes to hadoopfs.thrift: > # Added namespaces for Python, Perl and C++. > # Renamed parameters and struct members to camelCase versions to keep them consistent (in particular FileStatus{blockReplication,blockSize} vs FileStatus.{block_replication,blocksize}). > # Renamed ThriftHadoopFileSystem to FileSystem. From the perspective of a Perl/Python/C++ user, 1) it is already clear that we're using Thrift, and 2) the fact that we're dealing with Hadoop is already explicit in the namespace. The usage of generated code is more compact and (in my opinion) clearer: > {quote} > *Perl*: > use HadoopFS; > my $client = HadoopFS::FileSystemClient->new(..); > _instead of:_ > my $client = HadoopFS::ThriftHadoopFileSystemClient->new(..); > *Python*: > from hadoopfs import FileSystem > client = FileSystem.Client(..) > _instead of_ > from hadoopfs import ThriftHadoopFileSystem > client = ThriftHadoopFileSystem.Client(..) > (See also the attached diff [^scripts_hdfs_py.diff] for the > new version of 'scripts/hdfs.py'). > *C++*: > hadoopfs::FileSystemClient client(..); > _instead of_: > hadoopfs::ThriftHadoopFileSystemClient client(..); > {quote} > # Renamed ThriftHandle to FileHandle: As in 3, it is clear that we're dealing with a Thrift object, and its purpose (to act as a handle for file operations) is clearer. > # Renamed ThriftIOException to IOException, to keep it simpler, and consistent with MalformedInputException. > # Added explicit version tags to fields of ThriftHandle/FileHandle, Pathname, MalformedInputException and ThriftIOException/IOException, to improve compatibility of existing clients with future versions of the interface which might add new fields to those objects (like stack traces for the exception types, for instance). > Those changes are reflected in the attachment [^hadoopfs_thrift.diff]. > Changes in generated Java, Python, Perl and C++ code are also attached in [^gen.diff]. They were generated by a Thrift checkout from trunk > ([http://svn.apache.org/repos/asf/incubator/thrift/trunk/]) as of revision > 719697, plus the following Perl-related patches: > * [https://issues.apache.org/jira/browse/THRIFT-190] > * [https://issues.apache.org/jira/browse/THRIFT-193] > * [https://issues.apache.org/jira/browse/THRIFT-199] > The Thrift jar file [^libthrift.jar] built from that Thrift checkout is also attached, since it's needed to run the Java Thrift server. > I have also added a new target to src/contrib/thriftfs/build.xml to build the Java bindings needed for org.apache.hadoop.thriftfs.HadoopThriftServer.java (see attachment [^build_xml.diff] and modified HadoopThriftServer.java to make use of the new bindings (see attachment [^HadoopThriftServer_java.diff]). > The jar file [^lib/hadoopthriftapi.jar] is also included, although it can be regenerated from the stuff under 'gen-java' and the new 'compile-gen' Ant target. > The whole changeset is also included as [^all.diff]. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.