Index: src/test/org/apache/hadoop/hbase/regionserver/TestCompaction.java =================================================================== --- src/test/org/apache/hadoop/hbase/regionserver/TestCompaction.java (revision 677465) +++ src/test/org/apache/hadoop/hbase/regionserver/TestCompaction.java (working copy) @@ -144,16 +144,24 @@ // Assert that the first row is still deleted. cellValues = r.get(STARTROW, COLUMN_FAMILY_TEXT, 100 /*Too many*/); assertNull(cellValues); - // Assert the store files do not have the first record 'aaa' keys in them. + // Make sure the store files do have some 'aaa' keys in them. + boolean containsStartRow = false; for (MapFile.Reader reader: this.r.stores. get(Bytes.mapKey(COLUMN_FAMILY_TEXT_MINUS_COLON)).getReaders()) { reader.reset(); HStoreKey key = new HStoreKey(); ImmutableBytesWritable val = new ImmutableBytesWritable(); while(reader.next(key, val)) { - assertFalse(Bytes.equals(key.getRow(), STARTROW)); + if (Bytes.equals(key.getRow(), STARTROW)) { + containsStartRow = true; + break; + } } + if (containsStartRow) { + break; + } } + assertTrue(containsStartRow); } private void createStoreFile(final HRegion region) throws IOException { Index: src/java/org/apache/hadoop/hbase/regionserver/HStore.java =================================================================== --- src/java/org/apache/hadoop/hbase/regionserver/HStore.java (revision 677465) +++ src/java/org/apache/hadoop/hbase/regionserver/HStore.java (working copy) @@ -833,8 +833,7 @@ int timesSeen = 0; byte [] lastRow = null; byte [] lastColumn = null; - // Map of a row deletes keyed by column with a list of timestamps for value - Map> deletes = null; + while (numDone < done.length) { // Find the reader with the smallest key. If two files have same key // but different values -- i.e. one is delete and other is non-delete @@ -862,14 +861,9 @@ timesSeen++; } else { timesSeen = 0; - // We are on to a new row. Create a new deletes list. - deletes = new TreeMap>(Bytes.BYTES_COMPARATOR); } - byte [] value = (vals[smallestKey] == null)? - null: vals[smallestKey].get(); - if (!isDeleted(sk, value, false, deletes) && - timesSeen <= family.getMaxVersions()) { + if (timesSeen <= family.getMaxVersions()) { // Keep old versions until we have maxVersions worth. // Then just skip them. if (sk.getRow().length != 0 && sk.getColumn().length != 0) {