Skip to content

Commit e3553ad

Browse files
authored
HBASE-26278 Add preRequestCompaction method for AccessController (#3677)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
1 parent 8769e3e commit e3553ad

File tree

5 files changed

+26
-13
lines changed

5 files changed

+26
-13
lines changed

hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,12 @@ default InternalScanner preMemStoreCompactionCompact(
216216
default void postMemStoreCompaction(ObserverContext<RegionCoprocessorEnvironment> c, Store store)
217217
throws IOException {}
218218

219+
/**
220+
* Add for AccessController after HBASE-26089
221+
*/
222+
default void preRequestCompaction(ObserverContext<RegionCoprocessorEnvironment> c)
223+
throws IOException {}
224+
219225
/**
220226
* Called prior to selecting the {@link StoreFile StoreFiles} to compact from the list of
221227
* available candidates. To alter the files used for compaction, you may mutate the passed in list

hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplit.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,9 @@ private void requestCompactionInternal(HRegion region, HStore store, String why,
277277
!region.getTableDescriptor().isCompactionEnabled())) {
278278
return;
279279
}
280+
if (region.getCoprocessorHost() != null) {
281+
region.getCoprocessorHost().preRequestCompaction();
282+
}
280283
RegionServerSpaceQuotaManager spaceQuotaManager =
281284
this.server.getRegionServerSpaceQuotaManager();
282285

hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,18 @@ public void postEnvCall() {
565565
}
566566
}
567567

568+
void preRequestCompaction() throws IOException {
569+
if (coprocEnvironments.isEmpty()) {
570+
return;
571+
}
572+
execOperation(new RegionObserverOperationWithoutResult() {
573+
@Override
574+
public void call(RegionObserver observer) throws IOException {
575+
observer.preRequestCompaction(this);
576+
}
577+
});
578+
}
579+
568580
/**
569581
* Called prior to selecting the {@link HStoreFile}s for compaction from the list of currently
570582
* available candidates.

hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,7 @@
102102
import org.apache.hadoop.hbase.regionserver.Region;
103103
import org.apache.hadoop.hbase.regionserver.RegionScanner;
104104
import org.apache.hadoop.hbase.regionserver.RegionServerServices;
105-
import org.apache.hadoop.hbase.regionserver.ScanType;
106105
import org.apache.hadoop.hbase.regionserver.ScannerContext;
107-
import org.apache.hadoop.hbase.regionserver.Store;
108-
import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;
109-
import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;
110106
import org.apache.hadoop.hbase.replication.ReplicationEndpoint;
111107
import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;
112108
import org.apache.hadoop.hbase.replication.SyncReplicationState;
@@ -1288,12 +1284,10 @@ public void preFlush(ObserverContext<RegionCoprocessorEnvironment> c,
12881284
}
12891285

12901286
@Override
1291-
public InternalScanner preCompact(ObserverContext<RegionCoprocessorEnvironment> c, Store store,
1292-
InternalScanner scanner, ScanType scanType, CompactionLifeCycleTracker tracker,
1293-
CompactionRequest request) throws IOException {
1294-
requirePermission(c, "compact", getTableName(c.getEnvironment()),
1295-
null, null, Action.ADMIN, Action.CREATE);
1296-
return scanner;
1287+
public void preRequestCompaction(ObserverContext<RegionCoprocessorEnvironment> c)
1288+
throws IOException {
1289+
requirePermission(c, "compact", getTableName(c.getEnvironment()), null, null, Action.ADMIN,
1290+
Action.CREATE);
12971291
}
12981292

12991293
private void internalPreRead(final ObserverContext<RegionCoprocessorEnvironment> c,

hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@
105105
import org.apache.hadoop.hbase.regionserver.HRegionServer;
106106
import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;
107107
import org.apache.hadoop.hbase.regionserver.RegionServerCoprocessorHost;
108-
import org.apache.hadoop.hbase.regionserver.ScanType;
109108
import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;
110109
import org.apache.hadoop.hbase.replication.SyncReplicationState;
111110
import org.apache.hadoop.hbase.security.Superusers;
@@ -890,8 +889,7 @@ public void testCompact() throws Exception {
890889
AccessTestAction action = new AccessTestAction() {
891890
@Override
892891
public Object run() throws Exception {
893-
ACCESS_CONTROLLER.preCompact(ObserverContextImpl.createAndPrepare(RCP_ENV), null, null,
894-
ScanType.COMPACT_RETAIN_DELETES, null, null);
892+
ACCESS_CONTROLLER.preRequestCompaction(ObserverContextImpl.createAndPrepare(RCP_ENV));
895893
return null;
896894
}
897895
};

0 commit comments

Comments
 (0)