@@ -105,7 +105,8 @@ private void internalReadOnlyGuard() throws IOException {
105105 }
106106 }
107107
108- private boolean isOperationOnNonMetaTable (final ObserverContext <? extends RegionCoprocessorEnvironment > c ){
108+ private boolean
109+ isOperationOnNonMetaTable (final ObserverContext <? extends RegionCoprocessorEnvironment > c ) {
109110 return !c .getEnvironment ().getRegionInfo ().getTable ().equals (TableName .META_TABLE_NAME );
110111 }
111112
@@ -134,25 +135,29 @@ public Optional<RegionObserver> getRegionObserver() {
134135 }
135136
136137 @ Override
137- public void preFlush ( final ObserverContext <? extends RegionCoprocessorEnvironment > c ,
138- FlushLifeCycleTracker tracker ) throws IOException {
139- if (isOperationOnNonMetaTable (c )){
138+ public void preFlushScannerOpen ( ObserverContext <? extends RegionCoprocessorEnvironment > c ,
139+ Store store , ScanOptions options , FlushLifeCycleTracker tracker ) throws IOException {
140+ if (isOperationOnNonMetaTable (c )) {
140141 internalReadOnlyGuard ();
141142 }
142- RegionObserver .super .preFlush ( c , tracker );
143+ RegionObserver .super .preFlushScannerOpen ( c , store , options , tracker );
143144 }
144145
145146 @ Override
146- public void preFlushScannerOpen (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
147- Store store , ScanOptions options , FlushLifeCycleTracker tracker ) throws IOException {
148- internalReadOnlyGuard ();
149- RegionObserver .super .preFlushScannerOpen (c , store , options , tracker );
147+ public void preFlush (final ObserverContext <? extends RegionCoprocessorEnvironment > c ,
148+ FlushLifeCycleTracker tracker ) throws IOException {
149+ if (isOperationOnNonMetaTable (c )) {
150+ internalReadOnlyGuard ();
151+ }
152+ RegionObserver .super .preFlush (c , tracker );
150153 }
151154
152155 @ Override
153156 public InternalScanner preFlush (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
154157 Store store , InternalScanner scanner , FlushLifeCycleTracker tracker ) throws IOException {
155- internalReadOnlyGuard ();
158+ if (isOperationOnNonMetaTable (c )) {
159+ internalReadOnlyGuard ();
160+ }
156161 return RegionObserver .super .preFlush (c , store , scanner , tracker );
157162 }
158163
@@ -183,30 +188,36 @@ public InternalScanner preMemStoreCompactionCompact(
183188 public void preCompactSelection (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
184189 Store store , List <? extends StoreFile > candidates , CompactionLifeCycleTracker tracker )
185190 throws IOException {
186- internalReadOnlyGuard ();
191+ if (isOperationOnNonMetaTable (c )) {
192+ internalReadOnlyGuard ();
193+ }
187194 RegionObserver .super .preCompactSelection (c , store , candidates , tracker );
188195 }
189196
190197 @ Override
191198 public void preCompactScannerOpen (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
192199 Store store , ScanType scanType , ScanOptions options , CompactionLifeCycleTracker tracker ,
193200 CompactionRequest request ) throws IOException {
194- internalReadOnlyGuard ();
201+ if (isOperationOnNonMetaTable (c )) {
202+ internalReadOnlyGuard ();
203+ }
195204 RegionObserver .super .preCompactScannerOpen (c , store , scanType , options , tracker , request );
196205 }
197206
198207 @ Override
199208 public InternalScanner preCompact (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
200209 Store store , InternalScanner scanner , ScanType scanType , CompactionLifeCycleTracker tracker ,
201210 CompactionRequest request ) throws IOException {
202- internalReadOnlyGuard ();
211+ if (isOperationOnNonMetaTable (c )) {
212+ internalReadOnlyGuard ();
213+ }
203214 return RegionObserver .super .preCompact (c , store , scanner , scanType , tracker , request );
204215 }
205216
206217 @ Override
207218 public void prePut (ObserverContext <? extends RegionCoprocessorEnvironment > c , Put put ,
208219 WALEdit edit , Durability durability ) throws IOException {
209- if (isOperationOnNonMetaTable (c )){
220+ if (isOperationOnNonMetaTable (c )) {
210221 internalReadOnlyGuard ();
211222 }
212223 RegionObserver .super .prePut (c , put , edit , durability );
@@ -215,7 +226,7 @@ public void prePut(ObserverContext<? extends RegionCoprocessorEnvironment> c, Pu
215226 @ Override
216227 public void prePut (ObserverContext <? extends RegionCoprocessorEnvironment > c , Put put ,
217228 WALEdit edit ) throws IOException {
218- if (isOperationOnNonMetaTable (c )){
229+ if (isOperationOnNonMetaTable (c )) {
219230 internalReadOnlyGuard ();
220231 }
221232 RegionObserver .super .prePut (c , put , edit );
@@ -224,7 +235,7 @@ public void prePut(ObserverContext<? extends RegionCoprocessorEnvironment> c, Pu
224235 @ Override
225236 public void preDelete (ObserverContext <? extends RegionCoprocessorEnvironment > c , Delete delete ,
226237 WALEdit edit , Durability durability ) throws IOException {
227- if (isOperationOnNonMetaTable (c )){
238+ if (isOperationOnNonMetaTable (c )) {
228239 internalReadOnlyGuard ();
229240 }
230241 RegionObserver .super .preDelete (c , delete , edit , durability );
@@ -233,7 +244,7 @@ public void preDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c,
233244 @ Override
234245 public void preDelete (ObserverContext <? extends RegionCoprocessorEnvironment > c , Delete delete ,
235246 WALEdit edit ) throws IOException {
236- if (isOperationOnNonMetaTable (c )){
247+ if (isOperationOnNonMetaTable (c )) {
237248 internalReadOnlyGuard ();
238249 }
239250 RegionObserver .super .preDelete (c , delete , edit );
@@ -242,7 +253,7 @@ public void preDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c,
242253 @ Override
243254 public void preBatchMutate (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
244255 MiniBatchOperationInProgress <Mutation > miniBatchOp ) throws IOException {
245- if (isOperationOnNonMetaTable (c )){
256+ if (isOperationOnNonMetaTable (c )) {
246257 internalReadOnlyGuard ();
247258 }
248259 RegionObserver .super .preBatchMutate (c , miniBatchOp );
@@ -252,15 +263,19 @@ public void preBatchMutate(ObserverContext<? extends RegionCoprocessorEnvironmen
252263 public boolean preCheckAndPut (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
253264 byte [] row , byte [] family , byte [] qualifier , CompareOperator op , ByteArrayComparable comparator ,
254265 Put put , boolean result ) throws IOException {
255- internalReadOnlyGuard ();
266+ if (isOperationOnNonMetaTable (c )) {
267+ internalReadOnlyGuard ();
268+ }
256269 return RegionObserver .super .preCheckAndPut (c , row , family , qualifier , op , comparator , put ,
257270 result );
258271 }
259272
260273 @ Override
261274 public boolean preCheckAndPut (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
262275 byte [] row , Filter filter , Put put , boolean result ) throws IOException {
263- internalReadOnlyGuard ();
276+ if (isOperationOnNonMetaTable (c )) {
277+ internalReadOnlyGuard ();
278+ }
264279 return RegionObserver .super .preCheckAndPut (c , row , filter , put , result );
265280 }
266281
@@ -269,7 +284,9 @@ public boolean preCheckAndPutAfterRowLock(
269284 ObserverContext <? extends RegionCoprocessorEnvironment > c , byte [] row , byte [] family ,
270285 byte [] qualifier , CompareOperator op , ByteArrayComparable comparator , Put put , boolean result )
271286 throws IOException {
272- internalReadOnlyGuard ();
287+ if (isOperationOnNonMetaTable (c )) {
288+ internalReadOnlyGuard ();
289+ }
273290 return RegionObserver .super .preCheckAndPutAfterRowLock (c , row , family , qualifier , op ,
274291 comparator , put , result );
275292 }
@@ -278,15 +295,17 @@ public boolean preCheckAndPutAfterRowLock(
278295 public boolean preCheckAndPutAfterRowLock (
279296 ObserverContext <? extends RegionCoprocessorEnvironment > c , byte [] row , Filter filter , Put put ,
280297 boolean result ) throws IOException {
281- internalReadOnlyGuard ();
298+ if (isOperationOnNonMetaTable (c )) {
299+ internalReadOnlyGuard ();
300+ }
282301 return RegionObserver .super .preCheckAndPutAfterRowLock (c , row , filter , put , result );
283302 }
284303
285304 @ Override
286305 public boolean preCheckAndDelete (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
287306 byte [] row , byte [] family , byte [] qualifier , CompareOperator op , ByteArrayComparable comparator ,
288307 Delete delete , boolean result ) throws IOException {
289- if (isOperationOnNonMetaTable (c )){
308+ if (isOperationOnNonMetaTable (c )) {
290309 internalReadOnlyGuard ();
291310 }
292311 return RegionObserver .super .preCheckAndDelete (c , row , family , qualifier , op , comparator , delete ,
@@ -296,7 +315,7 @@ public boolean preCheckAndDelete(ObserverContext<? extends RegionCoprocessorEnvi
296315 @ Override
297316 public boolean preCheckAndDelete (ObserverContext <? extends RegionCoprocessorEnvironment > c ,
298317 byte [] row , Filter filter , Delete delete , boolean result ) throws IOException {
299- if (isOperationOnNonMetaTable (c )){
318+ if (isOperationOnNonMetaTable (c )) {
300319 internalReadOnlyGuard ();
301320 }
302321 return RegionObserver .super .preCheckAndDelete (c , row , filter , delete , result );
@@ -307,7 +326,7 @@ public boolean preCheckAndDeleteAfterRowLock(
307326 ObserverContext <? extends RegionCoprocessorEnvironment > c , byte [] row , byte [] family ,
308327 byte [] qualifier , CompareOperator op , ByteArrayComparable comparator , Delete delete ,
309328 boolean result ) throws IOException {
310- if (isOperationOnNonMetaTable (c )){
329+ if (isOperationOnNonMetaTable (c )) {
311330 internalReadOnlyGuard ();
312331 }
313332 return RegionObserver .super .preCheckAndDeleteAfterRowLock (c , row , family , qualifier , op ,
@@ -318,7 +337,7 @@ public boolean preCheckAndDeleteAfterRowLock(
318337 public boolean preCheckAndDeleteAfterRowLock (
319338 ObserverContext <? extends RegionCoprocessorEnvironment > c , byte [] row , Filter filter ,
320339 Delete delete , boolean result ) throws IOException {
321- if (isOperationOnNonMetaTable (c )){
340+ if (isOperationOnNonMetaTable (c )) {
322341 internalReadOnlyGuard ();
323342 }
324343 return RegionObserver .super .preCheckAndDeleteAfterRowLock (c , row , filter , delete , result );
@@ -406,7 +425,8 @@ public void preCommitStoreFile(ObserverContext<? extends RegionCoprocessorEnviro
406425 @ Override
407426 public void preWALAppend (ObserverContext <? extends RegionCoprocessorEnvironment > ctx , WALKey key ,
408427 WALEdit edit ) throws IOException {
409- if (!key .getTableName ().isSystemTable ()) {
428+ // Only allow this operation for meta table
429+ if (!key .getTableName ().equals (TableName .META_TABLE_NAME )) {
410430 internalReadOnlyGuard ();
411431 }
412432 RegionObserver .super .preWALAppend (ctx , key , edit );
0 commit comments