Index: src/test/java/org/apache/hadoop/hbase/client/TestResult.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/client/TestResult.java (revision 1202802) +++ src/test/java/org/apache/hadoop/hbase/client/TestResult.java (working copy) @@ -98,4 +98,27 @@ assertTrue(r.containsColumn(family, qf)); } } + + /** + * Verify that Result.compareResults(...) behaves correctly. + */ + public void testCompareResults() throws Exception { + byte [] value1 = Bytes.toBytes("value1"); + byte [] qual = Bytes.toBytes("qual"); + + KeyValue kv1 = new KeyValue(row, family, qual, value); + KeyValue kv2 = new KeyValue(row, family, qual, value1); + + Result r1 = new Result(new KeyValue[] {kv1}); + Result r2 = new Result(new KeyValue[] {kv2}); + // no exception thrown + Result.compareResults(r1, r1); + try { + // these are different (HBASE-4800) + Result.compareResults(r1, r2); + fail(); + } catch (Exception x) { + assertTrue(x.getMessage().startsWith("This result was different:")); + } + } } Index: src/main/java/org/apache/hadoop/hbase/client/Result.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/client/Result.java (revision 1202802) +++ src/main/java/org/apache/hadoop/hbase/client/Result.java (working copy) @@ -634,7 +634,7 @@ KeyValue[] ourKVs = res1.raw(); KeyValue[] replicatedKVs = res2.raw(); for (int i = 0; i < res1.size(); i++) { - if (!ourKVs[i].equals(replicatedKVs[i]) && + if (!ourKVs[i].equals(replicatedKVs[i]) || !Bytes.equals(ourKVs[i].getValue(), replicatedKVs[i].getValue())) { throw new Exception("This result was different: " + res1.toString() + " compared to " + res2.toString());