HBASE-18552 Backport the server side change in HBASE-18489 to branch-1

This commit is contained in:
zhangduo 2017-08-18 10:19:19 +08:00
parent 3959b39b9b
commit ff23e15769
3 changed files with 10 additions and 12 deletions

View File

@ -2855,9 +2855,9 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
// Heartbeat messages occur when the time limit has been reached. // Heartbeat messages occur when the time limit has been reached.
builder.setHeartbeatMessage(timeLimitReached); builder.setHeartbeatMessage(timeLimitReached);
if (timeLimitReached && rsh.needCursor) { if (timeLimitReached && rsh.needCursor) {
Cell readingCell = scannerContext.getPeekedCellInHeartbeat(); Cell cursorCell = scannerContext.getLastPeekedCell();
if (readingCell != null) { if (cursorCell != null) {
builder.setCursor(ProtobufUtil.toCursor(readingCell)); builder.setCursor(ProtobufUtil.toCursor(cursorCell));
} }
} }
} }

View File

@ -19,8 +19,6 @@ package org.apache.hadoop.hbase.regionserver;
import java.util.List; import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.HBaseInterfaceAudience; import org.apache.hadoop.hbase.HBaseInterfaceAudience;
import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.classification.InterfaceAudience;
@ -97,7 +95,7 @@ public class ScannerContext {
boolean keepProgress; boolean keepProgress;
private static boolean DEFAULT_KEEP_PROGRESS = false; private static boolean DEFAULT_KEEP_PROGRESS = false;
private Cell peekedCellInHeartbeat = null; private Cell lastPeekedCell = null;
/** /**
* Tracks the relevant server side metrics during scans. null when metrics should not be tracked * Tracks the relevant server side metrics during scans. null when metrics should not be tracked
@ -324,12 +322,12 @@ public class ScannerContext {
|| checkTimeLimit(checkerScope); || checkTimeLimit(checkerScope);
} }
public Cell getPeekedCellInHeartbeat() { public Cell getLastPeekedCell() {
return peekedCellInHeartbeat; return lastPeekedCell;
} }
public void setPeekedCellInHeartbeat(Cell peekedCellInHeartbeat) { public void setLastPeekedCell(Cell lastPeekedCell) {
this.peekedCellInHeartbeat = peekedCellInHeartbeat; this.lastPeekedCell = lastPeekedCell;
} }
@Override @Override

View File

@ -46,11 +46,11 @@ import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope; import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;
import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState; import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;
import org.apache.hadoop.hbase.regionserver.handler.ParallelSeekHandler; import org.apache.hadoop.hbase.regionserver.handler.ParallelSeekHandler;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.regionserver.querymatcher.CompactionScanQueryMatcher; import org.apache.hadoop.hbase.regionserver.querymatcher.CompactionScanQueryMatcher;
import org.apache.hadoop.hbase.regionserver.querymatcher.LegacyScanQueryMatcher; import org.apache.hadoop.hbase.regionserver.querymatcher.LegacyScanQueryMatcher;
import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher; import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;
import org.apache.hadoop.hbase.regionserver.querymatcher.UserScanQueryMatcher; import org.apache.hadoop.hbase.regionserver.querymatcher.UserScanQueryMatcher;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.CollectionUtils; import org.apache.hadoop.hbase.util.CollectionUtils;
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
@ -540,7 +540,6 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner
if ((kvsScanned % cellsPerHeartbeatCheck == 0)) { if ((kvsScanned % cellsPerHeartbeatCheck == 0)) {
scannerContext.updateTimeProgress(); scannerContext.updateTimeProgress();
if (scannerContext.checkTimeLimit(LimitScope.BETWEEN_CELLS)) { if (scannerContext.checkTimeLimit(LimitScope.BETWEEN_CELLS)) {
scannerContext.setPeekedCellInHeartbeat(prevCell);
return scannerContext.setScannerState(NextState.TIME_LIMIT_REACHED).hasMoreValues(); return scannerContext.setScannerState(NextState.TIME_LIMIT_REACHED).hasMoreValues();
} }
} }
@ -548,6 +547,7 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner
if (prevCell != cell) ++kvsScanned; // Do object compare - we set prevKV from the same heap. if (prevCell != cell) ++kvsScanned; // Do object compare - we set prevKV from the same heap.
checkScanOrder(prevCell, cell, comparator); checkScanOrder(prevCell, cell, comparator);
prevCell = cell; prevCell = cell;
scannerContext.setLastPeekedCell(cell);
topChanged = false; topChanged = false;
ScanQueryMatcher.MatchCode qcode = matcher.match(cell); ScanQueryMatcher.MatchCode qcode = matcher.match(cell);
switch (qcode) { switch (qcode) {