Author: jdcryans
Date: Wed Aug 25 18:58:43 2010
New Revision: 989296
URL: http://svn.apache.org/viewvc?rev=989296&view=rev
Log:
HBASE-2920 HTable.checkAndPut/Delete doesn't handle null values
Modified:
hbase/trunk/CHANGES.txt
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
Modified: hbase/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=989296&r1=989295&r2=989296&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Wed Aug 25 18:58:43 2010
@@ -487,6 +487,7 @@ Release 0.21.0 - Unreleased
code, ensure we log and rethrow as IOE
(Karthik Ranganathan via Stack)
HBASE-2915 Deadlock between HRegion.ICV and HRegion.close
+ HBASE-2920 HTable.checkAndPut/Delete doesn't handle null values
IMPROVEMENTS
HBASE-1760 Cleanup TODOs in HTable
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL:
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=989296&r1=989295&r2=989296&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
Wed Aug 25 18:58:43 2010
@@ -1473,7 +1473,8 @@ public class HRegion implements HeapSize
result = get(get);
boolean matches = false;
- if (result.size() == 0 && expectedValue.length == 0) {
+ if (result.size() == 0 &&
+ (expectedValue == null || expectedValue.length == 0)) {
matches = true;
} else if (result.size() == 1) {
//Compare the expected value with the actual value
Modified:
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
URL:
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java?rev=989296&r1=989295&r2=989296&view=diff
==============================================================================
---
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
(original)
+++
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
Wed Aug 25 18:58:43 2010
@@ -489,6 +489,14 @@ public class TestHRegion extends HBaseTe
res = region.checkAndMutate(row1, fam1, qf1, emptyVal, delete, lockId,
true);
assertTrue(res);
+
+ //checkAndPut looking for a null value
+ put = new Put(row1);
+ put.add(fam1, qf1, val1);
+
+ res = region.checkAndMutate(row1, fam1, qf1, null, put, lockId, true);
+ assertTrue(res);
+
}
public void testCheckAndMutate_WithWrongValue() throws IOException{