Repository: hbase
Updated Branches:
  refs/heads/master e1a6c9403 -> 0c304a049


HBASE-16283 Batch Append/Increment will always fail if set ReturnResults to 
false (Allan Yang)


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

Branch: refs/heads/master
Commit: 0c304a049bff130b971ef030746129cd6daaba7b
Parents: e1a6c94
Author: tedyu <yuzhih...@gmail.com>
Authored: Mon Oct 17 15:42:06 2016 -0700
Committer: tedyu <yuzhih...@gmail.com>
Committed: Mon Oct 17 15:42:06 2016 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/regionserver/HRegion.java      |  2 +-
 .../hadoop/hbase/client/TestFromClientSide.java | 26 +++++++++++++++++-
 .../client/TestIncrementsFromClientSide.java    | 29 +++++++++++++++++++-
 .../hbase/regionserver/TestAtomicOperation.java |  2 +-
 .../hbase/regionserver/wal/TestDurability.java  |  3 +-
 5 files changed, 57 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/0c304a04/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 ca92f06..2cf55b5 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
@@ -7256,7 +7256,7 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
         dropMemstoreContents();
       }
       // If results is null, then client asked that we not return the 
calculated results.
-      return results != null && returnResults? Result.create(results): null;
+      return results != null && returnResults? Result.create(results): 
Result.EMPTY_RESULT;
     } finally {
       // Call complete always, even on success. doDelta is doing a Get 
READ_UNCOMMITTED when it goes
       // to get current value under an exclusive lock so no need so no need to 
wait to return to

http://git-wip-us.apache.org/repos/asf/hbase/blob/0c304a04/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
index 6981a48..89841a9 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
@@ -4449,6 +4449,30 @@ public class TestFromClientSide {
   }
 
   @Test
+  public void testBatchAppendWithReturnResultFalse() throws Exception {
+    LOG.info("Starting testBatchAppendWithReturnResultFalse");
+    final TableName TABLENAME = TableName.valueOf("testBatchAppend");
+    Table table = TEST_UTIL.createTable(TABLENAME, FAMILY);
+    Append append1 = new Append(Bytes.toBytes("row1"));
+    append1.setReturnResults(false);
+    append1.add(FAMILY, Bytes.toBytes("f1"), Bytes.toBytes("value1"));
+    Append append2 = new Append(Bytes.toBytes("row1"));
+    append2.setReturnResults(false);
+    append2.add(FAMILY, Bytes.toBytes("f1"), Bytes.toBytes("value2"));
+    List<Append> appends = new ArrayList<>();
+    appends.add(append1);
+    appends.add(append2);
+    Object[] results = new Object[2];
+    table.batch(appends, results);
+    assertTrue(results.length == 2);
+    for(Object r : results) {
+      Result result = (Result)r;
+      assertTrue(result.isEmpty());
+    }
+    table.close();
+  }
+
+  @Test
   public void testAppend() throws Exception {
     LOG.info("Starting testAppend");
     final TableName TABLENAME = TableName.valueOf("testAppend");
@@ -4462,7 +4486,7 @@ public class TestFromClientSide {
     a.add(FAMILY, QUALIFIERS[0], v1);
     a.add(FAMILY, QUALIFIERS[1], v2);
     a.setReturnResults(false);
-    assertNullResult(t.append(a));
+    assertEmptyResult(t.append(a));
 
     a = new Append(ROW);
     a.add(FAMILY, QUALIFIERS[0], v2);

http://git-wip-us.apache.org/repos/asf/hbase/blob/0c304a04/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.java
index 3ddfef4..1c51177 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.java
@@ -19,10 +19,13 @@
 package org.apache.hadoop.hbase.client;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
@@ -177,6 +180,30 @@ public class TestIncrementsFromClientSide {
   }
 
   @Test
+  public void testBatchIncrementsWithReturnResultFalse() throws Exception {
+    LOG.info("Starting testBatchIncrementsWithReturnResultFalse");
+    final TableName TABLENAME = TableName.valueOf("testBatchAppend");
+    Table table = TEST_UTIL.createTable(TABLENAME, FAMILY);
+    Increment inc1 = new Increment(Bytes.toBytes("row2"));
+    inc1.setReturnResults(false);
+    inc1.addColumn(FAMILY, Bytes.toBytes("f1"), 1);
+    Increment inc2 = new Increment(Bytes.toBytes("row2"));
+    inc2.setReturnResults(false);
+    inc2.addColumn(FAMILY, Bytes.toBytes("f1"), 1);
+    List<Increment> incs = new ArrayList<>();
+    incs.add(inc1);
+    incs.add(inc2);
+    Object[] results = new Object[2];
+    table.batch(incs, results);
+    assertTrue(results.length == 2);
+    for(Object r : results) {
+      Result result = (Result)r;
+      assertTrue(result.isEmpty());
+    }
+    table.close();
+  }
+
+  @Test
   public void testIncrementInvalidArguments() throws Exception {
     LOG.info("Starting " + this.name.getMethodName());
     final TableName TABLENAME =
@@ -418,4 +445,4 @@ public class TestIncrementsFromClientSide {
   public static String filterStringSoTableNameSafe(final String str) {
     return str.replaceAll("\\[fast\\=(.*)\\]", ".FAST.is.$1");
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/hbase/blob/0c304a04/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 11bd280..8435b5a 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
@@ -132,7 +132,7 @@ public class TestAtomicOperation {
     a.setReturnResults(false);
     a.add(fam1, qual1, Bytes.toBytes(v1));
     a.add(fam1, qual2, Bytes.toBytes(v2));
-    assertNull(region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE));
+    assertTrue(region.append(a, HConstants.NO_NONCE, 
HConstants.NO_NONCE).isEmpty());
     a = new Append(row);
     a.add(fam1, qual1, Bytes.toBytes(v2));
     a.add(fam1, qual2, Bytes.toBytes(v1));

http://git-wip-us.apache.org/repos/asf/hbase/blob/0c304a04/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestDurability.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestDurability.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestDurability.java
index d6d4404..e6fbf36 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestDurability.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestDurability.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.regionserver.wal;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -238,7 +239,7 @@ public class TestDurability {
     inc1.setReturnResults(false);
     inc1.addColumn(FAMILY, col1, 1);
     Result res = region.increment(inc1);
-    assertNull(res);
+    assertTrue(res.isEmpty());
   }
 
   private Put newPut(Durability durability) {

Reply via email to