You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Csaba Miklos (Updated) (JIRA)" <ji...@apache.org> on 2012/02/28 01:13:52 UTC

[jira] [Updated] (HADOOP-7940) method clear() in org.apache.hadoop.io.Text does not work

     [ https://issues.apache.org/jira/browse/HADOOP-7940?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Csaba Miklos updated HADOOP-7940:
---------------------------------

    Labels: patch  (was: )
    Status: Patch Available  (was: Open)

Index: hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/Text.java
===================================================================
--- hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/Text.java	(revision 1294407)
+++ hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/Text.java	(working copy)
@@ -239,6 +239,7 @@
    */
   public void clear() {
     length = 0;
+    bytes = EMPTY_BYTES;
   }
 
   /*
Index: hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestText.java
===================================================================
--- hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestText.java	(revision 1294407)
+++ hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestText.java	(working copy)
@@ -192,6 +192,16 @@
     assertTrue(text.find("\u20ac", 5)==11);
   }
 
+  public void testClear() {
+	Text text = new Text();
+	assertEquals("", text.toString());
+	assertEquals(0, text.getBytes().length);
+	text = new Text("abcd\u20acbdcd\u20ac");
+	text.clear();
+	assertEquals("", text.toString());
+	assertEquals(0, text.getBytes().length);
+  }
+
   public void testFindAfterUpdatingContents() throws Exception {
     Text text = new Text("abcd");
     text.set("a".getBytes());

                
> method clear() in org.apache.hadoop.io.Text does not work
> ---------------------------------------------------------
>
>                 Key: HADOOP-7940
>                 URL: https://issues.apache.org/jira/browse/HADOOP-7940
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: io
>    Affects Versions: 0.20.205.0
>         Environment: Ubuntu, hadoop cloudera CDH3U2, Oracle SUN JDK 6U30
>            Reporter: Aaron,
>            Assignee: Csaba Miklos
>              Labels: patch
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> LineReader reader = new LineReader(in, 4096);
> ...
> Text text = new Text();
> while((reader.readLine(text)) > 0) {
>      ...
>      text.clear();
> }
> }
> Even the clear() method is called each time, some bytes are still not filled as zero.
> So, when reader.readLine(text) is called in a loop, some bytes are dirty which was from last call.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira