From a977055ecd7dddef15735f4c1dd9b99e8c31222a Mon Sep 17 00:00:00 2001 From: zhangduo Date: Tue, 12 Sep 2017 20:44:03 +0800 Subject: [PATCH] HBASE-18793 Remove deprecated methods in RegionObserver --- .../example/ZooKeeperScanPolicyObserver.java | 17 +- .../hbase/coprocessor/RegionObserver.java | 758 ++++-------------- .../regionserver/RegionCoprocessorHost.java | 154 +--- .../security/access/AccessController.java | 32 +- ...tAvoidCellReferencesIntoShippedBlocks.java | 11 +- .../coprocessor/SimpleRegionObserver.java | 115 +-- .../coprocessor/TestCoprocessorInterface.java | 5 +- .../TestRegionObserverInterface.java | 5 +- .../TestRegionObserverScannerOpenHook.java | 7 +- .../hbase/namespace/TestNamespaceAuditor.java | 5 +- .../regionserver/NoOpScanPolicyObserver.java | 10 +- .../TestHRegionServerBulkLoad.java | 6 +- .../security/access/TestAccessController.java | 2 +- .../hbase/util/TestCoprocessorScanPolicy.java | 7 +- 14 files changed, 253 insertions(+), 881 deletions(-) diff --git a/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java b/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java index b489fe4cf15..344d1887a59 100644 --- a/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java +++ b/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java @@ -39,6 +39,7 @@ import org.apache.hadoop.hbase.regionserver.ScanInfo; import org.apache.hadoop.hbase.regionserver.ScanType; import org.apache.hadoop.hbase.regionserver.Store; import org.apache.hadoop.hbase.regionserver.StoreScanner; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; import org.apache.zookeeper.KeeperException; @@ -187,8 +188,9 @@ public class ZooKeeperScanPolicyObserver implements RegionObserver { } @Override - public InternalScanner preFlushScannerOpen(final ObserverContext c, - Store store, List scanners, InternalScanner s) throws IOException { + public InternalScanner preFlushScannerOpen(ObserverContext c, + Store store, List scanners, InternalScanner s, long readPoint) + throws IOException { ScanInfo scanInfo = getScanInfo(store, c.getEnvironment()); if (scanInfo == null) { // take default action @@ -199,10 +201,9 @@ public class ZooKeeperScanPolicyObserver implements RegionObserver { } @Override - public InternalScanner preCompactScannerOpen( - final ObserverContext c, + public InternalScanner preCompactScannerOpen(ObserverContext c, Store store, List scanners, ScanType scanType, long earliestPutTs, - InternalScanner s) throws IOException { + InternalScanner s, CompactionRequest request, long readPoint) throws IOException { ScanInfo scanInfo = getScanInfo(store, c.getEnvironment()); if (scanInfo == null) { // take default action @@ -213,9 +214,9 @@ public class ZooKeeperScanPolicyObserver implements RegionObserver { } @Override - public KeyValueScanner preStoreScannerOpen(final ObserverContext c, - final Store store, final Scan scan, final NavigableSet targetCols, - final KeyValueScanner s) throws IOException { + public KeyValueScanner preStoreScannerOpen(ObserverContext c, + Store store, Scan scan, NavigableSet targetCols, KeyValueScanner s, long readPoint) + throws IOException { ScanInfo scanInfo = getScanInfo(store, c.getEnvironment()); if (scanInfo == null) { // take default action 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 5216812dd37..393aff2a5ea 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 @@ -19,6 +19,11 @@ package org.apache.hadoop.hbase.coprocessor; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.NavigableSet; + import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.Cell; @@ -54,41 +59,40 @@ import org.apache.hadoop.hbase.regionserver.StoreFile; import org.apache.hadoop.hbase.regionserver.StoreFileReader; import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.regionserver.querymatcher.DeleteTracker; -import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableList; import org.apache.hadoop.hbase.util.Pair; +import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.hadoop.hbase.wal.WALKey; -import java.io.IOException; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.NavigableSet; - /** - * Coprocessors implement this interface to observe and mediate client actions - * on the region. - * + * Coprocessors implement this interface to observe and mediate client actions on the region. + *

* Since most implementations will be interested in only a subset of hooks, this class uses * 'default' functions to avoid having to add unnecessary overrides. When the functions are - * non-empty, it's simply to satisfy the compiler by returning value of expected (non-void) type. - * It is done in a way that these default definitions act as no-op. So our suggestion to - * implementation would be to not call these 'default' methods from overrides. - *

- * - *

Exception Handling

+ * non-empty, it's simply to satisfy the compiler by returning value of expected (non-void) type. It + * is done in a way that these default definitions act as no-op. So our suggestion to implementation + * would be to not call these 'default' methods from overrides. + *

+ *

Exception Handling


* For all functions, exception handling is done as follows: *
    - *
  • Exceptions of type {@link IOException} are reported back to client.
  • - *
  • For any other kind of exception: - *
      - *
    • If the configuration {@link CoprocessorHost#ABORT_ON_ERROR_KEY} is set to true, then - * the server aborts.
    • - *
    • Otherwise, coprocessor is removed from the server and - * {@link org.apache.hadoop.hbase.DoNotRetryIOException} is returned to the client.
    • - *
    - *
  • + *
  • Exceptions of type {@link IOException} are reported back to client.
  • + *
  • For any other kind of exception: + *
      + *
    • If the configuration {@link CoprocessorHost#ABORT_ON_ERROR_KEY} is set to true, then the + * server aborts.
    • + *
    • Otherwise, coprocessor is removed from the server and + * {@link org.apache.hadoop.hbase.DoNotRetryIOException} is returned to the client.
    • *
    + *
  • + *
+ *

+ *

For Split Related Hooks


+ * In hbase2/AMv2, master runs splits, so the split related hooks are moved to + * {@link MasterObserver}. + *

+ *

Increment Column Value


+ * We do not call this hook anymore. */ @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC) @InterfaceStability.Evolving @@ -105,19 +109,19 @@ public interface RegionObserver extends Coprocessor { * Called before the region is reported as open to the master. * @param c the environment provided by the region server */ - default void preOpen(final ObserverContext c) throws IOException {} + default void preOpen(ObserverContext c) throws IOException {} /** * Called after the region is reported as open to the master. * @param c the environment provided by the region server */ - default void postOpen(final ObserverContext c) {} + default void postOpen(ObserverContext c) {} /** * Called after the log replay on the region is over. * @param c the environment provided by the region server */ - default void postLogReplay(final ObserverContext c) {} + default void postLogReplay(ObserverContext c) {} /** * Called before a memstore is flushed to disk and prior to creating the scanner to read from @@ -130,61 +134,20 @@ public interface RegionObserver extends Coprocessor { * @param store the store being flushed * @param scanners the scanners for the memstore that is flushed * @param s the base scanner, if not {@code null}, from previous RegionObserver in the chain + * @param readPoint the readpoint to create scanner * @return the scanner to use during the flush. {@code null} if the default implementation * is to be used. - * @deprecated Use {@link #preFlushScannerOpen(ObserverContext, Store, List, - * InternalScanner, long)} */ - @Deprecated - default InternalScanner preFlushScannerOpen(final ObserverContext c, - final Store store, final List scanners, final InternalScanner s) + default InternalScanner preFlushScannerOpen(ObserverContext c, + Store store, List scanners, InternalScanner s, long readPoint) throws IOException { return s; } - /** - * Called before a memstore is flushed to disk and prior to creating the scanner to read from - * the memstore. To override or modify how a memstore is flushed, - * implementing classes can return a new scanner to provide the KeyValues to be - * stored into the new {@code StoreFile} or null to perform the default processing. - * Calling {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} has no - * effect in this hook. - * @param c the environment provided by the region server - * @param store the store being flushed - * @param scanners the scanners for the memstore that is flushed - * @param s the base scanner, if not {@code null}, from previous RegionObserver in the chain - * @param readPoint the readpoint to create scanner - * @return the scanner to use during the flush. {@code null} if the default implementation - * is to be used. - */ - default InternalScanner preFlushScannerOpen(final ObserverContext c, - final Store store, final List scanners, final InternalScanner s, - final long readPoint) throws IOException { - return preFlushScannerOpen(c, store, scanners, s); - } - - /** - * Maintain backward compatibility. - * @param c the environment provided by the region server - * @param store the store being flushed - * @param scanner the scanner for the memstore that is flushed - * @param s the base scanner, if not {@code null}, from previous RegionObserver in the chain - * @param readPoint the readpoint to create scanner - * @return the scanner to use during the flush. {@code null} if the default implementation - * is to be used. - */ - default InternalScanner preFlushScannerOpen(final ObserverContext c, - final Store store, final KeyValueScanner scanner, final InternalScanner s, - final long readPoint) throws IOException { - return preFlushScannerOpen(c, store, Collections.singletonList(scanner), s, readPoint); - } - /** * Called before the memstore is flushed to disk. * @param c the environment provided by the region server - * @deprecated use {@link #preFlush(ObserverContext, Store, InternalScanner)} instead */ - @Deprecated default void preFlush(final ObserverContext c) throws IOException {} /** @@ -195,19 +158,17 @@ public interface RegionObserver extends Coprocessor { * @return the scanner to use during compaction. Should not be {@code null} * unless the implementation is writing new store files on its own. */ - default InternalScanner preFlush(final ObserverContext c, - final Store store, final InternalScanner scanner) throws IOException { + default InternalScanner preFlush(ObserverContext c, Store store, + InternalScanner scanner) throws IOException { return scanner; } /** * Called after the memstore is flushed to disk. * @param c the environment provided by the region server - * @deprecated use {@link #preFlush(ObserverContext, Store, InternalScanner)} instead. + * @throws IOException if an error occurred on the coprocessor */ - @Deprecated - default void postFlush(final ObserverContext c) - throws IOException {} + default void postFlush(ObserverContext c) throws IOException {} /** * Called after a Store's memstore is flushed to disk. @@ -215,8 +176,8 @@ public interface RegionObserver extends Coprocessor { * @param store the store being flushed * @param resultFile the new store file written out during compaction */ - default void postFlush(final ObserverContext c, final Store store, - final StoreFile resultFile) throws IOException {} + default void postFlush(ObserverContext c, Store store, + StoreFile resultFile) throws IOException {} /** * Called prior to selecting the {@link StoreFile StoreFiles} to compact from the list of @@ -227,25 +188,8 @@ public interface RegionObserver extends Coprocessor { * @param candidates the store files currently available for compaction * @param request custom compaction request */ - default void preCompactSelection(final ObserverContext c, - final Store store, final List candidates, final CompactionRequest request) - throws IOException { - preCompactSelection(c, store, candidates); - } - - /** - * Called prior to selecting the {@link StoreFile}s to compact from the list of available - * candidates. To alter the files used for compaction, you may mutate the passed in list of - * candidates. - * @param c the environment provided by the region server - * @param store the store where compaction is being requested - * @param candidates the store files currently available for compaction - * @deprecated Use {@link #preCompactSelection(ObserverContext, Store, List, CompactionRequest)} - * instead - */ - @Deprecated - default void preCompactSelection(final ObserverContext c, - final Store store, final List candidates) throws IOException {} + default void preCompactSelection(ObserverContext c, Store store, + List candidates, CompactionRequest request) throws IOException {} /** * Called after the {@link StoreFile}s to compact have been selected from the available @@ -255,23 +199,8 @@ public interface RegionObserver extends Coprocessor { * @param selected the store files selected to compact * @param request custom compaction request */ - default void postCompactSelection(final ObserverContext c, - final Store store, final ImmutableList selected, CompactionRequest request) { - postCompactSelection(c, store, selected); - } - - /** - * Called after the {@link StoreFile}s to compact have been selected from the available - * candidates. - * @param c the environment provided by the region server - * @param store the store being compacted - * @param selected the store files selected to compact - * @deprecated use {@link #postCompactSelection(ObserverContext, Store, ImmutableList, - * CompactionRequest)} instead. - */ - @Deprecated - default void postCompactSelection(final ObserverContext c, - final Store store, final ImmutableList selected) {} + default void postCompactSelection(ObserverContext c, Store store, + ImmutableList selected, CompactionRequest request) {} /** * Called prior to writing the {@link StoreFile}s selected for compaction into a new @@ -295,73 +224,12 @@ public interface RegionObserver extends Coprocessor { * @return the scanner to use during compaction. Should not be {@code null} unless the * implementation is writing new store files on its own. */ - default InternalScanner preCompact(final ObserverContext c, - final Store store, final InternalScanner scanner, final ScanType scanType, + default InternalScanner preCompact(ObserverContext c, + Store store, InternalScanner scanner, ScanType scanType, CompactionRequest request) throws IOException { - return preCompact(c, store, scanner, scanType); - } - - /** - * Called prior to writing the {@link StoreFile}s selected for compaction into a new - * {@code StoreFile}. To override or modify the compaction process, implementing classes have two - * options: - *
    - *
  • Wrap the provided {@link InternalScanner} with a custom implementation that is returned - * from this method. The custom scanner can then inspect - * {@link org.apache.hadoop.hbase.KeyValue}s from the wrapped scanner, applying its own - * policy to what gets written.
  • - *
  • Call {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} and provide a - * custom implementation for writing of new {@link StoreFile}s. Note: any implementations - * bypassing core compaction using this approach must write out new store files themselves or the - * existing data will no longer be available after compaction.
  • - *
- * @param c the environment provided by the region server - * @param store the store being compacted - * @param scanner the scanner over existing data used in the store file rewriting - * @param scanType type of Scan - * @return the scanner to use during compaction. Should not be {@code null} unless the - * implementation is writing new store files on its own. - * @deprecated use - * {@link #preCompact(ObserverContext, Store, InternalScanner, - * ScanType, CompactionRequest)} instead - */ - @Deprecated - default InternalScanner preCompact(final ObserverContext c, - final Store store, final InternalScanner scanner, final ScanType scanType) - throws IOException { return scanner; } - /** - * Called prior to writing the {@link StoreFile}s selected for compaction into a new - * {@code StoreFile} and prior to creating the scanner used to read the input files. To override - * or modify the compaction process, implementing classes can return a new scanner to provide the - * KeyValues to be stored into the new {@code StoreFile} or null to perform the default - * processing. Calling {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} has no - * effect in this hook. - * @param c the environment provided by the region server - * @param store the store being compacted - * @param scanners the list {@link org.apache.hadoop.hbase.regionserver.StoreFileScanner}s - * to be read from - * @param scanType the {@link ScanType} indicating whether this is a major or minor compaction - * @param earliestPutTs timestamp of the earliest put that was found in any of the involved store - * files - * @param s the base scanner, if not {@code null}, from previous RegionObserver in the chain - * @param request the requested compaction - * @return the scanner to use during compaction. {@code null} if the default implementation is to - * be used. - * @deprecated Use {@link #preCompactScannerOpen(ObserverContext, Store, List, ScanType, long, - * InternalScanner, CompactionRequest, long)} instead. - */ - @Deprecated - default InternalScanner preCompactScannerOpen( - final ObserverContext c, - final Store store, List scanners, final ScanType scanType, - final long earliestPutTs, final InternalScanner s, CompactionRequest request) - throws IOException { - return preCompactScannerOpen(c, store, scanners, scanType, earliestPutTs, s); - } - /** * Called prior to writing the {@link StoreFile}s selected for compaction into a new * {@code StoreFile} and prior to creating the scanner used to read the input files. To override @@ -382,40 +250,9 @@ public interface RegionObserver extends Coprocessor { * @return the scanner to use during compaction. {@code null} if the default implementation is to * be used. */ - default InternalScanner preCompactScannerOpen( - final ObserverContext c, - final Store store, List scanners, final ScanType scanType, - final long earliestPutTs, final InternalScanner s, final CompactionRequest request, - final long readPoint) throws IOException { - return preCompactScannerOpen(c, store, scanners, scanType, earliestPutTs, s, request); - } - - /** - * Called prior to writing the {@link StoreFile}s selected for compaction into a new - * {@code StoreFile} and prior to creating the scanner used to read the input files. To override - * or modify the compaction process, implementing classes can return a new scanner to provide the - * KeyValues to be stored into the new {@code StoreFile} or null to perform the default - * processing. Calling {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} has no - * effect in this hook. - * @param c the environment provided by the region server - * @param store the store being compacted - * @param scanners the list {@link org.apache.hadoop.hbase.regionserver.StoreFileScanner}s - * to be read from - * @param scanType the {@link ScanType} indicating whether this is a major or minor compaction - * @param earliestPutTs timestamp of the earliest put that was found in any of the involved store - * files - * @param s the base scanner, if not {@code null}, from previous RegionObserver in the chain - * @return the scanner to use during compaction. {@code null} if the default implementation is to - * be used. - * @deprecated Use - * {@link #preCompactScannerOpen(ObserverContext, Store, List, ScanType, long, - * InternalScanner, CompactionRequest, long)} instead. - */ - @Deprecated - default InternalScanner preCompactScannerOpen( - final ObserverContext c, - final Store store, List scanners, final ScanType scanType, - final long earliestPutTs, final InternalScanner s) throws IOException { + default InternalScanner preCompactScannerOpen(ObserverContext c, + Store store, List scanners, ScanType scanType, long earliestPutTs, + InternalScanner s, CompactionRequest request, long readPoint) throws IOException { return s; } @@ -426,137 +263,23 @@ public interface RegionObserver extends Coprocessor { * @param resultFile the new store file written out during compaction * @param request the requested compaction */ - default void postCompact(final ObserverContext c, final Store store, - StoreFile resultFile, CompactionRequest request) throws IOException { - postCompact(c, store, resultFile); - } + default void postCompact(ObserverContext c, Store store, + StoreFile resultFile, CompactionRequest request) throws IOException {} - /** - * Called after compaction has completed and the new store file has been moved in to place. - * @param c the environment provided by the region server - * @param store the store being compacted - * @param resultFile the new store file written out during compaction - * @deprecated Use {@link #postCompact(ObserverContext, Store, StoreFile, CompactionRequest)} - * instead - */ - @Deprecated - default void postCompact(final ObserverContext c, final Store store, - StoreFile resultFile) throws IOException {} - - /** - * Called before the region is split. - * @param c the environment provided by the region server - * (e.getRegion() returns the parent region) - * @deprecated No longer called in hbase2/AMv2 given the master runs splits now; - * @see MasterObserver - */ - @Deprecated - default void preSplit(final ObserverContext c) throws IOException {} - - /** - * Called before the region is split. - * @param c the environment provided by the region server - * (e.getRegion() returns the parent region) - * - * Note: the logic moves to Master; it is unused in RS - * @deprecated No longer called in hbase2/AMv2 given the master runs splits now; - * @see MasterObserver - */ - @Deprecated - default void preSplit(final ObserverContext c, byte[] splitRow) - throws IOException {} - - /** - * Called after the region is split. - * @param c the environment provided by the region server - * (e.getRegion() returns the parent region) - * @param l the left daughter region - * @param r the right daughter region - * @deprecated No longer called in hbase2/AMv2 given the master runs splits now; - * @see MasterObserver - */ - @Deprecated - default void postSplit(final ObserverContext c, final Region l, - final Region r) throws IOException {} - - /** - * This will be called before PONR step as part of split transaction. Calling - * {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} rollback the split - * @param ctx - * @param splitKey - * @param metaEntries - * - * Note: the logic moves to Master; it is unused in RS - * @deprecated No longer called in hbase2/AMv2 given the master runs splits now; - * @see MasterObserver - */ - @Deprecated - default void preSplitBeforePONR(final ObserverContext ctx, - byte[] splitKey, List metaEntries) throws IOException {} - - /** - * This will be called after PONR step as part of split transaction - * Calling {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} has no - * effect in this hook. - * @param ctx - * Note: the logic moves to Master; it is unused in RS - * @deprecated No longer called in hbase2/AMv2 given the master runs splits now; - * @see MasterObserver - */ - @Deprecated - default void preSplitAfterPONR(final ObserverContext ctx) - throws IOException {} - - /** - * This will be called before the roll back of the split region is completed - * @param ctx - * - * Note: the logic moves to Master; it is unused in RS - * @deprecated No longer called in hbase2/AMv2 given the master runs splits now; - * @see MasterObserver - */ - @Deprecated - default void preRollBackSplit(final ObserverContext ctx) - throws IOException {} - - /** - * This will be called after the roll back of the split region is completed - * @param ctx - * - * Note: the logic moves to Master; it is unused in RS - * @deprecated No longer called in hbase2/AMv2 given the master runs splits now; - * @see MasterObserver - */ - @Deprecated - default void postRollBackSplit(final ObserverContext ctx) - throws IOException {} - - /** - * Called after any split request is processed. This will be called irrespective of success or - * failure of the split. - * @param ctx - * @deprecated No longer called in hbase2/AMv2 given the master runs splits now; - * implement {@link MasterObserver#postCompletedSplitRegionAction(ObserverContext, HRegionInfo, HRegionInfo)} - * instead. - */ - @Deprecated - default void postCompleteSplit(final ObserverContext ctx) - throws IOException {} /** * Called before the region is reported as closed to the master. * @param c the environment provided by the region server * @param abortRequested true if the region server is aborting */ - default void preClose(final ObserverContext c, - boolean abortRequested) throws IOException {} + default void preClose(ObserverContext c, boolean abortRequested) + throws IOException {} /** * Called after the region is reported as closed to the master. * @param c the environment provided by the region server * @param abortRequested true if the region server is aborting */ - default void postClose(final ObserverContext c, - boolean abortRequested) {} + default void postClose(ObserverContext c, boolean abortRequested) {} /** * Called before the client performs a Get @@ -571,9 +294,8 @@ public interface RegionObserver extends Coprocessor { * is bypassed. Can be modified. Will not be used if default processing * is not bypassed. */ - default void preGetOp(final ObserverContext c, final Get get, - final List result) - throws IOException {} + default void preGetOp(ObserverContext c, Get get, List result) + throws IOException {} /** * Called after the client performs a Get @@ -587,9 +309,8 @@ public interface RegionObserver extends Coprocessor { * @param get the Get request * @param result the result to return to the client, modify as necessary */ - default void postGetOp(final ObserverContext c, final Get get, - final List result) - throws IOException {} + default void postGetOp(ObserverContext c, Get get, + List result) throws IOException {} /** * Called before the client tests for existence using a Get. @@ -603,8 +324,8 @@ public interface RegionObserver extends Coprocessor { * @param exists * @return the value to return to the client if bypassing default processing */ - default boolean preExists(final ObserverContext c, final Get get, - final boolean exists) throws IOException { + default boolean preExists(ObserverContext c, Get get, + boolean exists) throws IOException { return exists; } @@ -618,8 +339,8 @@ public interface RegionObserver extends Coprocessor { * @param exists the result returned by the region server * @return the result to return to the client */ - default boolean postExists(final ObserverContext c, final Get get, - final boolean exists) throws IOException { + default boolean postExists(ObserverContext c, Get get, + boolean exists) throws IOException { return exists; } @@ -638,9 +359,8 @@ public interface RegionObserver extends Coprocessor { * @param edit The WALEdit object that will be written to the wal * @param durability Persistence guarantee for this Put */ - default void prePut(final ObserverContext c, - final Put put, final WALEdit edit, final Durability durability) - throws IOException {} + default void prePut(ObserverContext c, Put put, WALEdit edit, + Durability durability) throws IOException {} /** * Called after the client stores a value. @@ -655,9 +375,8 @@ public interface RegionObserver extends Coprocessor { * @param edit The WALEdit object for the wal * @param durability Persistence guarantee for this Put */ - default void postPut(final ObserverContext c, - final Put put, final WALEdit edit, final Durability durability) - throws IOException {} + default void postPut(ObserverContext c, Put put, WALEdit edit, + Durability durability) throws IOException {} /** * Called before the client deletes a value. @@ -674,27 +393,24 @@ public interface RegionObserver extends Coprocessor { * @param edit The WALEdit object for the wal * @param durability Persistence guarantee for this Delete */ - default void preDelete(final ObserverContext c, - final Delete delete, final WALEdit edit, final Durability durability) - throws IOException {} -/** - * Called before the server updates the timestamp for version delete with latest timestamp. - *

- * Call CoprocessorEnvironment#bypass to skip default actions - *

- * Call CoprocessorEnvironment#complete to skip any subsequent chained - * coprocessors - * @param c the environment provided by the region server - * @param mutation - the parent mutation associated with this delete cell - * @param cell - The deleteColumn with latest version cell - * @param byteNow - timestamp bytes - * @param get - the get formed using the current cell's row. - * Note that the get does not specify the family and qualifier - */ - default void prePrepareTimeStampForDeleteVersion( - final ObserverContext c, - final Mutation mutation, final Cell cell, final byte[] byteNow, - final Get get) throws IOException {} + default void preDelete(ObserverContext c, Delete delete, + WALEdit edit, Durability durability) throws IOException {} + + /** + * Called before the server updates the timestamp for version delete with latest timestamp. + *

+ * Call CoprocessorEnvironment#bypass to skip default actions + *

+ * Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors + * @param c the environment provided by the region server + * @param mutation - the parent mutation associated with this delete cell + * @param cell - The deleteColumn with latest version cell + * @param byteNow - timestamp bytes + * @param get - the get formed using the current cell's row. Note that the get does not specify + * the family and qualifier + */ + default void prePrepareTimeStampForDeleteVersion(ObserverContext c, + Mutation mutation, Cell cell, byte[] byteNow, Get get) throws IOException {} /** * Called after the client deletes a value. @@ -709,9 +425,8 @@ public interface RegionObserver extends Coprocessor { * @param edit The WALEdit object for the wal * @param durability Persistence guarantee for this Delete */ - default void postDelete(final ObserverContext c, - final Delete delete, final WALEdit edit, final Durability durability) - throws IOException {} + default void postDelete(ObserverContext c, Delete delete, + WALEdit edit, Durability durability) throws IOException {} /** * This will be called for every batch mutation operation happening at the server. This will be @@ -725,8 +440,8 @@ public interface RegionObserver extends Coprocessor { * @param c the environment provided by the region server * @param miniBatchOp batch of Mutations getting applied to region. */ - default void preBatchMutate(final ObserverContext c, - final MiniBatchOperationInProgress miniBatchOp) throws IOException {} + default void preBatchMutate(ObserverContext c, + MiniBatchOperationInProgress miniBatchOp) throws IOException {} /** * This will be called after applying a batch of Mutations on a region. The Mutations are added to @@ -740,8 +455,8 @@ public interface RegionObserver extends Coprocessor { * @param c the environment provided by the region server * @param miniBatchOp batch of Mutations applied to region. */ - default void postBatchMutate(final ObserverContext c, - final MiniBatchOperationInProgress miniBatchOp) throws IOException {} + default void postBatchMutate(ObserverContext c, + MiniBatchOperationInProgress miniBatchOp) throws IOException {} /** * This will be called for region operations where read lock is acquired in @@ -749,7 +464,7 @@ public interface RegionObserver extends Coprocessor { * @param ctx * @param operation The operation is about to be taken on the region */ - default void postStartRegionOperation(final ObserverContext ctx, + default void postStartRegionOperation(ObserverContext ctx, Operation operation) throws IOException {} /** @@ -757,7 +472,7 @@ public interface RegionObserver extends Coprocessor { * @param ctx * @param operation */ - default void postCloseRegionOperation(final ObserverContext ctx, + default void postCloseRegionOperation(ObserverContext ctx, Operation operation) throws IOException {} /** @@ -770,9 +485,8 @@ public interface RegionObserver extends Coprocessor { * @param miniBatchOp * @param success true if batch operation is successful otherwise false. */ - default void postBatchMutateIndispensably(final ObserverContext ctx, - MiniBatchOperationInProgress miniBatchOp, final boolean success) - throws IOException {} + default void postBatchMutateIndispensably(ObserverContext ctx, + MiniBatchOperationInProgress miniBatchOp, boolean success) throws IOException {} /** * Called before checkAndPut. @@ -795,11 +509,9 @@ public interface RegionObserver extends Coprocessor { * @return the return value to return to client if bypassing default * processing */ - default boolean preCheckAndPut(final ObserverContext c, - final byte [] row, final byte [] family, final byte [] qualifier, - final CompareOperator op, final ByteArrayComparable comparator, - final Put put, final boolean result) - throws IOException { + default boolean preCheckAndPut(ObserverContext c, byte[] row, + byte[] family, byte[] qualifier, CompareOperator op, ByteArrayComparable comparator, Put put, + boolean result) throws IOException { return result; } @@ -828,10 +540,9 @@ public interface RegionObserver extends Coprocessor { * @return the return value to return to client if bypassing default * processing */ - default boolean preCheckAndPutAfterRowLock(final ObserverContext c, - final byte[] row, final byte[] family, final byte[] qualifier, final CompareOperator op, - final ByteArrayComparable comparator, final Put put, - final boolean result) throws IOException { + default boolean preCheckAndPutAfterRowLock(ObserverContext c, + byte[] row, byte[] family, byte[] qualifier, CompareOperator op, + ByteArrayComparable comparator, Put put, boolean result) throws IOException { return result; } @@ -853,11 +564,9 @@ public interface RegionObserver extends Coprocessor { * @param result from the checkAndPut * @return the possibly transformed return value to return to client */ - default boolean postCheckAndPut(final ObserverContext c, - final byte [] row, final byte [] family, final byte [] qualifier, - final CompareOperator op, final ByteArrayComparable comparator, - final Put put, final boolean result) - throws IOException { + default boolean postCheckAndPut(ObserverContext c, byte[] row, + byte[] family, byte[] qualifier, CompareOperator op, ByteArrayComparable comparator, Put put, + boolean result) throws IOException { return result; } @@ -881,11 +590,9 @@ public interface RegionObserver extends Coprocessor { * @param result * @return the value to return to client if bypassing default processing */ - default boolean preCheckAndDelete(final ObserverContext c, - final byte [] row, final byte [] family, final byte [] qualifier, - final CompareOperator op, final ByteArrayComparable comparator, - final Delete delete, final boolean result) - throws IOException { + default boolean preCheckAndDelete(ObserverContext c, byte[] row, + byte[] family, byte[] qualifier, CompareOperator op, ByteArrayComparable comparator, + Delete delete, boolean result) throws IOException { return result; } @@ -913,12 +620,9 @@ public interface RegionObserver extends Coprocessor { * @param result * @return the value to return to client if bypassing default processing */ - default boolean preCheckAndDeleteAfterRowLock( - final ObserverContext c, - final byte[] row, final byte[] family, final byte[] qualifier, - final CompareOperator op, - final ByteArrayComparable comparator, final Delete delete, - final boolean result) throws IOException { + default boolean preCheckAndDeleteAfterRowLock(ObserverContext c, + byte[] row, byte[] family, byte[] qualifier, CompareOperator op, + ByteArrayComparable comparator, Delete delete, boolean result) throws IOException { return result; } @@ -940,56 +644,9 @@ public interface RegionObserver extends Coprocessor { * @param result from the CheckAndDelete * @return the possibly transformed returned value to return to client */ - default boolean postCheckAndDelete(final ObserverContext c, - final byte [] row, final byte [] family, final byte [] qualifier, - final CompareOperator op, final ByteArrayComparable comparator, - final Delete delete, final boolean result) - throws IOException { - return result; - } - - /** - * Called before incrementColumnValue - *

- * Call CoprocessorEnvironment#bypass to skip default actions - *

- * Call CoprocessorEnvironment#complete to skip any subsequent chained - * coprocessors - * @param c the environment provided by the region server - * @param row row to check - * @param family column family - * @param qualifier column qualifier - * @param amount long amount to increment - * @param writeToWAL true if the change should be written to the WAL - * @return value to return to the client if bypassing default processing - * @deprecated This hook is no longer called by the RegionServer - */ - @Deprecated - default long preIncrementColumnValue(final ObserverContext c, - final byte [] row, final byte [] family, final byte [] qualifier, - final long amount, final boolean writeToWAL) throws IOException { - return amount; - } - - /** - * Called after incrementColumnValue - *

- * Call CoprocessorEnvironment#complete to skip any subsequent chained - * coprocessors - * @param c the environment provided by the region server - * @param row row to check - * @param family column family - * @param qualifier column qualifier - * @param amount long amount to increment - * @param writeToWAL true if the change should be written to the WAL - * @param result the result returned by incrementColumnValue - * @return the result to return to the client - * @deprecated This hook is no longer called by the RegionServer - */ - @Deprecated - default long postIncrementColumnValue(final ObserverContext c, - final byte [] row, final byte [] family, final byte [] qualifier, - final long amount, final boolean writeToWAL, final long result) throws IOException { + default boolean postCheckAndDelete(ObserverContext c, byte[] row, + byte[] family, byte[] qualifier, CompareOperator op, ByteArrayComparable comparator, + Delete delete, boolean result) throws IOException { return result; } @@ -1007,9 +664,8 @@ public interface RegionObserver extends Coprocessor { * @param append Append object * @return result to return to the client if bypassing default processing */ - default Result preAppend(final ObserverContext c, - final Append append) - throws IOException { + default Result preAppend(ObserverContext c, Append append) + throws IOException { return null; } @@ -1031,8 +687,8 @@ public interface RegionObserver extends Coprocessor { * @param append Append object * @return result to return to the client if bypassing default processing */ - default Result preAppendAfterRowLock(final ObserverContext c, - final Append append) throws IOException { + default Result preAppendAfterRowLock(ObserverContext c, + Append append) throws IOException { return null; } @@ -1049,9 +705,8 @@ public interface RegionObserver extends Coprocessor { * @param result the result returned by increment * @return the result to return to the client */ - default Result postAppend(final ObserverContext c, - final Append append, final Result result) - throws IOException { + default Result postAppend(ObserverContext c, Append append, + Result result) throws IOException { return result; } @@ -1069,9 +724,8 @@ public interface RegionObserver extends Coprocessor { * @param increment increment object * @return result to return to the client if bypassing default processing */ - default Result preIncrement(final ObserverContext c, - final Increment increment) - throws IOException { + default Result preIncrement(ObserverContext c, Increment increment) + throws IOException { return null; } @@ -1096,8 +750,8 @@ public interface RegionObserver extends Coprocessor { * @return result to return to the client if bypassing default processing * if an error occurred on the coprocessor */ - default Result preIncrementAfterRowLock(final ObserverContext c, - final Increment increment) throws IOException { + default Result preIncrementAfterRowLock(ObserverContext c, + Increment increment) throws IOException { return null; } @@ -1114,8 +768,8 @@ public interface RegionObserver extends Coprocessor { * @param result the result returned by increment * @return the result to return to the client */ - default Result postIncrement(final ObserverContext c, - final Increment increment, final Result result) throws IOException { + default Result postIncrement(ObserverContext c, Increment increment, + Result result) throws IOException { return result; } @@ -1135,39 +789,8 @@ public interface RegionObserver extends Coprocessor { * @return an RegionScanner instance to use instead of the base scanner if * overriding default behavior, null otherwise */ - default RegionScanner preScannerOpen(final ObserverContext c, - final Scan scan, final RegionScanner s) throws IOException { - return s; - } - - /** - * Called before a store opens a new scanner. - * This hook is called when a "user" scanner is opened. - *

- * See {@link #preFlushScannerOpen(ObserverContext, Store, List, InternalScanner, long)} and {@link #preCompactScannerOpen(ObserverContext, - * Store, List, ScanType, long, InternalScanner, CompactionRequest, long)} - * 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 - * @return a KeyValueScanner instance to use or {@code null} to use the default implementation - * @deprecated use {@link #preStoreScannerOpen(ObserverContext, Store, Scan, NavigableSet, - * KeyValueScanner, long)} instead - */ - @Deprecated - default KeyValueScanner preStoreScannerOpen(final ObserverContext c, - final Store store, final Scan scan, final NavigableSet targetCols, - final KeyValueScanner s) throws IOException { + default RegionScanner preScannerOpen(ObserverContext c, Scan scan, + RegionScanner s) throws IOException { return s; } @@ -1194,10 +817,10 @@ public interface RegionObserver extends Coprocessor { * @param readPt the read point * @return a KeyValueScanner instance to use or {@code null} to use the default implementation */ - default KeyValueScanner preStoreScannerOpen(final ObserverContext c, - final Store store, final Scan scan, final NavigableSet targetCols, - final KeyValueScanner s, final long readPt) throws IOException { - return preStoreScannerOpen(c, store, scan, targetCols, s); + default KeyValueScanner preStoreScannerOpen(ObserverContext c, + Store store, Scan scan, NavigableSet targetCols, KeyValueScanner s, long readPt) + throws IOException { + return s; } /** @@ -1213,9 +836,8 @@ public interface RegionObserver extends Coprocessor { * @param s if not null, the base scanner * @return the scanner instance to use */ - default RegionScanner postScannerOpen(final ObserverContext c, - final Scan scan, final RegionScanner s) - throws IOException { + default RegionScanner postScannerOpen(ObserverContext c, Scan scan, + RegionScanner s) throws IOException { return s; } @@ -1238,10 +860,8 @@ public interface RegionObserver extends Coprocessor { * @param hasNext the 'has more' indication * @return 'has more' indication that should be sent to client */ - default boolean preScannerNext(final ObserverContext c, - final InternalScanner s, final List result, - final int limit, final boolean hasNext) - throws IOException { + default boolean preScannerNext(ObserverContext c, InternalScanner s, + List result, int limit, boolean hasNext) throws IOException { return hasNext; } @@ -1260,41 +880,11 @@ public interface RegionObserver extends Coprocessor { * @param hasNext the 'has more' indication * @return 'has more' indication that should be sent to client */ - default boolean postScannerNext(final ObserverContext c, - final InternalScanner s, final List result, final int limit, - final boolean hasNext) throws IOException { + default boolean postScannerNext(ObserverContext c, + InternalScanner s, List result, int limit, boolean hasNext) throws IOException { return hasNext; } - /** - * This will be called by the scan flow when the current scanned row is being filtered out by the - * filter. The filter may be filtering out the row via any of the below scenarios - *

    - *
  1. - * boolean filterRowKey(byte [] buffer, int offset, int length) returning true
  2. - *
  3. - * boolean filterRow() returning true
  4. - *
  5. - * default void filterRow(List<KeyValue> kvs) removing all the kvs - * from the passed List
  6. - *
- * @param c the environment provided by the region server - * @param s the scanner - * @param currentRow The current rowkey which got filtered out - * @param offset offset to rowkey - * @param length length of rowkey - * @param hasMore the 'has more' indication - * @return whether more rows are available for the scanner or not - * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0. - * Instead use {@link #postScannerFilterRow(ObserverContext, InternalScanner, Cell, boolean)} - */ - @Deprecated - default boolean postScannerFilterRow(final ObserverContext c, - final InternalScanner s, final byte[] currentRow, final int offset, final short length, - final boolean hasMore) throws IOException { - return hasMore; - } - /** * This will be called by the scan flow when the current scanned row is being filtered out by the * filter. The filter may be filtering out the row via any of the below scenarios @@ -1316,8 +906,8 @@ public interface RegionObserver extends Coprocessor { * @param hasMore the 'has more' indication * @return whether more rows are available for the scanner or not */ - default boolean postScannerFilterRow(final ObserverContext c, - final InternalScanner s, Cell curRowCell, final boolean hasMore) throws IOException { + default boolean postScannerFilterRow(ObserverContext c, + InternalScanner s, Cell curRowCell, boolean hasMore) throws IOException { return hasMore; } @@ -1331,8 +921,8 @@ public interface RegionObserver extends Coprocessor { * @param c the environment provided by the region server * @param s the scanner */ - default void preScannerClose(final ObserverContext c, - final InternalScanner s) throws IOException {} + default void preScannerClose(ObserverContext c, InternalScanner s) + throws IOException {} /** * Called after the client closes a scanner. @@ -1342,8 +932,8 @@ public interface RegionObserver extends Coprocessor { * @param ctx the environment provided by the region server * @param s the scanner */ - default void postScannerClose(final ObserverContext ctx, - final InternalScanner s) throws IOException {} + default void postScannerClose(ObserverContext ctx, + InternalScanner s) throws IOException {} /** * Called before replaying WALs for this region. @@ -1353,7 +943,7 @@ public interface RegionObserver extends Coprocessor { * @param info the RegionInfo for this region * @param edits the file of recovered edits */ - default void preReplayWALs(final ObserverContext ctx, + default void preReplayWALs(ObserverContext ctx, HRegionInfo info, Path edits) throws IOException {} /** @@ -1362,7 +952,7 @@ public interface RegionObserver extends Coprocessor { * @param info the RegionInfo for this region * @param edits the file of recovered edits */ - default void postReplayWALs(final ObserverContext ctx, + default void postReplayWALs(ObserverContext ctx, HRegionInfo info, Path edits) throws IOException {} /** @@ -1370,7 +960,7 @@ public interface RegionObserver extends Coprocessor { * replayed for this region. * @param ctx the environment provided by the region server */ - default void preWALRestore(final ObserverContext ctx, + default void preWALRestore(ObserverContext ctx, HRegionInfo info, WALKey logKey, WALEdit logEdit) throws IOException {} /** @@ -1378,7 +968,7 @@ public interface RegionObserver extends Coprocessor { * replayed for this region. * @param ctx the environment provided by the region server */ - default void postWALRestore(final ObserverContext ctx, + default void postWALRestore(ObserverContext ctx, HRegionInfo info, WALKey logKey, WALEdit logEdit) throws IOException {} /** @@ -1389,7 +979,7 @@ public interface RegionObserver extends Coprocessor { * @param familyPaths pairs of { CF, HFile path } submitted for bulk load. Adding * or removing from this list will add or remove HFiles to be bulk loaded. */ - default void preBulkLoadHFile(final ObserverContext ctx, + default void preBulkLoadHFile(ObserverContext ctx, List> familyPaths) throws IOException {} /** @@ -1400,9 +990,8 @@ public interface RegionObserver extends Coprocessor { * @param pairs List of pairs of { HFile location in staging dir, HFile path in region dir } * Each pair are for the same hfile. */ - default void preCommitStoreFile(final ObserverContext ctx, - final byte[] family, final List> pairs) throws IOException { - } + default void preCommitStoreFile(ObserverContext ctx, byte[] family, + List> pairs) throws IOException {} /** * Called after moving bulk loaded hfile to region directory. @@ -1412,38 +1001,21 @@ public interface RegionObserver extends Coprocessor { * @param srcPath Path to file before the move * @param dstPath Path to file after the move */ - default void postCommitStoreFile(final ObserverContext ctx, - final byte[] family, Path srcPath, Path dstPath) throws IOException {} + default void postCommitStoreFile(ObserverContext ctx, byte[] family, + Path srcPath, Path dstPath) throws IOException {} /** * Called after bulkLoadHFile. * * @param ctx the environment provided by the region server * @param stagingFamilyPaths pairs of { CF, HFile path } submitted for bulk load - * @param finalPaths Map of CF to List of file paths for the final loaded files + * @param finalPaths Map of CF to List of file paths for the loaded files * @param hasLoaded whether the bulkLoad was successful * @return the new value of hasLoaded */ - default boolean postBulkLoadHFile(final ObserverContext ctx, - List> stagingFamilyPaths, Map> finalPaths, - boolean hasLoaded) throws IOException { - return postBulkLoadHFile(ctx, stagingFamilyPaths, hasLoaded); - } - - /** - * Called after bulkLoadHFile. - * - * @param ctx the environment provided by the region server - * @param stagingFamilyPaths pairs of { CF, HFile path } submitted for bulk load - * @param hasLoaded whether the bulkLoad was successful - * @return the new value of hasLoaded - * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0 - * (HBASE-17123). - * Use {@link #postBulkLoadHFile(ObserverContext, List, Map, boolean)}. - */ - @Deprecated - default boolean postBulkLoadHFile(final ObserverContext ctx, - List> stagingFamilyPaths, boolean hasLoaded) throws IOException { + default boolean postBulkLoadHFile(ObserverContext ctx, + List> stagingFamilyPaths, Map> finalPaths, + boolean hasLoaded) throws IOException { return hasLoaded; } @@ -1463,10 +1035,9 @@ public interface RegionObserver extends Coprocessor { * @return a Reader instance to use instead of the base reader if overriding * default behavior, null otherwise */ - default StoreFileReader preStoreFileReaderOpen( - final ObserverContext ctx, - final FileSystem fs, final Path p, final FSDataInputStreamWrapper in, long size, - final CacheConfig cacheConf, final Reference r, StoreFileReader reader) throws IOException { + default StoreFileReader preStoreFileReaderOpen(ObserverContext ctx, + FileSystem fs, Path p, FSDataInputStreamWrapper in, long size, CacheConfig cacheConf, + Reference r, StoreFileReader reader) throws IOException { return reader; } @@ -1483,10 +1054,9 @@ public interface RegionObserver extends Coprocessor { * @param reader the base reader instance * @return The reader to use */ - default StoreFileReader postStoreFileReaderOpen( - final ObserverContext ctx, - final FileSystem fs, final Path p, final FSDataInputStreamWrapper in, long size, - final CacheConfig cacheConf, final Reference r, StoreFileReader reader) throws IOException { + default StoreFileReader postStoreFileReaderOpen(ObserverContext ctx, + FileSystem fs, Path p, FSDataInputStreamWrapper in, long size, CacheConfig cacheConf, + Reference r, StoreFileReader reader) throws IOException { return reader; } @@ -1517,8 +1087,8 @@ public interface RegionObserver extends Coprocessor { * @return the Delete Tracker */ default DeleteTracker postInstantiateDeleteTracker( - final ObserverContext ctx, DeleteTracker delTracker) + ObserverContext ctx, DeleteTracker delTracker) throws IOException { - return delTracker; + return delTracker; } } 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 f353d8b3012..0efcf5dde0a 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 @@ -19,6 +19,9 @@ package org.apache.hadoop.hbase.regionserver; +import com.google.protobuf.Message; +import com.google.protobuf.Service; + import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -37,8 +40,8 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; -import org.apache.hadoop.hbase.CompareOperator; import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CompareOperator; import org.apache.hadoop.hbase.Coprocessor; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseInterfaceAudience; @@ -73,17 +76,15 @@ import org.apache.hadoop.hbase.metrics.MetricRegistry; import org.apache.hadoop.hbase.regionserver.Region.Operation; import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.regionserver.querymatcher.DeleteTracker; -import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.CoprocessorClassLoader; import org.apache.hadoop.hbase.util.Pair; +import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.hadoop.hbase.wal.WALKey; import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableList; import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists; -import com.google.protobuf.Message; -import com.google.protobuf.Service; /** * Implements the coprocessor environment and runtime support for coprocessors @@ -96,8 +97,8 @@ public class RegionCoprocessorHost private static final Log LOG = LogFactory.getLog(RegionCoprocessorHost.class); // The shared data map - private static ReferenceMap sharedDataMap = - new ReferenceMap(AbstractReferenceMap.ReferenceStrength.HARD, + private static final ReferenceMap> SHARED_DATA_MAP = + new ReferenceMap<>(AbstractReferenceMap.ReferenceStrength.HARD, AbstractReferenceMap.ReferenceStrength.WEAK); // optimization: no need to call postScannerFilterRow, if no coprocessor implements it @@ -401,14 +402,11 @@ public class RegionCoprocessorHost } ConcurrentMap classData; // make sure only one thread can add maps - synchronized (sharedDataMap) { + synchronized (SHARED_DATA_MAP) { // as long as at least one RegionEnvironment holds on to its classData it will // remain in this map - classData = (ConcurrentMap)sharedDataMap.get(implClass.getName()); - if (classData == null) { - classData = new ConcurrentHashMap<>(); - sharedDataMap.put(implClass.getName(), classData); - } + classData = + SHARED_DATA_MAP.computeIfAbsent(implClass.getName(), k -> new ConcurrentHashMap<>()); } return new RegionEnvironment(instance, priority, seq, conf, region, rsServices, classData); @@ -672,136 +670,7 @@ public class RegionCoprocessorHost }); } - /** - * Invoked just before a split - * @throws IOException - */ - @Deprecated - public void preSplit(final User user) throws IOException { - execOperation(coprocessors.isEmpty() ? null : new RegionOperation(user) { - @Override - public void call(RegionObserver oserver, ObserverContext ctx) - throws IOException { - oserver.preSplit(ctx); - } - }); - } - - /** - * Invoked just before a split - * @throws IOException - * - * Note: the logic moves to Master; it is unused in RS - */ - @Deprecated - public void preSplit(final byte[] splitRow, final User user) throws IOException { - execOperation(coprocessors.isEmpty() ? null : new RegionOperation(user) { - @Override - public void call(RegionObserver oserver, ObserverContext ctx) - throws IOException { - oserver.preSplit(ctx, splitRow); - } - }); - } - - /** - * Invoked just after a split - * @param l the new left-hand daughter region - * @param r the new right-hand daughter region - * @throws IOException - * - * Note: the logic moves to Master; it is unused in RS - */ - @Deprecated - public void postSplit(final Region l, final Region r, final User user) throws IOException { - execOperation(coprocessors.isEmpty() ? null : new RegionOperation(user) { - @Override - public void call(RegionObserver oserver, ObserverContext ctx) - throws IOException { - oserver.postSplit(ctx, l, r); - } - }); - } - - /** - * Note: the logic moves to Master; it is unused in RS - */ - @Deprecated - public boolean preSplitBeforePONR(final byte[] splitKey, - final List metaEntries, final User user) throws IOException { - return execOperation(coprocessors.isEmpty() ? null : new RegionOperation(user) { - @Override - public void call(RegionObserver oserver, ObserverContext ctx) - throws IOException { - oserver.preSplitBeforePONR(ctx, splitKey, metaEntries); - } - }); - } - - /** - * Note: the logic moves to Master; it is unused in RS - */ - @Deprecated - public void preSplitAfterPONR(final User user) throws IOException { - execOperation(coprocessors.isEmpty() ? null : new RegionOperation(user) { - @Override - public void call(RegionObserver oserver, ObserverContext ctx) - throws IOException { - oserver.preSplitAfterPONR(ctx); - } - }); - } - - /** - * Invoked just before the rollback of a failed split is started - * @throws IOException - * - * Note: the logic moves to Master; it is unused in RS - */ - @Deprecated - public void preRollBackSplit(final User user) throws IOException { - execOperation(coprocessors.isEmpty() ? null : new RegionOperation(user) { - @Override - public void call(RegionObserver oserver, ObserverContext ctx) - throws IOException { - oserver.preRollBackSplit(ctx); - } - }); - } - - /** - * Invoked just after the rollback of a failed split is done - * @throws IOException - * - * Note: the logic moves to Master; it is unused in RS - */ - @Deprecated - public void postRollBackSplit(final User user) throws IOException { - execOperation(coprocessors.isEmpty() ? null : new RegionOperation(user) { - @Override - public void call(RegionObserver oserver, ObserverContext ctx) - throws IOException { - oserver.postRollBackSplit(ctx); - } - }); - } - - /** - * Invoked after a split is completed irrespective of a failure or success. - * @throws IOException - */ - public void postCompleteSplit() throws IOException { - execOperation(coprocessors.isEmpty() ? null : new RegionOperation() { - @Override - public void call(RegionObserver oserver, ObserverContext ctx) - throws IOException { - oserver.postCompleteSplit(ctx); - } - }); - } - // RegionObserver support - /** * @param get the Get request * @return true if default processing should be bypassed @@ -1272,8 +1141,7 @@ public class RegionCoprocessorHost /** * See - * {@link RegionObserver#preStoreScannerOpen(ObserverContext, - * Store, Scan, NavigableSet, KeyValueScanner)} + * {@link RegionObserver#preStoreScannerOpen(ObserverContext, Store, Scan, NavigableSet, KeyValueScanner, long)} */ public KeyValueScanner preStoreScannerOpen(final Store store, final Scan scan, final NavigableSet targetCols, final long readPt) throws IOException { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java index 6aeba249cb0..62f6aeef943 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java @@ -92,6 +92,7 @@ import org.apache.hadoop.hbase.regionserver.RegionScanner; import org.apache.hadoop.hbase.regionserver.ScanType; import org.apache.hadoop.hbase.regionserver.ScannerContext; import org.apache.hadoop.hbase.regionserver.Store; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.hadoop.hbase.replication.ReplicationEndpoint; import org.apache.hadoop.hbase.replication.ReplicationPeerConfig; @@ -1530,11 +1531,10 @@ public class AccessController implements MasterObserver, RegionObserver, RegionS } @Override - public InternalScanner preCompact(ObserverContext c, - final Store store, final InternalScanner scanner, final ScanType scanType) - throws IOException { + public InternalScanner preCompact(ObserverContext c, Store store, + InternalScanner scanner, ScanType scanType, CompactionRequest request) throws IOException { requirePermission(getActiveUser(c), "compact", getTableName(c.getEnvironment()), null, null, - Action.ADMIN, Action.CREATE); + Action.ADMIN, Action.CREATE); return scanner; } @@ -1895,30 +1895,6 @@ public class AccessController implements MasterObserver, RegionObserver, RegionS return result; } - @Override - public long preIncrementColumnValue(final ObserverContext c, - final byte [] row, final byte [] family, final byte [] qualifier, - final long amount, final boolean writeToWAL) - throws IOException { - // Require WRITE permission to the table, CF, and the KV to be replaced by the - // incremented value - RegionCoprocessorEnvironment env = c.getEnvironment(); - Map> families = makeFamilyMap(family, qualifier); - User user = getActiveUser(c); - AuthResult authResult = permissionGranted(OpType.INCREMENT_COLUMN_VALUE, user, env, families, - Action.WRITE); - if (!authResult.isAllowed() && cellFeaturesEnabled && !compatibleEarlyTermination) { - authResult.setAllowed(checkCoveringPermission(user, OpType.INCREMENT_COLUMN_VALUE, env, row, - families, HConstants.LATEST_TIMESTAMP, Action.WRITE)); - authResult.setReason("Covering cell set"); - } - logResult(authResult); - if (authorizationEnabled && !authResult.isAllowed()) { - throw new AccessDeniedException("Insufficient permissions " + authResult.toContextString()); - } - return -1; - } - @Override public Result preAppend(ObserverContext c, Append append) throws IOException { diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.java index 8dfc8aac4e0..aff3d998ec5 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.java @@ -255,15 +255,8 @@ public class TestAvoidCellReferencesIntoShippedBlocks { public static class CompactorRegionObserver implements RegionObserver { @Override public InternalScanner preCompactScannerOpen(ObserverContext c, - Store store, List scanners, ScanType scanType, - long earliestPutTs, InternalScanner s) throws IOException { - return createCompactorScanner(store, scanners, scanType, earliestPutTs); - } - - @Override - public InternalScanner preCompactScannerOpen(ObserverContext c, - Store store, List scanners, ScanType scanType, - long earliestPutTs, InternalScanner s, CompactionRequest request) throws IOException { + Store store, List scanners, ScanType scanType, long earliestPutTs, + InternalScanner s, CompactionRequest request, long readPoint) throws IOException { return createCompactorScanner(store, scanners, scanType, earliestPutTs); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java index 630c640b5c9..bef6f6bb1ba 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java @@ -19,6 +19,18 @@ package org.apache.hadoop.hbase.coprocessor; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.NavigableSet; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; + import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.Cell; @@ -43,30 +55,19 @@ import org.apache.hadoop.hbase.regionserver.InternalScanner; import org.apache.hadoop.hbase.regionserver.KeyValueScanner; import org.apache.hadoop.hbase.regionserver.Leases; import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress; -import org.apache.hadoop.hbase.regionserver.Region; import org.apache.hadoop.hbase.regionserver.Region.Operation; import org.apache.hadoop.hbase.regionserver.RegionScanner; import org.apache.hadoop.hbase.regionserver.ScanType; import org.apache.hadoop.hbase.regionserver.Store; import org.apache.hadoop.hbase.regionserver.StoreFile; import org.apache.hadoop.hbase.regionserver.StoreFileReader; -import org.apache.hadoop.hbase.wal.WALEdit; -import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableList; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.Pair; +import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.hadoop.hbase.wal.WALKey; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.NavigableSet; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; - -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableList; /** * A sample region observer that tests the RegionObserver interface. @@ -82,8 +83,6 @@ public class SimpleRegionObserver implements RegionObserver { final AtomicInteger ctPreFlush = new AtomicInteger(0); final AtomicInteger ctPreFlushScannerOpen = new AtomicInteger(0); final AtomicInteger ctPostFlush = new AtomicInteger(0); - final AtomicInteger ctPreSplit = new AtomicInteger(0); - final AtomicInteger ctPostSplit = new AtomicInteger(0); final AtomicInteger ctPreCompactSelect = new AtomicInteger(0); final AtomicInteger ctPostCompactSelect = new AtomicInteger(0); final AtomicInteger ctPreCompactScanner = new AtomicInteger(0); @@ -124,8 +123,6 @@ public class SimpleRegionObserver implements RegionObserver { final AtomicInteger ctPostReplayWALs = new AtomicInteger(0); final AtomicInteger ctPreWALRestore = new AtomicInteger(0); final AtomicInteger ctPostWALRestore = new AtomicInteger(0); - final AtomicInteger ctPreSplitBeforePONR = new AtomicInteger(0); - final AtomicInteger ctPreSplitAfterPONR = new AtomicInteger(0); final AtomicInteger ctPreStoreFileReaderOpen = new AtomicInteger(0); final AtomicInteger ctPostStoreFileReaderOpen = new AtomicInteger(0); final AtomicInteger ctPostBatchMutateIndispensably = new AtomicInteger(0); @@ -184,10 +181,11 @@ public class SimpleRegionObserver implements RegionObserver { } @Override - public InternalScanner preFlushScannerOpen(final ObserverContext c, - Store store, List scanners, InternalScanner s) throws IOException { + public InternalScanner preFlushScannerOpen(ObserverContext c, + Store store, List scanners, InternalScanner s, long readPoint) + throws IOException { ctPreFlushScannerOpen.incrementAndGet(); - return null; + return s; } @Override @@ -204,63 +202,36 @@ public class SimpleRegionObserver implements RegionObserver { } @Override - public void preSplit(ObserverContext c) { - ctPreSplit.incrementAndGet(); - } - - @Override - public void preSplitBeforePONR( - ObserverContext ctx, byte[] splitKey, - List metaEntries) throws IOException { - ctPreSplitBeforePONR.incrementAndGet(); - } - - @Override - public void preSplitAfterPONR( - ObserverContext ctx) throws IOException { - ctPreSplitAfterPONR.incrementAndGet(); - } - - @Override - public void postSplit(ObserverContext c, Region l, Region r) { - ctPostSplit.incrementAndGet(); - } - - public boolean wasSplit() { - return ctPreSplit.get() > 0 && ctPostSplit.get() > 0; - } - - @Override - public void preCompactSelection(ObserverContext c, - Store store, List candidates) { + public void preCompactSelection(ObserverContext c, Store store, + List candidates, CompactionRequest request) throws IOException { ctPreCompactSelect.incrementAndGet(); } @Override - public void postCompactSelection(ObserverContext c, - Store store, ImmutableList selected) { + public void postCompactSelection(ObserverContext c, Store store, + ImmutableList selected, CompactionRequest request) { ctPostCompactSelect.incrementAndGet(); } + @Override - public InternalScanner preCompact(ObserverContext e, - Store store, InternalScanner scanner, ScanType scanType) { + public InternalScanner preCompact(ObserverContext c, Store store, + InternalScanner scanner, ScanType scanType, CompactionRequest request) throws IOException { ctPreCompact.incrementAndGet(); return scanner; } @Override - public InternalScanner preCompactScannerOpen( - final ObserverContext c, + public InternalScanner preCompactScannerOpen(ObserverContext c, Store store, List scanners, ScanType scanType, long earliestPutTs, - InternalScanner s) throws IOException { + InternalScanner s, CompactionRequest request, long readPoint) throws IOException { ctPreCompactScanner.incrementAndGet(); - return null; + return s; } @Override - public void postCompact(ObserverContext e, - Store store, StoreFile resultFile) { + public void postCompact(ObserverContext c, Store store, + StoreFile resultFile, CompactionRequest request) throws IOException { ctPostCompact.incrementAndGet(); } @@ -277,11 +248,11 @@ public class SimpleRegionObserver implements RegionObserver { } @Override - public KeyValueScanner preStoreScannerOpen(final ObserverContext c, - final Store store, final Scan scan, final NavigableSet targetCols, - final KeyValueScanner s) throws IOException { + public KeyValueScanner preStoreScannerOpen(ObserverContext c, + Store store, Scan scan, NavigableSet targetCols, KeyValueScanner s, long readPt) + throws IOException { ctPreStoreScannerOpen.incrementAndGet(); - return null; + return s; } @Override @@ -864,22 +835,6 @@ public class SimpleRegionObserver implements RegionObserver { return ctPostFlush.get(); } - public int getCtPreSplit() { - return ctPreSplit.get(); - } - - public int getCtPreSplitBeforePONR() { - return ctPreSplitBeforePONR.get(); - } - - public int getCtPreSplitAfterPONR() { - return ctPreSplitAfterPONR.get(); - } - - public int getCtPostSplit() { - return ctPostSplit.get(); - } - public int getCtPreCompactSelect() { return ctPreCompactSelect.get(); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java index 7013c8c0944..aaf767acf77 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java @@ -61,6 +61,7 @@ import org.apache.hadoop.hbase.regionserver.ScanType; import org.apache.hadoop.hbase.regionserver.ScannerContext; import org.apache.hadoop.hbase.regionserver.Store; import org.apache.hadoop.hbase.regionserver.StoreFile; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.testclassification.CoprocessorTests; import org.apache.hadoop.hbase.testclassification.SmallTests; import org.junit.Rule; @@ -193,13 +194,13 @@ public class TestCoprocessorInterface { } @Override public InternalScanner preCompact(ObserverContext e, - Store store, InternalScanner scanner, ScanType scanType) { + Store store, InternalScanner scanner, ScanType scanType, CompactionRequest request) { preCompactCalled = true; return scanner; } @Override public void postCompact(ObserverContext e, - Store store, StoreFile resultFile) { + Store store, StoreFile resultFile, CompactionRequest request) { postCompactCalled = true; } @Override diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java index 3b7f1f8f473..07fc179cd2b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java @@ -71,6 +71,7 @@ import org.apache.hadoop.hbase.regionserver.ScanType; import org.apache.hadoop.hbase.regionserver.ScannerContext; import org.apache.hadoop.hbase.regionserver.Store; import org.apache.hadoop.hbase.regionserver.StoreFile; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.testclassification.CoprocessorTests; import org.apache.hadoop.hbase.testclassification.MediumTests; import org.apache.hadoop.hbase.tool.LoadIncrementalHFiles; @@ -416,7 +417,7 @@ public class TestRegionObserverInterface { @Override public InternalScanner preCompact(ObserverContext e, Store store, - final InternalScanner scanner, final ScanType scanType) { + final InternalScanner scanner, final ScanType scanType, CompactionRequest request) { return new InternalScanner() { @Override public boolean next(List results) throws IOException { @@ -455,7 +456,7 @@ public class TestRegionObserverInterface { @Override public void postCompact(ObserverContext e, Store store, - StoreFile resultFile) { + StoreFile resultFile, CompactionRequest request) { lastCompaction = EnvironmentEdgeManager.currentTime(); } 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 e9bf09b9b92..8ab017589c7 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 @@ -61,6 +61,7 @@ import org.apache.hadoop.hbase.regionserver.ScannerContext; import org.apache.hadoop.hbase.regionserver.Store; import org.apache.hadoop.hbase.regionserver.StoreScanner; import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController; import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.testclassification.CoprocessorTests; @@ -139,7 +140,8 @@ public class TestRegionObserverScannerOpenHook { @Override public InternalScanner preFlushScannerOpen(ObserverContext c, - Store store, List scanners, InternalScanner s) throws IOException { + Store store, List scanners, InternalScanner s, long readPoint) + throws IOException { scanners.forEach(KeyValueScanner::close); return NO_DATA; } @@ -153,7 +155,8 @@ public class TestRegionObserverScannerOpenHook { @Override public InternalScanner preCompactScannerOpen(ObserverContext c, Store store, List scanners, ScanType scanType, - long earliestPutTs, InternalScanner s) throws IOException { + long earliestPutTs, InternalScanner s, CompactionRequest request, long readPoint) + throws IOException { scanners.forEach(KeyValueScanner::close); return NO_DATA; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.java index defac7b17fb..5179b841c4b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.java @@ -74,6 +74,7 @@ import org.apache.hadoop.hbase.quotas.QuotaUtil; import org.apache.hadoop.hbase.regionserver.Region; import org.apache.hadoop.hbase.regionserver.Store; import org.apache.hadoop.hbase.regionserver.StoreFile; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException; import org.apache.hadoop.hbase.testclassification.MediumTests; import org.apache.hadoop.hbase.util.Bytes; @@ -459,8 +460,8 @@ public class TestNamespaceAuditor { volatile CountDownLatch postCompact; @Override - public void postCompact(ObserverContext e, - Store store, StoreFile resultFile) throws IOException { + public void postCompact(ObserverContext e, Store store, + StoreFile resultFile, CompactionRequest request) throws IOException { postCompact.countDown(); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/NoOpScanPolicyObserver.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/NoOpScanPolicyObserver.java index 5423578d5cf..fcc3d4a37d4 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/NoOpScanPolicyObserver.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/NoOpScanPolicyObserver.java @@ -29,6 +29,7 @@ import org.apache.hadoop.hbase.client.TestFromClientSideWithCoprocessor; import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.coprocessor.RegionObserver; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; /** * RegionObserver that just reimplements the default behavior, @@ -44,7 +45,8 @@ public class NoOpScanPolicyObserver implements RegionObserver { */ @Override public InternalScanner preFlushScannerOpen(final ObserverContext c, - Store store, List scanners, InternalScanner s) throws IOException { + Store store, List scanners, InternalScanner s, long readPoint) + throws IOException { ScanInfo oldSI = store.getScanInfo(); ScanInfo scanInfo = new ScanInfo(oldSI.getConfiguration(), store.getColumnFamilyDescriptor(), oldSI.getTtl(), oldSI.getTimeToPurgeDeletes(), oldSI.getComparator()); @@ -59,7 +61,7 @@ public class NoOpScanPolicyObserver implements RegionObserver { public InternalScanner preCompactScannerOpen( final ObserverContext c, Store store, List scanners, ScanType scanType, long earliestPutTs, - InternalScanner s) throws IOException { + InternalScanner s, CompactionRequest request, long readPoint) throws IOException { // this demonstrates how to override the scanners default behavior ScanInfo oldSI = store.getScanInfo(); ScanInfo scanInfo = new ScanInfo(oldSI.getConfiguration(), store.getColumnFamilyDescriptor(), @@ -69,8 +71,8 @@ public class NoOpScanPolicyObserver implements RegionObserver { } @Override - public KeyValueScanner preStoreScannerOpen(final ObserverContext c, - Store store, final Scan scan, final NavigableSet targetCols, KeyValueScanner s) + public KeyValueScanner preStoreScannerOpen(ObserverContext c, + Store store, Scan scan, NavigableSet targetCols, KeyValueScanner s, long readPoint) throws IOException { Region r = c.getEnvironment().getRegion(); return scan.isReversed() ? new ReversedStoreScanner(store, diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.java index 49b0a723368..ea1496269b2 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.java @@ -67,6 +67,7 @@ import org.apache.hadoop.hbase.io.hfile.HFile; import org.apache.hadoop.hbase.io.hfile.HFileContext; import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder; import org.apache.hadoop.hbase.ipc.RpcControllerFactory; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.regionserver.wal.TestWALActionsListener; import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter; @@ -252,9 +253,8 @@ public class TestHRegionServerBulkLoad { public static class MyObserver implements RegionObserver { static int sleepDuration; @Override - public InternalScanner preCompact(ObserverContext e, - final Store store, final InternalScanner scanner, final ScanType scanType) - throws IOException { + public InternalScanner preCompact(ObserverContext e, Store store, + InternalScanner scanner, ScanType scanType, CompactionRequest request) throws IOException { try { Thread.sleep(sleepDuration); } catch (InterruptedException ie) { diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java index 97b16331d73..bf368217470 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java @@ -902,7 +902,7 @@ public class TestAccessController extends SecureTestUtil { @Override public Object run() throws Exception { ACCESS_CONTROLLER.preCompact(ObserverContext.createAndPrepare(RCP_ENV, null), null, null, - ScanType.COMPACT_RETAIN_DELETES); + ScanType.COMPACT_RETAIN_DELETES, null); return null; } }; 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 9ea8686dc47..656a0c728ba 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 @@ -57,6 +57,7 @@ import org.apache.hadoop.hbase.regionserver.ScanInfo; import org.apache.hadoop.hbase.regionserver.ScanType; import org.apache.hadoop.hbase.regionserver.Store; import org.apache.hadoop.hbase.regionserver.StoreScanner; +import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.hadoop.hbase.testclassification.MediumTests; import org.apache.hadoop.hbase.testclassification.MiscTests; @@ -239,8 +240,8 @@ public class TestCoprocessorScanPolicy { @Override public InternalScanner preFlushScannerOpen( - final ObserverContext c, - Store store, List scanners, InternalScanner s) throws IOException { + final ObserverContext c, Store store, + List scanners, InternalScanner s, long readPoint) throws IOException { Long newTtl = ttls.get(store.getTableName()); if (newTtl != null) { System.out.println("PreFlush:" + newTtl); @@ -262,7 +263,7 @@ public class TestCoprocessorScanPolicy { public InternalScanner preCompactScannerOpen( final ObserverContext c, Store store, List scanners, ScanType scanType, long earliestPutTs, - InternalScanner s) throws IOException { + InternalScanner s, CompactionRequest request, long readPoint) throws IOException { Long newTtl = ttls.get(store.getTableName()); Integer newVersions = versions.get(store.getTableName()); ScanInfo oldSI = store.getScanInfo();