Skip to content

Commit bba9be4

Browse files
committed
HBASE-29779: Call super coprocessor instead of returning for system tables
1 parent e08c367 commit bba9be4

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

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

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ private void internalReadOnlyGuard() throws IOException {
105105
}
106106
}
107107

108+
private boolean isOperationOnUserTable(final ObserverContext<? extends RegionCoprocessorEnvironment> c){
109+
return !c.getEnvironment().getRegionInfo().getTable().isSystemTable();
110+
}
111+
108112
@Override
109113
public void start(CoprocessorEnvironment env) throws IOException {
110114
if (env instanceof MasterCoprocessorEnvironment) {
@@ -132,7 +136,9 @@ public Optional<RegionObserver> getRegionObserver() {
132136
@Override
133137
public void preFlush(final ObserverContext<? extends RegionCoprocessorEnvironment> c,
134138
FlushLifeCycleTracker tracker) throws IOException {
135-
internalReadOnlyGuard();
139+
if(isOperationOnUserTable(c)){
140+
internalReadOnlyGuard();
141+
}
136142
RegionObserver.super.preFlush(c, tracker);
137143
}
138144

@@ -200,53 +206,45 @@ public InternalScanner preCompact(ObserverContext<? extends RegionCoprocessorEnv
200206
@Override
201207
public void prePut(ObserverContext<? extends RegionCoprocessorEnvironment> c, Put put,
202208
WALEdit edit, Durability durability) throws IOException {
203-
TableName tableName = c.getEnvironment().getRegionInfo().getTable();
204-
if (tableName.isSystemTable()) {
205-
return;
209+
if(isOperationOnUserTable(c)){
210+
internalReadOnlyGuard();
206211
}
207-
internalReadOnlyGuard();
208212
RegionObserver.super.prePut(c, put, edit, durability);
209213
}
210214

211215
@Override
212216
public void prePut(ObserverContext<? extends RegionCoprocessorEnvironment> c, Put put,
213217
WALEdit edit) throws IOException {
214-
TableName tableName = c.getEnvironment().getRegionInfo().getTable();
215-
if (tableName.isSystemTable()) {
216-
return;
218+
if(isOperationOnUserTable(c)){
219+
internalReadOnlyGuard();
217220
}
218-
internalReadOnlyGuard();
219221
RegionObserver.super.prePut(c, put, edit);
220222
}
221223

222224
@Override
223225
public void preDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c, Delete delete,
224226
WALEdit edit, Durability durability) throws IOException {
225-
if (c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
226-
return;
227+
if(isOperationOnUserTable(c)){
228+
internalReadOnlyGuard();
227229
}
228-
internalReadOnlyGuard();
229230
RegionObserver.super.preDelete(c, delete, edit, durability);
230231
}
231232

232233
@Override
233234
public void preDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c, Delete delete,
234235
WALEdit edit) throws IOException {
235-
if (c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
236-
return;
236+
if(isOperationOnUserTable(c)){
237+
internalReadOnlyGuard();
237238
}
238-
internalReadOnlyGuard();
239239
RegionObserver.super.preDelete(c, delete, edit);
240240
}
241241

242242
@Override
243243
public void preBatchMutate(ObserverContext<? extends RegionCoprocessorEnvironment> c,
244244
MiniBatchOperationInProgress<Mutation> miniBatchOp) throws IOException {
245-
TableName tableName = c.getEnvironment().getRegionInfo().getTable();
246-
if (tableName.isSystemTable()) {
247-
return;
245+
if(isOperationOnUserTable(c)){
246+
internalReadOnlyGuard();
248247
}
249-
internalReadOnlyGuard();
250248
RegionObserver.super.preBatchMutate(c, miniBatchOp);
251249
}
252250

@@ -288,7 +286,7 @@ public boolean preCheckAndPutAfterRowLock(
288286
public boolean preCheckAndDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c,
289287
byte[] row, byte[] family, byte[] qualifier, CompareOperator op, ByteArrayComparable comparator,
290288
Delete delete, boolean result) throws IOException {
291-
if (!c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
289+
if(isOperationOnUserTable(c)){
292290
internalReadOnlyGuard();
293291
}
294292
return RegionObserver.super.preCheckAndDelete(c, row, family, qualifier, op, comparator, delete,
@@ -298,7 +296,7 @@ public boolean preCheckAndDelete(ObserverContext<? extends RegionCoprocessorEnvi
298296
@Override
299297
public boolean preCheckAndDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c,
300298
byte[] row, Filter filter, Delete delete, boolean result) throws IOException {
301-
if (!c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
299+
if(isOperationOnUserTable(c)){
302300
internalReadOnlyGuard();
303301
}
304302
return RegionObserver.super.preCheckAndDelete(c, row, filter, delete, result);
@@ -309,7 +307,7 @@ public boolean preCheckAndDeleteAfterRowLock(
309307
ObserverContext<? extends RegionCoprocessorEnvironment> c, byte[] row, byte[] family,
310308
byte[] qualifier, CompareOperator op, ByteArrayComparable comparator, Delete delete,
311309
boolean result) throws IOException {
312-
if (!c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
310+
if(isOperationOnUserTable(c)){
313311
internalReadOnlyGuard();
314312
}
315313
return RegionObserver.super.preCheckAndDeleteAfterRowLock(c, row, family, qualifier, op,
@@ -320,7 +318,7 @@ public boolean preCheckAndDeleteAfterRowLock(
320318
public boolean preCheckAndDeleteAfterRowLock(
321319
ObserverContext<? extends RegionCoprocessorEnvironment> c, byte[] row, Filter filter,
322320
Delete delete, boolean result) throws IOException {
323-
if (!c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
321+
if(isOperationOnUserTable(c)){
324322
internalReadOnlyGuard();
325323
}
326324
return RegionObserver.super.preCheckAndDeleteAfterRowLock(c, row, filter, delete, result);

0 commit comments

Comments
 (0)