From ccf13be7c36bce69a74918a0c98b8b1290c3f56c Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Wed, 23 May 2018 11:13:24 -0700 Subject: [PATCH] HBASE-20628 SegmentScanner does over-comparing when one flushing --- .../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.java index cbd60e5da3..318bcae8b8 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.java @@ -17,9 +17,11 @@ */ package org.apache.hadoop.hbase.regionserver; +import org.apache.hadoop.hbase.util.CollectionBackedScanner; import org.apache.yetus.audience.InterfaceAudience; import java.io.Closeable; +import java.util.Collections; import java.util.List; /** * Holds details of the snapshot taken on a MemStore. Details include the snapshot's identifier, @@ -40,7 +42,11 @@ public class MemStoreSnapshot implements Closeable { this.cellsCount = snapshot.getCellsCount(); this.memStoreSize = snapshot.getMemStoreSize(); this.timeRangeTracker = snapshot.getTimeRangeTracker(); - this.scanners = snapshot.getScanners(Long.MAX_VALUE, Long.MAX_VALUE); + // Make a dumbed-down Scanner, one that can be used flushing. Doesn't need to be able to + // scan in reverse, etc. This dumbed-down scanner gives us a throughput boost when writing. + // See HBASE-20628. + this.scanners = Collections.singletonList( + new CollectionBackedScanner(snapshot.getCellSet(), snapshot.getComparator())); this.tagsPresent = snapshot.isTagsPresent(); } @@ -95,5 +101,4 @@ public class MemStoreSnapshot implements Closeable { } } } - } -- 2.16.3