You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2012/06/28 06:39:51 UTC
svn commit: r1354815 - in /hbase/branches/0.94/src:
main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java
test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
Author: tedyu
Date: Thu Jun 28 04:39:50 2012
New Revision: 1354815
URL: http://svn.apache.org/viewvc?rev=1354815&view=rev
Log:
HBASE-6269 Lazyseek should use the maxSequenseId StoreFile's KeyValue as the latest KeyValue (Xing Shi)
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java?rev=1354815&r1=1354814&r2=1354815&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java Thu Jun 28 04:39:50 2012
@@ -342,7 +342,7 @@ public class KeyValueHeap extends NonLaz
// Compare the current scanner to the next scanner. We try to avoid
// putting the current one back into the heap if possible.
KeyValue nextKV = nextEarliestScanner.peek();
- if (nextKV == null || comparator.compare(curKV, nextKV) <= 0) {
+ if (nextKV == null || comparator.compare(curKV, nextKV) < 0) {
// We already have the scanner with the earliest KV, so return it.
return kvScanner;
}
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java?rev=1354815&r1=1354814&r2=1354815&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java Thu Jun 28 04:39:50 2012
@@ -3502,6 +3502,67 @@ public class TestHRegion extends HBaseTe
}
}
}
+
+ /**
+ * Test case to check put function with memstore flushing for same row, same ts
+ * @throws Exception
+ */
+ public void testPutWithMemStoreFlush() throws Exception {
+ Configuration conf = HBaseConfiguration.create();
+ String method = "testPutWithMemStoreFlush";
+ byte[] tableName = Bytes.toBytes(method);
+ byte[] family = Bytes.toBytes("family");;
+ byte[] qualifier = Bytes.toBytes("qualifier");
+ byte[] row = Bytes.toBytes("putRow");
+ byte[] value = null;
+ this.region = initHRegion(tableName, method, conf, family);
+ Put put = null;
+ Get get = null;
+ List<KeyValue> kvs = null;
+ Result res = null;
+
+ put = new Put(row);
+ value = Bytes.toBytes("value0");
+ put.add(family, qualifier, 1234567l, value);
+ region.put(put);
+ get = new Get(row);
+ get.addColumn(family, qualifier);
+ get.setMaxVersions();
+ res = this.region.get(get, null);
+ kvs = res.getColumn(family, qualifier);
+ assertEquals(1, kvs.size());
+ assertEquals(Bytes.toBytes("value0"), kvs.get(0).getValue());
+
+ region.flushcache();
+ get = new Get(row);
+ get.addColumn(family, qualifier);
+ get.setMaxVersions();
+ res = this.region.get(get, null);
+ kvs = res.getColumn(family, qualifier);
+ assertEquals(1, kvs.size());
+ assertEquals(Bytes.toBytes("value0"), kvs.get(0).getValue());
+
+ put = new Put(row);
+ value = Bytes.toBytes("value1");
+ put.add(family, qualifier, 1234567l, value);
+ region.put(put);
+ get = new Get(row);
+ get.addColumn(family, qualifier);
+ get.setMaxVersions();
+ res = this.region.get(get, null);
+ kvs = res.getColumn(family, qualifier);
+ assertEquals(1, kvs.size());
+ assertEquals(Bytes.toBytes("value1"), kvs.get(0).getValue());
+
+ region.flushcache();
+ get = new Get(row);
+ get.addColumn(family, qualifier);
+ get.setMaxVersions();
+ res = this.region.get(get, null);
+ kvs = res.getColumn(family, qualifier);
+ assertEquals(1, kvs.size());
+ assertEquals(Bytes.toBytes("value1"), kvs.get(0).getValue());
+ }
/**
* TestCase for increment