You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ni...@apache.org on 2021/10/03 14:34:15 UTC
[hbase] branch HBASE-25714 updated: HBASE-26278 Add
preRequestCompaction method for AccessController (#3677)
This is an automated email from the ASF dual-hosted git repository.
niuyulin pushed a commit to branch HBASE-25714
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/HBASE-25714 by this push:
new e3553ad HBASE-26278 Add preRequestCompaction method for AccessController (#3677)
e3553ad is described below
commit e3553ad5d9fa3f320c440acad0978a30d2ca0de4
Author: niuyulin <yu...@gmail.com>
AuthorDate: Sun Oct 3 09:33:48 2021 -0500
HBASE-26278 Add preRequestCompaction method for AccessController (#3677)
Signed-off-by: Duo Zhang <zh...@apache.org>
---
.../apache/hadoop/hbase/coprocessor/RegionObserver.java | 6 ++++++
.../org/apache/hadoop/hbase/regionserver/CompactSplit.java | 3 +++
.../hadoop/hbase/regionserver/RegionCoprocessorHost.java | 12 ++++++++++++
.../hadoop/hbase/security/access/AccessController.java | 14 ++++----------
.../hadoop/hbase/security/access/TestAccessController.java | 4 +---
5 files changed, 26 insertions(+), 13 deletions(-)
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 4f4d79c..9f7ec80 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
@@ -217,6 +217,12 @@ public interface RegionObserver {
throws IOException {}
/**
+ * Add for AccessController after HBASE-26089
+ */
+ default void preRequestCompaction(ObserverContext<RegionCoprocessorEnvironment> c)
+ throws IOException {}
+
+ /**
* Called prior to selecting the {@link StoreFile StoreFiles} to compact from the list of
* available candidates. To alter the files used for compaction, you may mutate the passed in list
* of candidates. If you remove all the candidates then the compaction will be canceled.
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplit.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplit.java
index 9c431f9..6e3c018 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplit.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplit.java
@@ -277,6 +277,9 @@ public class CompactSplit implements CompactionRequester, PropagatingConfigurati
!region.getTableDescriptor().isCompactionEnabled())) {
return;
}
+ if (region.getCoprocessorHost() != null) {
+ region.getCoprocessorHost().preRequestCompaction();
+ }
RegionServerSpaceQuotaManager spaceQuotaManager =
this.server.getRegionServerSpaceQuotaManager();
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 658819c..164c5b2 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
@@ -565,6 +565,18 @@ public class RegionCoprocessorHost
}
}
+ void preRequestCompaction() throws IOException {
+ if (coprocEnvironments.isEmpty()) {
+ return;
+ }
+ execOperation(new RegionObserverOperationWithoutResult() {
+ @Override
+ public void call(RegionObserver observer) throws IOException {
+ observer.preRequestCompaction(this);
+ }
+ });
+ }
+
/**
* Called prior to selecting the {@link HStoreFile}s for compaction from the list of currently
* available candidates.
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 3e6c769..e26e68d 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
@@ -102,11 +102,7 @@ import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress;
import org.apache.hadoop.hbase.regionserver.Region;
import org.apache.hadoop.hbase.regionserver.RegionScanner;
import org.apache.hadoop.hbase.regionserver.RegionServerServices;
-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.CompactionLifeCycleTracker;
-import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;
import org.apache.hadoop.hbase.replication.ReplicationEndpoint;
import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;
import org.apache.hadoop.hbase.replication.SyncReplicationState;
@@ -1288,12 +1284,10 @@ public class AccessController implements MasterCoprocessor, RegionCoprocessor,
}
@Override
- public InternalScanner preCompact(ObserverContext<RegionCoprocessorEnvironment> c, Store store,
- InternalScanner scanner, ScanType scanType, CompactionLifeCycleTracker tracker,
- CompactionRequest request) throws IOException {
- requirePermission(c, "compact", getTableName(c.getEnvironment()),
- null, null, Action.ADMIN, Action.CREATE);
- return scanner;
+ public void preRequestCompaction(ObserverContext<RegionCoprocessorEnvironment> c)
+ throws IOException {
+ requirePermission(c, "compact", getTableName(c.getEnvironment()), null, null, Action.ADMIN,
+ Action.CREATE);
}
private void internalPreRead(final ObserverContext<RegionCoprocessorEnvironment> c,
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 c915d76..1a07696 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
@@ -105,7 +105,6 @@ import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.regionserver.HRegionServer;
import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;
import org.apache.hadoop.hbase.regionserver.RegionServerCoprocessorHost;
-import org.apache.hadoop.hbase.regionserver.ScanType;
import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;
import org.apache.hadoop.hbase.replication.SyncReplicationState;
import org.apache.hadoop.hbase.security.Superusers;
@@ -890,8 +889,7 @@ public class TestAccessController extends SecureTestUtil {
AccessTestAction action = new AccessTestAction() {
@Override
public Object run() throws Exception {
- ACCESS_CONTROLLER.preCompact(ObserverContextImpl.createAndPrepare(RCP_ENV), null, null,
- ScanType.COMPACT_RETAIN_DELETES, null, null);
+ ACCESS_CONTROLLER.preRequestCompaction(ObserverContextImpl.createAndPrepare(RCP_ENV));
return null;
}
};