Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ private void internalReadOnlyGuard() throws DoNotRetryIOException {
}
}

private boolean isOnMeta(final ObserverContext<? extends RegionCoprocessorEnvironment> c) {
return TableName.isMetaTableName(c.getEnvironment().getRegionInfo().getTable());
}

@Override
public void start(CoprocessorEnvironment env) throws IOException {
if (env instanceof MasterCoprocessorEnvironment) {
Expand All @@ -130,24 +134,30 @@ public Optional<RegionObserver> getRegionObserver() {
return Optional.of(this);
}

@Override
public void preFlush(final ObserverContext<? extends RegionCoprocessorEnvironment> c,
FlushLifeCycleTracker tracker) throws IOException {
internalReadOnlyGuard();
RegionObserver.super.preFlush(c, tracker);
}

@Override
public void preFlushScannerOpen(ObserverContext<? extends RegionCoprocessorEnvironment> c,
Store store, ScanOptions options, FlushLifeCycleTracker tracker) throws IOException {
internalReadOnlyGuard();
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
RegionObserver.super.preFlushScannerOpen(c, store, options, tracker);
}

@Override
public void preFlush(final ObserverContext<? extends RegionCoprocessorEnvironment> c,
FlushLifeCycleTracker tracker) throws IOException {
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
RegionObserver.super.preFlush(c, tracker);
}

@Override
public InternalScanner preFlush(ObserverContext<? extends RegionCoprocessorEnvironment> c,
Store store, InternalScanner scanner, FlushLifeCycleTracker tracker) throws IOException {
internalReadOnlyGuard();
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preFlush(c, store, scanner, tracker);
}

Expand Down Expand Up @@ -178,92 +188,94 @@ public InternalScanner preMemStoreCompactionCompact(
public void preCompactSelection(ObserverContext<? extends RegionCoprocessorEnvironment> c,
Store store, List<? extends StoreFile> candidates, CompactionLifeCycleTracker tracker)
throws IOException {
internalReadOnlyGuard();
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
RegionObserver.super.preCompactSelection(c, store, candidates, tracker);
}

@Override
public void preCompactScannerOpen(ObserverContext<? extends RegionCoprocessorEnvironment> c,
Store store, ScanType scanType, ScanOptions options, CompactionLifeCycleTracker tracker,
CompactionRequest request) throws IOException {
internalReadOnlyGuard();
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
RegionObserver.super.preCompactScannerOpen(c, store, scanType, options, tracker, request);
}

@Override
public InternalScanner preCompact(ObserverContext<? extends RegionCoprocessorEnvironment> c,
Store store, InternalScanner scanner, ScanType scanType, CompactionLifeCycleTracker tracker,
CompactionRequest request) throws IOException {
internalReadOnlyGuard();
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preCompact(c, store, scanner, scanType, tracker, request);
}

@Override
public void prePut(ObserverContext<? extends RegionCoprocessorEnvironment> c, Put put,
WALEdit edit, Durability durability) throws IOException {
TableName tableName = c.getEnvironment().getRegionInfo().getTable();
if (tableName.isSystemTable()) {
return;
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
internalReadOnlyGuard();
RegionObserver.super.prePut(c, put, edit, durability);
}

@Override
public void prePut(ObserverContext<? extends RegionCoprocessorEnvironment> c, Put put,
WALEdit edit) throws IOException {
TableName tableName = c.getEnvironment().getRegionInfo().getTable();
if (tableName.isSystemTable()) {
return;
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
internalReadOnlyGuard();
RegionObserver.super.prePut(c, put, edit);
}

@Override
public void preDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c, Delete delete,
WALEdit edit, Durability durability) throws IOException {
if (c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
return;
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
internalReadOnlyGuard();
RegionObserver.super.preDelete(c, delete, edit, durability);
}

@Override
public void preDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c, Delete delete,
WALEdit edit) throws IOException {
if (c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
return;
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
internalReadOnlyGuard();
RegionObserver.super.preDelete(c, delete, edit);
}

@Override
public void preBatchMutate(ObserverContext<? extends RegionCoprocessorEnvironment> c,
MiniBatchOperationInProgress<Mutation> miniBatchOp) throws IOException {
TableName tableName = c.getEnvironment().getRegionInfo().getTable();
if (tableName.isSystemTable()) {
return;
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
internalReadOnlyGuard();
RegionObserver.super.preBatchMutate(c, miniBatchOp);
}

@Override
public boolean preCheckAndPut(ObserverContext<? extends RegionCoprocessorEnvironment> c,
byte[] row, byte[] family, byte[] qualifier, CompareOperator op, ByteArrayComparable comparator,
Put put, boolean result) throws IOException {
internalReadOnlyGuard();
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preCheckAndPut(c, row, family, qualifier, op, comparator, put,
result);
}

@Override
public boolean preCheckAndPut(ObserverContext<? extends RegionCoprocessorEnvironment> c,
byte[] row, Filter filter, Put put, boolean result) throws IOException {
internalReadOnlyGuard();
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preCheckAndPut(c, row, filter, put, result);
}

Expand All @@ -272,7 +284,9 @@ public boolean preCheckAndPutAfterRowLock(
ObserverContext<? extends RegionCoprocessorEnvironment> c, byte[] row, byte[] family,
byte[] qualifier, CompareOperator op, ByteArrayComparable comparator, Put put, boolean result)
throws IOException {
internalReadOnlyGuard();
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preCheckAndPutAfterRowLock(c, row, family, qualifier, op,
comparator, put, result);
}
Expand All @@ -281,15 +295,17 @@ public boolean preCheckAndPutAfterRowLock(
public boolean preCheckAndPutAfterRowLock(
ObserverContext<? extends RegionCoprocessorEnvironment> c, byte[] row, Filter filter, Put put,
boolean result) throws IOException {
internalReadOnlyGuard();
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preCheckAndPutAfterRowLock(c, row, filter, put, result);
}

@Override
public boolean preCheckAndDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c,
byte[] row, byte[] family, byte[] qualifier, CompareOperator op, ByteArrayComparable comparator,
Delete delete, boolean result) throws IOException {
if (!c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preCheckAndDelete(c, row, family, qualifier, op, comparator, delete,
Expand All @@ -299,7 +315,7 @@ public boolean preCheckAndDelete(ObserverContext<? extends RegionCoprocessorEnvi
@Override
public boolean preCheckAndDelete(ObserverContext<? extends RegionCoprocessorEnvironment> c,
byte[] row, Filter filter, Delete delete, boolean result) throws IOException {
if (!c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preCheckAndDelete(c, row, filter, delete, result);
Expand All @@ -310,7 +326,7 @@ public boolean preCheckAndDeleteAfterRowLock(
ObserverContext<? extends RegionCoprocessorEnvironment> c, byte[] row, byte[] family,
byte[] qualifier, CompareOperator op, ByteArrayComparable comparator, Delete delete,
boolean result) throws IOException {
if (!c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preCheckAndDeleteAfterRowLock(c, row, family, qualifier, op,
Expand All @@ -321,7 +337,7 @@ public boolean preCheckAndDeleteAfterRowLock(
public boolean preCheckAndDeleteAfterRowLock(
ObserverContext<? extends RegionCoprocessorEnvironment> c, byte[] row, Filter filter,
Delete delete, boolean result) throws IOException {
if (!c.getEnvironment().getRegionInfo().getTable().isSystemTable()) {
if (!isOnMeta(c)) {
internalReadOnlyGuard();
}
return RegionObserver.super.preCheckAndDeleteAfterRowLock(c, row, filter, delete, result);
Expand Down Expand Up @@ -409,7 +425,8 @@ public void preCommitStoreFile(ObserverContext<? extends RegionCoprocessorEnviro
@Override
public void preWALAppend(ObserverContext<? extends RegionCoprocessorEnvironment> ctx, WALKey key,
WALEdit edit) throws IOException {
if (!key.getTableName().isSystemTable()) {
// Only allow this operation for meta table
if (!TableName.isMetaTableName(key.getTableName())) {
internalReadOnlyGuard();
}
RegionObserver.super.preWALAppend(ctx, key, edit);
Expand Down
Loading