HBASE-9753 Excessive readpoint checks in MemstoreScanner
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1532432 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
16bf1c48f0
commit
febd79c128
|
@ -678,7 +678,7 @@ public class MemStore implements HeapSize {
|
|||
this.lock.readLock().lock();
|
||||
try {
|
||||
return Collections.<KeyValueScanner>singletonList(
|
||||
new MemStoreScanner());
|
||||
new MemStoreScanner(MultiVersionConsistencyControl.getThreadReadPoint()));
|
||||
} finally {
|
||||
this.lock.readLock().unlock();
|
||||
}
|
||||
|
@ -730,6 +730,8 @@ public class MemStore implements HeapSize {
|
|||
// The allocator and snapshot allocator at the time of creating this scanner
|
||||
volatile MemStoreLAB allocatorAtCreation;
|
||||
volatile MemStoreLAB snapshotAllocatorAtCreation;
|
||||
|
||||
private long readPoint;
|
||||
|
||||
/*
|
||||
Some notes...
|
||||
|
@ -752,9 +754,10 @@ public class MemStore implements HeapSize {
|
|||
the adds to kvset in the MemStoreScanner.
|
||||
*/
|
||||
|
||||
MemStoreScanner() {
|
||||
MemStoreScanner(long readPoint) {
|
||||
super();
|
||||
|
||||
this.readPoint = readPoint;
|
||||
kvsetAtCreation = kvset;
|
||||
snapshotAtCreation = snapshot;
|
||||
if (allocator != null) {
|
||||
|
@ -768,13 +771,11 @@ public class MemStore implements HeapSize {
|
|||
}
|
||||
|
||||
private KeyValue getNext(Iterator<KeyValue> it) {
|
||||
long readPoint = MultiVersionConsistencyControl.getThreadReadPoint();
|
||||
|
||||
KeyValue v = null;
|
||||
try {
|
||||
while (it.hasNext()) {
|
||||
v = it.next();
|
||||
if (v.getMvccVersion() <= readPoint) {
|
||||
if (v.getMvccVersion() <= this.readPoint) {
|
||||
return v;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue