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 0d44ee9fc843..66952232a815 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 @@ -8021,7 +8021,7 @@ public Result append(Append mutate, long nonceGroup, long nonce) throws IOExcept this.metricsRegion.updateAppend(); } if (isFlushSize(this.addAndGetGlobalMemstoreSize(size))) requestFlush(); - return mutate.isReturnResults() ? Result.create(allKVs) : null; + return mutate.isReturnResults() ? Result.create(allKVs) : Result.EMPTY_RESULT; } private void preWALAppend(WALKey walKey, WALEdit walEdits) throws IOException { @@ -8261,7 +8261,7 @@ private Result doIncrement(Increment increment, long nonceGroup, long nonce) thr // Request a cache flush. Do it outside update lock. if (isFlushSize(this.addAndGetGlobalMemstoreSize(accumulatedResultSize))) requestFlush(); - return increment.isReturnResults() ? Result.create(allKVs) : null; + return increment.isReturnResults() ? Result.create(allKVs) : Result.EMPTY_RESULT; } /** 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 2e436c69f00f..5a0cd8a8f5ba 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 @@ -4763,6 +4763,30 @@ public void testRowMutation() throws Exception { } } + @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 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"); @@ -4778,7 +4802,7 @@ public void testAppend() throws Exception { 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); 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 cd59c44c79ed..0a7b4b9a73c0 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 @@ -20,12 +20,15 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.apache.commons.logging.Log; @@ -187,6 +190,30 @@ public void testIncrementingInvalidValue() throws Exception { } } + @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 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()); 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 cc5f5fcc388f..f2b12f1903e9 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 @@ -20,7 +20,6 @@ import static org.apache.hadoop.hbase.HBaseTestingUtility.fam2; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -131,7 +130,7 @@ public void testAppend() throws IOException { 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)); @@ -151,7 +150,7 @@ public void testAppendWithMultipleFamilies() throws IOException { a.setReturnResults(false); a.add(fam1, qual1, Bytes.toBytes(v1)); a.add(fam2, 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(fam2, qual2, Bytes.toBytes(v1)); 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 ba159cea1a01..aa3aa049ce2a 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 @@ -19,7 +19,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; @@ -220,7 +220,7 @@ public void testIncrementWithReturnResultsSetToFalse() throws Exception { inc1.setReturnResults(false); inc1.addColumn(FAMILY, col1, 1); Result res = region.increment(inc1); - assertNull(res); + assertTrue(res.isEmpty()); } private Put newPut(Durability durability) {