diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java index cbad200..5c1b7df 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java @@ -1042,6 +1042,35 @@ public interface RegionObserver extends Coprocessor { final KeyValueScanner s) throws IOException; /** + * Called before a store opens a new scanner. + * This hook is called when a "user" scanner is opened. + *
+ * See {@link #preFlushScannerOpen(ObserverContext, Store, KeyValueScanner, InternalScanner)} + * and {@link #preCompactScannerOpen(ObserverContext, + * Store, List, ScanType, long, InternalScanner)} + * to override scanners created for flushes or compactions, resp. + *
+ * Call CoprocessorEnvironment#complete to skip any subsequent chained + * coprocessors. + * Calling {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} has no + * effect in this hook. + *
+ * Note: Do not retain references to any Cells returned by scanner, beyond the life of this
+ * invocation. If need a Cell reference for later use, copy the cell and use that.
+ * @param c the environment provided by the region server
+ * @param store the store being scanned
+ * @param scan the Scan specification
+ * @param targetCols columns to be used in the scanner
+ * @param s the base scanner, if not {@code null}, from previous RegionObserver in the chain
+ * @param readPt the read point
+ * @return a KeyValueScanner instance to use or {@code null} to use the default implementation
+ * @throws IOException if an error occurred on the coprocessor
+ */
+ KeyValueScanner preStoreScannerOpen(final ObserverContext
* Call CoprocessorEnvironment#complete to skip any subsequent chained
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
index c02627f..8dfa0e0 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
@@ -1868,7 +1868,7 @@ public class HStore implements Store {
try {
KeyValueScanner scanner = null;
if (this.getCoprocessorHost() != null) {
- scanner = this.getCoprocessorHost().preStoreScannerOpen(this, scan, targetCols);
+ scanner = this.getCoprocessorHost().preStoreScannerOpen(this, scan, targetCols, readPt);
}
scanner = createScanner(scan, targetCols, readPt, scanner);
return scanner;
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
index 6614b3e..25e0200 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
@@ -1282,13 +1282,13 @@ public class RegionCoprocessorHost
* Store, Scan, NavigableSet, KeyValueScanner)}
*/
public KeyValueScanner preStoreScannerOpen(final Store store, final Scan scan,
- final NavigableSet