From 83a4bbe2f328a378a2741cb753029a1f16d69987 Mon Sep 17 00:00:00 2001 From: Pankaj Date: Mon, 25 May 2015 16:11:13 +0530 Subject: [PATCH] HBASE-13738, Scan with RAW type for increment data insertions is displaying only latest two KV's --- .../hadoop/hbase/regionserver/DefaultMemStore.java | 1 + .../hadoop/hbase/client/TestFromClientSide.java | 34 ++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java index f8a1182..db510dd 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java @@ -581,6 +581,7 @@ public class DefaultMemStore implements MemStore { Cell cur = it.next(); if (cell == cur) { + versionsVisible++; // ignore the one just put in continue; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java index 3dc1387..6cd6b1e 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java @@ -4572,6 +4572,40 @@ public class TestFromClientSide { ht.close(); } + + @Test + public void testIncrementOnSameQualifierWithRawScan() throws Exception { + LOG.info("Starting testIncrementOnSameQualifierWithRawScan"); + final byte[] TABLENAME = Bytes.toBytes("testIncrementOnSameQualifierWithRawScan"); + HTable ht = TEST_UTIL.createTable(TABLENAME, FAMILY); + + byte[][] QUALIFIERS = new byte[][] { Bytes.toBytes("A") }; + + Increment inc = new Increment(ROW); + for (int i = 0; i < 4; i++) { + inc.addColumn(FAMILY, QUALIFIERS[0], 1); + ht.increment(inc); + } + + // Verify expected results + Scan s = new Scan(); + ResultScanner scanner = ht.getScanner(s); + Cell[] kvs = scanner.next().rawCells(); + assertEquals(1, kvs.length); + assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 4); + + // Now try with raw scan + s = new Scan(); + s.setRaw(true); + s.setMaxVersions(10); + scanner = ht.getScanner(s); + kvs = scanner.next().rawCells(); + // Raw scan must have only one entry as old entries are removed if VERSIONS for this CF is 1 + assertEquals(1, kvs.length); + assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 4); + + ht.close(); + } @Test public void testIncrement() throws Exception { -- 1.8.4.msysgit.0