You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by an...@apache.org on 2015/10/09 17:23:09 UTC

hbase git commit: HBASE-14525 Append and increment operation throws NullPointerException on non-existing column families.(Abhishek)

Repository: hbase
Updated Branches:
  refs/heads/master a77f83019 -> 79607bd9f


HBASE-14525 Append and increment operation throws NullPointerException on non-existing column families.(Abhishek)


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

Branch: refs/heads/master
Commit: 79607bd9f821618e25baea53a625aec1d7985bd8
Parents: a77f830
Author: anoopsjohn <an...@gmail.com>
Authored: Fri Oct 9 20:52:42 2015 +0530
Committer: anoopsjohn <an...@gmail.com>
Committed: Fri Oct 9 20:52:42 2015 +0530

----------------------------------------------------------------------
 .../hadoop/hbase/regionserver/HRegion.java      |  2 ++
 .../hbase/regionserver/TestAtomicOperation.java | 37 ++++++++++++++++++++
 2 files changed, 39 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/79607bd9/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
index 0e2e9a2..f8cbee21 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
@@ -6982,6 +6982,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
     Operation op = Operation.APPEND;
     byte[] row = mutate.getRow();
     checkRow(row, op.toString());
+    checkFamilies(mutate.getFamilyCellMap().keySet());
     boolean flush = false;
     Durability durability = getEffectiveDurability(mutate.getDurability());
     boolean writeToWAL = durability != Durability.SKIP_WAL;
@@ -7224,6 +7225,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
     Operation op = Operation.INCREMENT;
     byte [] row = mutation.getRow();
     checkRow(row, op.toString());
+    checkFamilies(mutation.getFamilyCellMap().keySet());
     boolean flush = false;
     Durability durability = getEffectiveDurability(mutation.getDurability());
     boolean writeToWAL = durability != Durability.SKIP_WAL;

http://git-wip-us.apache.org/repos/asf/hbase/blob/79607bd9/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java
index 3a77046..49f36d6 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java
@@ -134,6 +134,43 @@ public class TestAtomicOperation {
     assertEquals(0, Bytes.compareTo(Bytes.toBytes(v2+v1), result.getValue(fam1, qual2)));
   }
 
+  @Test
+  public void testAppendWithNonExistingFamily() throws IOException {
+    initHRegion(tableName, name.getMethodName(), fam1);
+    final String v1 = "Value";
+    final Append a = new Append(row);
+    a.add(fam1, qual1, Bytes.toBytes(v1));
+    a.add(fam2, qual2, Bytes.toBytes(v1));
+    Result result = null;
+    try {
+      result = region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);
+      fail("Append operation should fail with NoSuchColumnFamilyException.");
+    } catch (NoSuchColumnFamilyException e) {
+      assertEquals(null, result);
+    } catch (Exception e) {
+      fail("Append operation should fail with NoSuchColumnFamilyException.");
+    }
+  }
+
+  @Test
+  public void testIncrementWithNonExistingFamily() throws IOException {
+    initHRegion(tableName, name.getMethodName(), fam1);
+    final Increment inc = new Increment(row);
+    inc.addColumn(fam1, qual1, 1);
+    inc.addColumn(fam2, qual2, 1);
+    inc.setDurability(Durability.ASYNC_WAL);
+    try {
+      region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);
+    } catch (NoSuchColumnFamilyException e) {
+      final Get g = new Get(row);
+      final Result result = region.get(g);
+      assertEquals(null, result.getValue(fam1, qual1));
+      assertEquals(null, result.getValue(fam2, qual2));
+    } catch (Exception e) {
+      fail("Increment operation should fail with NoSuchColumnFamilyException.");
+    }
+  }
+
   /**
    * Test multi-threaded increments.
    */