Index: hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestColumnSeeking.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestColumnSeeking.java (revision 1435319) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestColumnSeeking.java (working copy) @@ -35,6 +35,7 @@ import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hbase.cell.CellComparator; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -149,7 +150,7 @@ while (scanner.next(results)) ; assertEquals(kvSet.size(), results.size()); - assertTrue(results.containsAll(kvSet)); + assertTrue(KeyValueTestUtil.containsIgnoreMvccVersion(results, kvSet)); } } finally { HRegion.closeHRegion(region); @@ -260,7 +261,7 @@ while (scanner.next(results)) ; assertEquals(kvSet.size(), results.size()); - assertTrue(results.containsAll(kvSet)); + assertTrue(KeyValueTestUtil.containsIgnoreMvccVersion(results, kvSet)); } HRegion.closeHRegion(region); Index: hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.java (revision 1435319) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.java (working copy) @@ -262,8 +262,8 @@ } assertTrue("Scanner returned additional key/value: " + kv + ", " + queryInfo + deleteInfo + ";", kvPos < kvs.size()); - assertEquals("Scanner returned wrong key/value; " + queryInfo - + deleteInfo + ";", kvs.get(kvPos), kv); + assertTrue("Scanner returned wrong key/value; " + queryInfo + + deleteInfo + ";", kvs.get(kvPos).equalsIgnoreMvccVersion(kv)); ++kvPos; ++numResults; } Index: hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java (revision 1435319) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java (working copy) @@ -1983,8 +1983,8 @@ res = new ArrayList(); is.next(res); - for(int i=0; i(); is.next(res); for(int i=0; i kvs, boolean includeMemstoreTS) { int totalBytes = KeyValueTool.totalLengthWithMvccVersion(kvs, includeMemstoreTS); @@ -73,6 +72,27 @@ return bb; } + /** + * Checks whether KeyValues from kvCollection2 are contained in kvCollection1. + * + * The comparison is made without distinguishing MVCC version of the KeyValues + * + * @param kvCollection1 + * @param kvCollection2 + * @return true if KeyValues from kvCollection2 are contained in kvCollection1 + */ + public static boolean containsIgnoreMvccVersion(Collection kvCollection1, + Collection kvCollection2) { + for (KeyValue kv1 : kvCollection1) { + boolean found = false; + for (KeyValue kv2 : kvCollection2) { + if (CellComparator.equalsIgnoreMvccVersion(kv1, kv2)) found = true; + } + if (!found) return false; + } + return true; + } + public static List rewindThenToList(final ByteBuffer bb, final boolean includesMemstoreTS) { bb.rewind(); Index: hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java =================================================================== --- hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java (revision 1435319) +++ hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java (working copy) @@ -842,12 +842,21 @@ /** * Needed doing 'contains' on List. Only compares the key portion, not the value. - * + */ + @Override + public boolean equals(Object other) { + if (!(other instanceof Cell)) { + return false; + } + return CellComparator.equals(this, (Cell)other); + } + + /** * For temporary backwards compatibility with the original KeyValue.equals method, we ignore the * mvccVersion. */ @Override - public boolean equals(Object other) { + public boolean equalsIgnoreMvccVersion(Cell other) { if (!(other instanceof Cell)) { return false; }