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) {