Return-Path: Delivered-To: apmail-hadoop-core-dev-archive@www.apache.org Received: (qmail 53628 invoked from network); 29 Jun 2008 22:14:07 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 29 Jun 2008 22:14:07 -0000 Received: (qmail 16746 invoked by uid 500); 29 Jun 2008 22:14:07 -0000 Delivered-To: apmail-hadoop-core-dev-archive@hadoop.apache.org Received: (qmail 16719 invoked by uid 500); 29 Jun 2008 22:14:07 -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 16706 invoked by uid 99); 29 Jun 2008 22:14:07 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 29 Jun 2008 15:14:07 -0700 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; Sun, 29 Jun 2008 22:13:24 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 1394D234C148 for ; Sun, 29 Jun 2008 15:13:45 -0700 (PDT) Message-ID: <747770120.1214777625065.JavaMail.jira@brutus> Date: Sun, 29 Jun 2008 15:13:45 -0700 (PDT) From: "Lukas Vlcek (JIRA)" To: core-dev@hadoop.apache.org Subject: [jira] Updated: (HADOOP-3665) WritableComparator newKey() fails for NullWritable In-Reply-To: <795637232.1214775705039.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-3665?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lukas Vlcek updated HADOOP-3665: -------------------------------- Attachment: HADOOP-3665.path Here is simple patch. Please review it! Still there are few questions/notes opened I think: 1) There is no clear way how to learn whether particular WritableComparator can be instantiated or not. There should be some new interface introduced for singletons. 2) It is not clear if key value can be of zero length. For NullWritable it make sense but it has nothing to do with the fact that it is a singleton I think. 3) I found other two classes implementing WritableComparable having private or protected constructor. These are ID and TaskID. Since they are both WritableComparable they may be used as a key (I can not tell if there is any point in such use case but technically it should be possible). This patch DOES NOT fixes such use case in any way. Giving these notes together I can see the following conclusion: Going forward it should be possible to learn if WritableComparable: a) can be used as a key b) can have zero length c) can be instantiated using constructor and if not then what is the way to get the instance. > WritableComparator newKey() fails for NullWritable > -------------------------------------------------- > > Key: HADOOP-3665 > URL: https://issues.apache.org/jira/browse/HADOOP-3665 > Project: Hadoop Core > Issue Type: Bug > Components: io > Affects Versions: 0.16.0, 0.16.1, 0.16.2, 0.16.3, 0.16.4, 0.17.0 > Environment: n/a > Reporter: Lukas Vlcek > Priority: Minor > Fix For: 0.19.0 > > Attachments: HADOOP-3665.path > > > It is not possible to use NullWritable as a key in order to suppress key value in output. > Syndrome exception: > Caused by: java.lang.IllegalAccessException: Class org.apache.hadoop.io.WritableComparator can not access a member of class org.apache.hadoop.io.NullWritable with modifiers "private" > The problem is that NullWritable is a singleton and does not provide public non-parametric constructor. The following code in WritableComparator causes the exception: return (WritableComparable)keyClass.newInstance(); > Proposed simple solution is to use ReflectionUtils instead (it requires modification as well). > This issue is probably related to HADOOP-2922 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.