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 2016/05/05 22:20:39 UTC
hbase git commit: HBASE-15759 RegionObserver.preStoreScannerOpen()
doesn't have acces to current readpoint
Repository: hbase
Updated Branches:
refs/heads/master c716a7541 -> 532b914f0
HBASE-15759 RegionObserver.preStoreScannerOpen() doesn't have acces to current readpoint
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/532b914f
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/532b914f
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/532b914f
Branch: refs/heads/master
Commit: 532b914f08af31d34a9b4ede7e8f5a567a9b211e
Parents: c716a75
Author: tedyu <yu...@gmail.com>
Authored: Thu May 5 15:20:37 2016 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Thu May 5 15:20:37 2016 -0700
----------------------------------------------------------------------
.../hbase/coprocessor/BaseRegionObserver.java | 7 +++++
.../hbase/coprocessor/RegionObserver.java | 32 ++++++++++++++++++++
.../hadoop/hbase/regionserver/HStore.java | 2 +-
.../regionserver/RegionCoprocessorHost.java | 4 +--
.../TestRegionObserverScannerOpenHook.java | 5 ++-
.../hbase/util/TestCoprocessorScanPolicy.java | 5 ++-
6 files changed, 46 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/532b914f/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java
index 67093f8..eaf9f43 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java
@@ -401,6 +401,13 @@ public class BaseRegionObserver implements RegionObserver {
}
@Override
+ public KeyValueScanner preStoreScannerOpen(final ObserverContext<RegionCoprocessorEnvironment> c,
+ final Store store, final Scan scan, final NavigableSet<byte[]> targetCols,
+ final KeyValueScanner s, final long readPt) throws IOException {
+ return preStoreScannerOpen(c, store, scan, targetCols, s);
+ }
+
+ @Override
public RegionScanner postScannerOpen(final ObserverContext<RegionCoprocessorEnvironment> e,
final Scan scan, final RegionScanner s) throws IOException {
return s;
http://git-wip-us.apache.org/repos/asf/hbase/blob/532b914f/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java
----------------------------------------------------------------------
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..1d985df 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
@@ -1036,12 +1036,44 @@ public interface RegionObserver extends Coprocessor {
* @param s the base scanner, if not {@code null}, from previous RegionObserver in the chain
* @return a KeyValueScanner instance to use or {@code null} to use the default implementation
* @throws IOException if an error occurred on the coprocessor
+ * @deprecated use {@link #preStoreScannerOpen(ObserverContext, Store, Scan, NavigableSet,
+ * KeyValueScanner, long)} instead
*/
+ @Deprecated
KeyValueScanner preStoreScannerOpen(final ObserverContext<RegionCoprocessorEnvironment> c,
final Store store, final Scan scan, final NavigableSet<byte[]> targetCols,
final KeyValueScanner s) throws IOException;
/**
+ * Called before a store opens a new scanner.
+ * This hook is called when a "user" scanner is opened.
+ * <p>
+ * 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.
+ * <p>
+ * Call CoprocessorEnvironment#complete to skip any subsequent chained
+ * coprocessors.
+ * Calling {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} has no
+ * effect in this hook.
+ * <p>
+ * 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<RegionCoprocessorEnvironment> c,
+ final Store store, final Scan scan, final NavigableSet<byte[]> targetCols,
+ final KeyValueScanner s, final long readPt) throws IOException;
+
+ /**
* Called after the client opens a new scanner.
* <p>
* Call CoprocessorEnvironment#complete to skip any subsequent chained
http://git-wip-us.apache.org/repos/asf/hbase/blob/532b914f/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
----------------------------------------------------------------------
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;
http://git-wip-us.apache.org/repos/asf/hbase/blob/532b914f/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
----------------------------------------------------------------------
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<byte[]> targetCols) throws IOException {
+ final NavigableSet<byte[]> targetCols, final long readPt) throws IOException {
return execOperationWithResult(null,
coprocessors.isEmpty() ? null : new RegionOperationWithResult<KeyValueScanner>() {
@Override
public void call(RegionObserver oserver, ObserverContext<RegionCoprocessorEnvironment> ctx)
throws IOException {
- setResult(oserver.preStoreScannerOpen(ctx, store, scan, targetCols, getResult()));
+ setResult(oserver.preStoreScannerOpen(ctx, store, scan, targetCols, getResult(), readPt));
}
});
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/532b914f/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.java
index a8983ef..02bb0d3 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.java
@@ -105,11 +105,10 @@ public class TestRegionObserverScannerOpenHook {
public static class NoDataFromScan extends BaseRegionObserver {
@Override
public KeyValueScanner preStoreScannerOpen(ObserverContext<RegionCoprocessorEnvironment> c,
- Store store, Scan scan, NavigableSet<byte[]> targetCols, KeyValueScanner s)
+ Store store, Scan scan, NavigableSet<byte[]> targetCols, KeyValueScanner s, long readPt)
throws IOException {
scan.setFilter(new NoDataFilter());
- return new StoreScanner(store, store.getScanInfo(), scan, targetCols,
- ((HStore)store).getHRegion().getReadPoint(IsolationLevel.READ_COMMITTED));
+ return new StoreScanner(store, store.getScanInfo(), scan, targetCols, readPt);
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/532b914f/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.java
index b4eb798..58aa56a 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.java
@@ -285,7 +285,7 @@ public class TestCoprocessorScanPolicy {
@Override
public KeyValueScanner preStoreScannerOpen(
final ObserverContext<RegionCoprocessorEnvironment> c, Store store, final Scan scan,
- final NavigableSet<byte[]> targetCols, KeyValueScanner s) throws IOException {
+ final NavigableSet<byte[]> targetCols, KeyValueScanner s, long readPt) throws IOException {
TableName tn = store.getTableName();
if (!tn.isSystemTable()) {
Long newTtl = ttls.get(store.getTableName());
@@ -297,8 +297,7 @@ public class TestCoprocessorScanPolicy {
newVersions == null ? family.getMaxVersions() : newVersions,
newTtl == null ? oldSI.getTtl() : newTtl, family.getKeepDeletedCells(),
oldSI.getTimeToPurgeDeletes(), oldSI.getComparator());
- return new StoreScanner(store, scanInfo, scan, targetCols,
- ((HStore) store).getHRegion().getReadPoint(IsolationLevel.READ_COMMITTED));
+ return new StoreScanner(store, scanInfo, scan, targetCols, readPt);
} else {
return s;
}