commit cb314c853435cfc508abcb8e90dcb793c67197ae Author: nspiegelberg Date: 32 seconds ago HBASE-4808 Test to Ensure Expired Deletes Don't Override Puts diff --git src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreScanner.java src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreScanner.java index 4d2f5a6..3522f65 100644 --- src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreScanner.java +++ src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreScanner.java @@ -460,4 +460,33 @@ public class TestStoreScanner extends TestCase { getCols("a"), scanners); assertNull(scan.peek()); } + + /** + * Ensure that expired delete family markers don't override valid puts + */ + public void testExpiredDeleteFamily() throws Exception { + long now = System.currentTimeMillis(); + KeyValue [] kvs = new KeyValue[] { + new KeyValue(Bytes.toBytes("R1"), Bytes.toBytes("cf"), null, now-1000, + KeyValue.Type.DeleteFamily), + KeyValueTestUtil.create("R1", "cf", "a", now-10, KeyValue.Type.Put, + "dont-care"), + }; + List scanners = scanFixture(kvs); + Scan scan = new Scan(); + scan.setMaxVersions(1); + // scanner with ttl equal to 500 + ScanInfo scanInfo = new ScanInfo(CF, 0, 1, 500, false, KeyValue.COMPARATOR); + ScanType scanType = ScanType.USER_SCAN; + StoreScanner scanner = + new StoreScanner(scan, scanInfo, scanType, null, scanners); + + List results = new ArrayList(); + assertEquals(true, scanner.next(results)); + assertEquals(1, results.size()); + assertEquals(kvs[1], results.get(0)); + results.clear(); + + assertEquals(false, scanner.next(results)); + } }