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);
+ }
}