You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2014/02/26 03:44:32 UTC

svn commit: r1571899 - in /hbase/trunk: hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java

Author: tedyu
Date: Wed Feb 26 02:44:31 2014
New Revision: 1571899

URL: http://svn.apache.org/r1571899
Log:
HBASE-10600 HTable#batch() should perform validation on empty Put


Modified:
    hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java

Modified: hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java?rev=1571899&r1=1571898&r2=1571899&view=diff
==============================================================================
--- hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java (original)
+++ hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java Wed Feb 26 02:44:31 2014
@@ -481,6 +481,12 @@ class AsyncProcess {
     NonceGenerator ng = this.hConnection.getNonceGenerator();
     for (Row r : rows) {
       posInList++;
+      if (r instanceof Put) {
+        Put put = (Put) r;
+        if (put.isEmpty()) {
+          throw new IllegalArgumentException("No columns to insert for #" + (posInList+1)+ " item");
+        }
+      }
       Action<Row> action = new Action<Row>(r, posInList);
       setNonce(ng, r, action);
       actions.add(action);

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java?rev=1571899&r1=1571898&r2=1571899&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java Wed Feb 26 02:44:31 2014
@@ -268,6 +268,30 @@ public class TestFromClientSide3 {
   }
 
   @Test
+  public void testHTableBatchWithEmptyPut() throws Exception {
+    HTable table = TEST_UTIL.createTable(
+      Bytes.toBytes("testHTableBatchWithEmptyPut"), new byte[][] { FAMILY });
+    try {
+      List actions = (List) new ArrayList();
+      Object[] results = new Object[2];
+      // create an empty Put
+      Put put1 = new Put(ROW);
+      actions.add(put1);
+      
+      Put put2 = new Put(ANOTHERROW);
+      put2.add(FAMILY, QUALIFIER, VALUE);
+      actions.add(put2);
+      
+      table.batch(actions, results);
+      fail("Empty Put should have failed the batch call");
+    } catch (IllegalArgumentException iae) {
+      
+    } finally {
+      table.close();
+    }
+  }
+  
+  @Test
   public void testHTableExistsMethodSingleRegionSingleGet() throws Exception {
 
     // Test with a single region table.