PHOENIX-2649 - GC/OOM during BulkLoad (Sergey Soldatov)

Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a82a0ff6
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a82a0ff6
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a82a0ff6

Branch: refs/heads/calcite
Commit: a82a0ff608f90c470a1290296f8ed08243956fc9
Parents: 7972422
Author: ravimagham <ravi.mag...@bazaarvoice.com>
Authored: Thu Feb 4 14:38:43 2016 -0800
Committer: ravimagham <ravi.mag...@bazaarvoice.com>
Committed: Thu Feb 4 14:38:43 2016 -0800

----------------------------------------------------------------------
 .../mapreduce/bulkload/TableRowkeyPair.java     | 38 +++++++++++++++++---
 .../mapreduce/bulkload/TestTableRowkeyPair.java |  6 ++--
 2 files changed, 37 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/a82a0ff6/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/bulkload/TableRowkeyPair.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/bulkload/TableRowkeyPair.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/bulkload/TableRowkeyPair.java
index e3032be..ac80341 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/bulkload/TableRowkeyPair.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/bulkload/TableRowkeyPair.java
@@ -22,7 +22,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
-import org.apache.hadoop.io.BytesWritable;
+import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.io.WritableComparable;
 import org.apache.hadoop.io.WritableComparator;
 import org.apache.hadoop.io.WritableUtils;
@@ -30,6 +30,7 @@ import org.apache.hadoop.io.WritableUtils;
 import com.google.common.base.Preconditions;
 
 
+
 /**
  * A WritableComparable to hold the table name and the rowkey.
  */
@@ -101,9 +102,38 @@ public class TableRowkeyPair implements 
WritableComparable<TableRowkeyPair> {
             return this.tableName.compareTo(otherTableName);
         }
     }
-    
-    static { 
-        WritableComparator.define(TableRowkeyPair.class, new 
BytesWritable.Comparator());
+
+    /** Comparator for <code>TableRowkeyPair</code>. */
+    public static class Comparator extends WritableComparator {
+
+        public Comparator() {
+            super(TableRowkeyPair.class);
+        }
+
+        @Override
+        public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int 
l2) {
+            try {
+                // Compare table names
+                int strL1 = readInt(b1, s1);
+                int strL2 = readInt(b2, s2);
+                int cmp = compareBytes(b1, s1 + Bytes.SIZEOF_INT, strL1, b2, 
s2 + Bytes.SIZEOF_INT, strL2);
+                if (cmp != 0) {
+                    return cmp;
+                }
+                // Compare row keys
+                int strL3 = readInt(b1, s1 + Bytes.SIZEOF_INT + strL1);
+                int strL4 = readInt(b2, s2 + Bytes.SIZEOF_INT + strL2);
+                int i = compareBytes(b1, s1 + Bytes.SIZEOF_INT*2 + strL1, 
strL3, b2, s2
+                        + Bytes.SIZEOF_INT*2 + strL2, strL4);
+                return i;
+            } catch(Exception ex) {
+                throw new IllegalArgumentException(ex);
+            }
+        }
+    }
+
+    static {
+        WritableComparator.define(TableRowkeyPair.class, new Comparator());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/a82a0ff6/phoenix-core/src/test/java/org/apache/phoenix/mapreduce/bulkload/TestTableRowkeyPair.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/test/java/org/apache/phoenix/mapreduce/bulkload/TestTableRowkeyPair.java
 
b/phoenix-core/src/test/java/org/apache/phoenix/mapreduce/bulkload/TestTableRowkeyPair.java
index 1fee4bb..2a29c00 100644
--- 
a/phoenix-core/src/test/java/org/apache/phoenix/mapreduce/bulkload/TestTableRowkeyPair.java
+++ 
b/phoenix-core/src/test/java/org/apache/phoenix/mapreduce/bulkload/TestTableRowkeyPair.java
@@ -23,7 +23,6 @@ import java.io.IOException;
 
 import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.io.BytesWritable;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -38,8 +37,9 @@ public class TestTableRowkeyPair {
         testsRowsKeys("first", "aa", "first", "ab", -1);
         testsRowsKeys("second", "aa", "first", "aa", 1);
         testsRowsKeys("first", "aa", "first", "aaa", -1);
+        testsRowsKeys("first","bb", "first", "aaaa", 1);
     }
-    
+
     private void testsRowsKeys(String aTable, String akey, String bTable, 
String bkey, int expectedSignum) throws IOException {
         
         final ImmutableBytesWritable arowkey = new 
ImmutableBytesWritable(Bytes.toBytes(akey));
@@ -48,7 +48,7 @@ public class TestTableRowkeyPair {
         ImmutableBytesWritable browkey = new 
ImmutableBytesWritable(Bytes.toBytes(bkey));
         TableRowkeyPair pair2 = new TableRowkeyPair(bTable, browkey);
         
-        BytesWritable.Comparator comparator = new BytesWritable.Comparator();
+        TableRowkeyPair.Comparator comparator = new 
TableRowkeyPair.Comparator();
         try( ByteArrayOutputStream baosA = new ByteArrayOutputStream();
              ByteArrayOutputStream baosB = new ByteArrayOutputStream()) {
             

Reply via email to