Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java (revision 1557131) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java (revision ) @@ -1669,6 +1669,8 @@ } /** + * + * @param scan the Scan specification * @param s the scanner * @param results the result set returned by the region server * @param limit the maximum number of results to return @@ -1676,7 +1678,7 @@ * null otherwise * @exception IOException Exception */ - public Boolean preScannerNext(final InternalScanner s, + public Boolean preScannerNext(Scan scan, final InternalScanner s, final List results, final int limit) throws IOException { boolean bypass = false; boolean hasNext = false; @@ -1688,7 +1690,7 @@ ClassLoader cl = currentThread.getContextClassLoader(); try { currentThread.setContextClassLoader(env.getClassLoader()); - hasNext = ((RegionObserver)env.getInstance()).preScannerNext(ctx, s, results, limit, + hasNext = ((RegionObserver)env.getInstance()).preScannerNext(ctx, scan, s, results, limit, hasNext); } catch (Throwable e) { handleCoprocessorThrowable(env, e); @@ -1705,6 +1707,8 @@ } /** + * + * @param scan the Scan specification * @param s the scanner * @param results the result set returned by the region server * @param limit the maximum number of results to return @@ -1712,7 +1716,7 @@ * @return 'has more' indication to give to client * @exception IOException Exception */ - public boolean postScannerNext(final InternalScanner s, + public boolean postScannerNext(Scan scan, final InternalScanner s, final List results, final int limit, boolean hasMore) throws IOException { ObserverContext ctx = null; @@ -1723,7 +1727,7 @@ ClassLoader cl = currentThread.getContextClassLoader(); try { currentThread.setContextClassLoader(env.getClassLoader()); - hasMore = ((RegionObserver)env.getInstance()).postScannerNext(ctx, s, results, limit, + hasMore = ((RegionObserver)env.getInstance()).postScannerNext(ctx, scan, s, results, limit, hasMore); } catch (Throwable e) { handleCoprocessorThrowable(env, e); Index: hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java (revision 1557131) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java (revision ) @@ -106,6 +106,11 @@ } @Override + public Scan getScan() { + return delegate.getScan(); + } + + @Override public void close() throws IOException { delegate.close(); } \ No newline at end of file Index: hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java (revision 1557131) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java (revision ) @@ -422,15 +422,15 @@ @Override public boolean preScannerNext(final ObserverContext e, - final InternalScanner s, final List results, + Scan scan, final InternalScanner s, final List results, - final int limit, final boolean hasMore) throws IOException { + final int limit, final boolean hasMore) throws IOException { return hasMore; } @Override public boolean postScannerNext(final ObserverContext e, - final InternalScanner s, final List results, final int limit, + Scan scan, final InternalScanner s, final List results, final int limit, - final boolean hasMore) throws IOException { + final boolean hasMore) throws IOException { return hasMore; } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java (revision 1557131) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java (revision ) @@ -1380,7 +1380,7 @@ @Override public boolean preScannerNext(final ObserverContext c, - final InternalScanner s, final List result, + Scan scan, final InternalScanner s, final List result, final int limit, final boolean hasNext) throws IOException { requireScannerOwner(s); return hasNext; Index: hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java (revision 1557131) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java (revision ) @@ -884,7 +884,7 @@ @Override public boolean preScannerNext(final ObserverContext c, - final InternalScanner s, final List result, final int limit, final boolean hasNext) + Scan scan, final InternalScanner s, final List result, final int limit, final boolean hasNext) throws IOException { requireScannerOwner(s); return hasNext; Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java (revision 1557131) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java (revision ) @@ -103,4 +103,10 @@ * @throws IOException e */ boolean nextRaw(List result, int limit) throws IOException; + + /** + * Gets the {@link org.apache.hadoop.hbase.client.Scan object that was used to create this scanner} + */ + Scan getScan(); + } Index: hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java (revision 1557131) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java (revision ) @@ -286,7 +286,7 @@ @Override public boolean preScannerNext(final ObserverContext c, - final InternalScanner s, final List results, + Scan scan, final InternalScanner s, final List results, final int limit, final boolean hasMore) throws IOException { ctPreScannerNext.incrementAndGet(); return hasMore; @@ -294,7 +294,7 @@ @Override public boolean postScannerNext(final ObserverContext c, - final InternalScanner s, final List results, final int limit, + Scan scan, final InternalScanner s, final List results, final int limit, final boolean hasMore) throws IOException { ctPostScannerNext.incrementAndGet(); return hasMore; Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (revision 1557131) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (revision ) @@ -3109,7 +3109,7 @@ // Call coprocessor. Get region info from scanner. if (region != null && region.getCoprocessorHost() != null) { Boolean bypass = region.getCoprocessorHost().preScannerNext( - scanner, results, rows); + scanner.getScan(), scanner, results, rows); if (!results.isEmpty()) { for (Result r : results) { if (maxScannerResultSize < Long.MAX_VALUE){ @@ -3161,7 +3161,7 @@ // coprocessor postNext hook if (region != null && region.getCoprocessorHost() != null) { - region.getCoprocessorHost().postScannerNext(scanner, results, rows, true); + region.getCoprocessorHost().postScannerNext(scanner.getScan(), scanner, results, rows, true); } } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java (revision 1557131) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java (revision ) @@ -921,18 +921,18 @@ * Call CoprocessorEnvironment#complete to skip any subsequent chained * coprocessors * @param c the environment provided by the region server + * @param scan the Scan specification - * @param s the scanner + *@param s the scanner * @param result The result to return to the client if default processing - * is bypassed. Can be modified. Will not be returned if default processing - * is not bypassed. + * is bypassed. Can be modified. Will not be returned if default processing + * is not bypassed. * @param limit the maximum number of results to return - * @param hasNext the 'has more' indication - * @return 'has more' indication that should be sent to client + * @param hasNext the 'has more' indication @return 'has more' indication that should be sent to client * @throws IOException if an error occurred on the coprocessor */ boolean preScannerNext(final ObserverContext c, - final InternalScanner s, final List result, + Scan scan, final InternalScanner s, final List result, - final int limit, final boolean hasNext) + final int limit, final boolean hasNext) throws IOException; /** @@ -941,16 +941,16 @@ * Call CoprocessorEnvironment#complete to skip any subsequent chained * coprocessors * @param c the environment provided by the region server + * @param scan the Scan specification - * @param s the scanner + *@param s the scanner * @param result the result to return to the client, can be modified * @param limit the maximum number of results to return - * @param hasNext the 'has more' indication - * @return 'has more' indication that should be sent to client + * @param hasNext the 'has more' indication @return 'has more' indication that should be sent to client * @throws IOException if an error occurred on the coprocessor */ boolean postScannerNext(final ObserverContext c, - final InternalScanner s, final List result, final int limit, + Scan scan, final InternalScanner s, final List result, final int limit, - final boolean hasNext) + final boolean hasNext) throws IOException; /** Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (revision 1557131) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (revision ) @@ -3596,6 +3596,7 @@ private boolean filterClosed = false; private long readPt; private long maxResultSize; + private Scan scan; protected HRegion region; @Override @@ -3605,7 +3606,7 @@ RegionScannerImpl(Scan scan, List additionalScanners, HRegion region) throws IOException { - + this.scan = scan; this.region = region; this.maxResultSize = scan.getMaxResultSize(); if (scan.hasFilter()) { @@ -3745,6 +3746,10 @@ return returnResult; } + @Override + public Scan getScan() { + return this.scan; + } private void populateFromJoinedHeap(List results, int limit) throws IOException {