You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2014/10/02 18:46:02 UTC

git commit: HBASE-12156 TableName cache doesn't used for once of valueOf methods (Andrey Stepachev)

Repository: hbase
Updated Branches:
  refs/heads/master 2c8f6b66c -> ff847978a


HBASE-12156 TableName cache doesn't used for once of valueOf methods (Andrey Stepachev)


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

Branch: refs/heads/master
Commit: ff847978ad9e8d01a66ad6327f924662a9b0d5e8
Parents: 2c8f6b6
Author: stack <st...@apache.org>
Authored: Thu Oct 2 09:45:02 2014 -0700
Committer: stack <st...@apache.org>
Committed: Thu Oct 2 09:45:57 2014 -0700

----------------------------------------------------------------------
 .../java/org/apache/hadoop/hbase/TableName.java |  2 +-
 .../apache/hadoop/hbase/util/TestTableName.java | 90 +++++++++++++++++++-
 2 files changed, 90 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/ff847978/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java
index eb0f7a9..802319e 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java
@@ -446,7 +446,7 @@ public final class TableName implements Comparable<TableName> {
     }
 
     for (TableName tn : tableCache) {
-      if (Arrays.equals(tn.getQualifier(), namespace) &&
+      if (Arrays.equals(tn.getQualifier(), qualifier) &&
           Arrays.equals(tn.getNamespace(), namespace)) {
         return tn;
       }

http://git-wip-us.apache.org/repos/asf/hbase/blob/ff847978/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestTableName.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestTableName.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestTableName.java
index 629e1ef..452cd62 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestTableName.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestTableName.java
@@ -17,6 +17,14 @@
  */
 package org.apache.hadoop.hbase.util;
 
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertSame;
 import static org.junit.Assert.fail;
 
 import org.apache.hadoop.hbase.testclassification.MiscTests;
@@ -91,5 +99,85 @@ public class TestTableName extends TestWatcher {
       }
     }
   }
-  
+
+  class Names {
+    String ns;
+    byte[] nsb;
+    String tn;
+    byte[] tnb;
+    String nn;
+    byte[] nnb;
+
+    Names(String ns, String tn) {
+      this.ns = ns;
+      nsb = ns.getBytes();
+      this.tn = tn;
+      tnb = tn.getBytes();
+      nn = this.ns + ":" + this.tn;
+      nnb = nn.getBytes();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) return true;
+      if (o == null || getClass() != o.getClass()) return false;
+
+      Names names = (Names) o;
+
+      if (!ns.equals(names.ns)) return false;
+      if (!tn.equals(names.tn)) return false;
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      int result = ns.hashCode();
+      result = 31 * result + tn.hashCode();
+      return result;
+    }
+  }
+
+  Names[] names = new Names[] {
+      new Names("n1", "n1"),
+      new Names("n2", "n2"),
+      new Names("table1", "table1"),
+      new Names("table2", "table2"),
+      new Names("table2", "table1"),
+      new Names("table1", "table2"),
+      new Names("n1", "table1"),
+      new Names("n1", "table1"),
+      new Names("n2", "table2"),
+      new Names("n2", "table2")
+  };
+
+  @Test
+  public void testValueOf() {
+
+    Map<String, TableName> inCache = new HashMap<>();
+    // fill cache
+    for (Names name : names) {
+      inCache.put(name.nn, TableName.valueOf(name.ns, name.tn));
+    }
+    for (Names name : names) {
+      assertSame(inCache.get(name.nn), validateNames(TableName.valueOf(name.ns, name.tn), name));
+      assertSame(inCache.get(name.nn), validateNames(TableName.valueOf(name.nsb, name.tnb), name));
+      assertSame(inCache.get(name.nn), validateNames(TableName.valueOf(name.nn), name));
+      assertSame(inCache.get(name.nn), validateNames(TableName.valueOf(name.nnb), name));
+      assertSame(inCache.get(name.nn), validateNames(TableName.valueOf(
+          ByteBuffer.wrap(name.nsb), ByteBuffer.wrap(name.tnb)), name));
+    }
+
+  }
+
+  private TableName validateNames(TableName expected, Names names) {
+    assertEquals(expected.getNameAsString(), names.nn);
+    assertArrayEquals(expected.getName(), names.nnb);
+    assertEquals(expected.getQualifierAsString(), names.tn);
+    assertArrayEquals(expected.getQualifier(), names.tnb);
+    assertEquals(expected.getNamespaceAsString(), names.ns);
+    assertArrayEquals(expected.getNamespace(), names.nsb);
+    return expected;
+  }
+
 }