Author: stack
Date: Wed Jul  8 04:04:25 2009
New Revision: 792024

URL: http://svn.apache.org/viewvc?rev=792024&view=rev
Log:
HBASE-1625 Adding check to Put.add(KeyValue kv), to see that it has the same 
row as when instantiated

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/Put.java
    hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestPut.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=792024&r1=792023&r2=792024&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Wed Jul  8 04:04:25 2009
@@ -247,6 +247,8 @@
    HBASE-1616  Unit test of compacting referenced StoreFiles (Jon Gray via 
Stack)
    HBASE-1618  Investigate further into the MemStoreFlusher StoreFile limit
                (Jon Gray via Stack)
+   HBASE-1625  Adding check to Put.add(KeyValue kv), to see that it has the 
same
+               row as when instantiated (Erik Holstad via Stack)
 
   IMPROVEMENTS
    HBASE-1089  Add count of regions on filesystem to master UI; add percentage

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/Put.java
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/Put.java?rev=792024&r1=792023&r2=792024&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/Put.java 
(original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/Put.java Wed Jul 
 8 04:04:25 2009
@@ -144,12 +144,21 @@
    * Add the specified KeyValue to this Put operation.
    * @param kv
    */
-  public Put add(KeyValue kv) {
+  public Put add(KeyValue kv) throws IOException{
     byte [] family = kv.getFamily();
     List<KeyValue> list = familyMap.get(family);
     if(list == null) {
       list = new ArrayList<KeyValue>();
     }
+    //Checking that the row of the kv is the same as the put
+    int res = Bytes.compareTo(this.row, 0, row.length, 
+               kv.getBuffer(), kv.getRowOffset(), kv.getRowLength());
+    if(res != 0) {
+       throw new IOException("The row in the recently added KeyValue " + 
+                       Bytes.toStringBinary(kv.getBuffer(), kv.getRowOffset(), 
+                       kv.getRowLength()) + " doesn't match the original one " 
+ 
+                       Bytes.toStringBinary(this.row));
+    }
     list.add(kv);
     familyMap.put(family, list);
     return this;

Modified: 
hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestPut.java
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestPut.java?rev=792024&r1=792023&r2=792024&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestPut.java 
(original)
+++ hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestPut.java Wed 
Jul  8 04:04:25 2009
@@ -22,17 +22,11 @@
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Map;
 
 import org.apache.hadoop.hbase.HBaseClusterTestCase;
 import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.io.BatchUpdate;
-import org.apache.hadoop.hbase.io.Cell;
-import org.apache.hadoop.hbase.io.RowResult;
 import org.apache.hadoop.hbase.util.Bytes;
 
 /**
@@ -82,7 +76,6 @@
    * @throws IOException
    */
   public void testPut() throws IOException {
-    
     Put put = new Put(row1);
     put.add(CONTENTS_FAMILY, null, value);
     table.put(put);
@@ -198,5 +191,29 @@
     }
   }
   
+  public void testAddKeyValue() throws IOException {
+       byte [] qualifier = Bytes.toBytes("qf1");
+    Put put = new Put(row1);
+    
+    //Adding KeyValue with the same row
+    KeyValue kv = new KeyValue(row1, CONTENTS_FAMILY, qualifier, value);
+    boolean ok = true;
+    try {
+       put.add(kv);
+    } catch (IOException e) {
+       ok = false;
+    }
+    assertEquals(true, ok);
+    
+    //Adding KeyValue with the different row
+    kv = new KeyValue(row2, CONTENTS_FAMILY, qualifier, value);
+    ok = false;
+    try {
+       put.add(kv);
+    } catch (IOException e) {
+       ok = true;
+    }
+    assertEquals(true, ok);
+  }
   
 }


Reply via email to