From bf5eac49a92ea4dc663f18637ef8964eb56ffc8d Mon Sep 17 00:00:00 2001 From: Matteo Bertozzi Date: Mon, 18 Aug 2014 20:14:25 +0100 Subject: [PATCH] HBASE-11757 Provide a common base abstract class for both RegionObserver and MasterObserver --- .../BaseMasterAndRegionObserver.java | 428 ++++++++++++++++++ .../security/access/AccessController.java | 184 +------- .../visibility/VisibilityController.java | 336 +------------- 3 files changed, 442 insertions(+), 506 deletions(-) create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterAndRegionObserver.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterAndRegionObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterAndRegionObserver.java new file mode 100644 index 00000000000..600dcd213d7 --- /dev/null +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterAndRegionObserver.java @@ -0,0 +1,428 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hbase.coprocessor; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; +import org.apache.hadoop.hbase.HBaseInterfaceAudience; +import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.HColumnDescriptor; +import org.apache.hadoop.hbase.HRegionInfo; +import org.apache.hadoop.hbase.CoprocessorEnvironment; +import org.apache.hadoop.hbase.HTableDescriptor; +import org.apache.hadoop.hbase.NamespaceDescriptor; +import org.apache.hadoop.hbase.ServerName; +import org.apache.hadoop.hbase.master.RegionPlan; +import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription; + +import java.io.IOException; +import java.util.List; + +@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC) +@InterfaceStability.Evolving +public abstract class BaseMasterAndRegionObserver extends BaseRegionObserver + implements MasterObserver { + @Override + public void preCreateTable(ObserverContext ctx, + HTableDescriptor desc, HRegionInfo[] regions) throws IOException { + } + + @Override + public void postCreateTable(ObserverContext ctx, + HTableDescriptor desc, HRegionInfo[] regions) throws IOException { + } + + @Override + public void preCreateTableHandler( + final ObserverContext ctx, + HTableDescriptor desc, HRegionInfo[] regions) throws IOException { + } + + @Override + public void postCreateTableHandler( + final ObserverContext ctx, + HTableDescriptor desc, HRegionInfo[] regions) throws IOException { + } + + @Override + public void preDeleteTable(ObserverContext ctx, + TableName tableName) throws IOException { + } + + @Override + public void postDeleteTable(ObserverContext ctx, + TableName tableName) throws IOException { + } + + @Override + public void preDeleteTableHandler( + final ObserverContext ctx, TableName tableName) + throws IOException{ + } + + @Override + public void postDeleteTableHandler( + final ObserverContext ctx, TableName tableName) + throws IOException { + } + + @Override + public void preTruncateTable(ObserverContext ctx, + TableName tableName) throws IOException { + } + + @Override + public void postTruncateTable(ObserverContext ctx, + TableName tableName) throws IOException { + } + + @Override + public void preTruncateTableHandler( + final ObserverContext ctx, TableName tableName) + throws IOException { + } + + @Override + public void postTruncateTableHandler( + final ObserverContext ctx, TableName tableName) + throws IOException { + } + + @Override + public void preModifyTable(ObserverContext ctx, + TableName tableName, HTableDescriptor htd) throws IOException { + } + + @Override + public void postModifyTableHandler( + ObserverContext ctx, TableName tableName, + HTableDescriptor htd) throws IOException { + } + + @Override + public void preModifyTableHandler( + ObserverContext ctx, TableName tableName, + HTableDescriptor htd) throws IOException { + } + + @Override + public void postModifyTable(ObserverContext ctx, + TableName tableName, HTableDescriptor htd) throws IOException { + } + + @Override + public void preCreateNamespace(ObserverContext ctx, + NamespaceDescriptor ns) throws IOException { + } + + @Override + public void postCreateNamespace(ObserverContext ctx, + NamespaceDescriptor ns) throws IOException { + } + + @Override + public void preDeleteNamespace(ObserverContext ctx, + String namespace) throws IOException { + } + + @Override + public void postDeleteNamespace(ObserverContext ctx, + String namespace) throws IOException { + } + + @Override + public void preModifyNamespace(ObserverContext ctx, + NamespaceDescriptor ns) throws IOException { + } + + @Override + public void postModifyNamespace(ObserverContext ctx, + NamespaceDescriptor ns) throws IOException { + } + + @Override + public void preAddColumn(ObserverContext ctx, + TableName tableName, HColumnDescriptor column) throws IOException { + } + + @Override + public void postAddColumn(ObserverContext ctx, + TableName tableName, HColumnDescriptor column) throws IOException { + } + + @Override + public void preAddColumnHandler( + ObserverContext ctx, TableName tableName, + HColumnDescriptor column) throws IOException { + } + + @Override + public void postAddColumnHandler( + ObserverContext ctx, TableName tableName, + HColumnDescriptor column) throws IOException { + } + + @Override + public void preModifyColumn(ObserverContext ctx, + TableName tableName, HColumnDescriptor descriptor) throws IOException { + } + + @Override + public void postModifyColumn(ObserverContext ctx, + TableName tableName, HColumnDescriptor descriptor) throws IOException { + } + + @Override + public void preModifyColumnHandler( + ObserverContext ctx, TableName tableName, + HColumnDescriptor descriptor) throws IOException { + } + + @Override + public void postModifyColumnHandler( + ObserverContext ctx, TableName tableName, + HColumnDescriptor descriptor) throws IOException { + } + + @Override + public void preDeleteColumn(ObserverContext ctx, + TableName tableName, byte[] c) throws IOException { + } + + @Override + public void postDeleteColumn(ObserverContext ctx, + TableName tableName, byte[] c) throws IOException { + } + + @Override + public void preDeleteColumnHandler( + ObserverContext ctx, TableName tableName, + byte[] c) throws IOException { + } + + @Override + public void postDeleteColumnHandler( + ObserverContext ctx, TableName tableName, + byte[] c) throws IOException { + } + + + @Override + public void preEnableTable(ObserverContext ctx, + TableName tableName) throws IOException { + } + + @Override + public void postEnableTable(ObserverContext ctx, + TableName tableName) throws IOException { + } + + @Override + public void preEnableTableHandler( + ObserverContext ctx, TableName tableName) + throws IOException { + } + + @Override + public void postEnableTableHandler( + ObserverContext ctx, TableName tableName) + throws IOException { + } + + @Override + public void preDisableTable(ObserverContext ctx, + TableName tableName) throws IOException { + } + + @Override + public void postDisableTable(ObserverContext ctx, + TableName tableName) throws IOException { + } + + @Override + public void preDisableTableHandler( + ObserverContext ctx, TableName tableName) + throws IOException { + } + + @Override + public void postDisableTableHandler( + ObserverContext ctx, TableName tableName) + throws IOException { + } + + @Override + public void preAssign(ObserverContext ctx, + HRegionInfo regionInfo) throws IOException { + } + + @Override + public void postAssign(ObserverContext ctx, + HRegionInfo regionInfo) throws IOException { + } + + @Override + public void preUnassign(ObserverContext ctx, + HRegionInfo regionInfo, boolean force) throws IOException { + } + + @Override + public void postUnassign(ObserverContext ctx, + HRegionInfo regionInfo, boolean force) throws IOException { + } + + @Override + public void preRegionOffline(ObserverContext ctx, + HRegionInfo regionInfo) throws IOException { + } + + @Override + public void postRegionOffline(ObserverContext ctx, + HRegionInfo regionInfo) throws IOException { + } + + @Override + public void preBalance(ObserverContext ctx) + throws IOException { + } + + @Override + public void postBalance(ObserverContext ctx, List plans) + throws IOException { + } + + @Override + public boolean preBalanceSwitch(ObserverContext ctx, + boolean b) throws IOException { + return b; + } + + @Override + public void postBalanceSwitch(ObserverContext ctx, + boolean oldValue, boolean newValue) throws IOException { + } + + @Override + public void preShutdown(ObserverContext ctx) + throws IOException { + } + + @Override + public void preStopMaster(ObserverContext ctx) + throws IOException { + } + + @Override + public void postStartMaster(ObserverContext ctx) + throws IOException { + } + + @Override + public void preMasterInitialization( + ObserverContext ctx) throws IOException { + } + + @Override + public void start(CoprocessorEnvironment ctx) throws IOException { + } + + @Override + public void stop(CoprocessorEnvironment ctx) throws IOException { + } + + @Override + public void preMove(ObserverContext ctx, + HRegionInfo region, ServerName srcServer, ServerName destServer) + throws IOException { + } + + @Override + public void postMove(ObserverContext ctx, + HRegionInfo region, ServerName srcServer, ServerName destServer) + throws IOException { + } + + @Override + public void preSnapshot(final ObserverContext ctx, + final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) + throws IOException { + } + + @Override + public void postSnapshot(final ObserverContext ctx, + final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) + throws IOException { + } + + @Override + public void preCloneSnapshot(final ObserverContext ctx, + final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) + throws IOException { + } + + @Override + public void postCloneSnapshot(final ObserverContext ctx, + final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) + throws IOException { + } + + @Override + public void preRestoreSnapshot(final ObserverContext ctx, + final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) + throws IOException { + } + + @Override + public void postRestoreSnapshot(final ObserverContext ctx, + final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) + throws IOException { + } + + @Override + public void preDeleteSnapshot(final ObserverContext ctx, + final SnapshotDescription snapshot) throws IOException { + } + + @Override + public void postDeleteSnapshot(final ObserverContext ctx, + final SnapshotDescription snapshot) throws IOException { + } + + @Override + public void preGetTableDescriptors(ObserverContext ctx, + List tableNamesList, List descriptors) + throws IOException { + } + + @Override + public void postGetTableDescriptors(ObserverContext ctx, + List descriptors) throws IOException { + } + + @Override + public void preTableFlush(ObserverContext ctx, + TableName tableName) throws IOException { + } + + @Override + public void postTableFlush(ObserverContext ctx, + TableName tableName) throws IOException { + } +} 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 6dabc7db3fd..a0dd4384b00 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 @@ -61,7 +61,7 @@ import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Query; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; -import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver; +import org.apache.hadoop.hbase.coprocessor.BaseMasterAndRegionObserver; import org.apache.hadoop.hbase.coprocessor.CoprocessorException; import org.apache.hadoop.hbase.coprocessor.CoprocessorService; import org.apache.hadoop.hbase.coprocessor.EndpointObserver; @@ -78,7 +78,6 @@ import org.apache.hadoop.hbase.filter.FilterList; import org.apache.hadoop.hbase.io.hfile.HFile; import org.apache.hadoop.hbase.ipc.RequestContext; import org.apache.hadoop.hbase.master.MasterServices; -import org.apache.hadoop.hbase.master.RegionPlan; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.ResponseConverter; import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos; @@ -146,8 +145,8 @@ import com.google.protobuf.Service; *

*/ @InterfaceAudience.Private -public class AccessController extends BaseRegionObserver - implements MasterObserver, RegionServerObserver, +public class AccessController extends BaseMasterAndRegionObserver + implements RegionServerObserver, AccessControlService.Interface, CoprocessorService, EndpointObserver { public static final Log LOG = LogFactory.getLog(AccessController.class); @@ -632,7 +631,7 @@ public class AccessController extends BaseRegionObserver // In case of family delete, a Cell will be added into the list with Qualifier as null. for (Cell cell : list) { if (cell.getQualifierLength() == 0 - && (cell.getTypeByte() == Type.DeleteFamily.getCode() + && (cell.getTypeByte() == Type.DeleteFamily.getCode() || cell.getTypeByte() == Type.DeleteFamilyVersion.getCode())) { get.addFamily(col); } else { @@ -828,9 +827,9 @@ public class AccessController extends BaseRegionObserver // if running on HMaster MasterCoprocessorEnvironment mEnv = (MasterCoprocessorEnvironment) env; zk = mEnv.getMasterServices().getZooKeeper(); - } else if (env instanceof RegionServerCoprocessorEnvironment) { + } else if (env instanceof RegionServerCoprocessorEnvironment) { RegionServerCoprocessorEnvironment rsEnv = (RegionServerCoprocessorEnvironment) env; - zk = rsEnv.getRegionServerServices().getZooKeeper(); + zk = rsEnv.getRegionServerServices().getZooKeeper(); } else if (env instanceof RegionCoprocessorEnvironment) { // if running at region regionEnv = (RegionCoprocessorEnvironment) env; @@ -876,14 +875,6 @@ public class AccessController extends BaseRegionObserver requireGlobalPermission("createTable", Action.CREATE, desc.getTableName(), familyMap); } - @Override - public void preCreateTableHandler(ObserverContext c, - HTableDescriptor desc, HRegionInfo[] regions) throws IOException {} - - @Override - public void postCreateTable(ObserverContext c, - HTableDescriptor desc, HRegionInfo[] regions) throws IOException {} - @Override public void postCreateTableHandler(ObserverContext c, HTableDescriptor desc, HRegionInfo[] regions) throws IOException { @@ -927,10 +918,6 @@ public class AccessController extends BaseRegionObserver requirePermission("deleteTable", tableName, null, null, Action.ADMIN, Action.CREATE); } - @Override - public void preDeleteTableHandler(ObserverContext c, - TableName tableName) throws IOException {} - @Override public void postDeleteTable(ObserverContext c, TableName tableName) throws IOException { @@ -938,24 +925,10 @@ public class AccessController extends BaseRegionObserver } @Override - public void postDeleteTableHandler(ObserverContext c, - TableName tableName) throws IOException {} - - @Override public void preTruncateTable(ObserverContext c, TableName tableName) throws IOException { requirePermission("truncateTable", tableName, null, null, Action.ADMIN, Action.CREATE); } - @Override - public void postTruncateTable(ObserverContext c, - TableName tableName) throws IOException { - } - @Override - public void preTruncateTableHandler(ObserverContext c, - TableName tableName) throws IOException {} - @Override - public void postTruncateTableHandler(ObserverContext c, - TableName tableName) throws IOException {} @Override public void preModifyTable(ObserverContext c, TableName tableName, @@ -963,10 +936,6 @@ public class AccessController extends BaseRegionObserver requirePermission("modifyTable", tableName, null, null, Action.ADMIN, Action.CREATE); } - @Override - public void preModifyTableHandler(ObserverContext c, - TableName tableName, HTableDescriptor htd) throws IOException {} - @Override public void postModifyTable(ObserverContext c, TableName tableName, HTableDescriptor htd) throws IOException { @@ -978,85 +947,36 @@ public class AccessController extends BaseRegionObserver AccessControlLists.addUserPermission(c.getEnvironment().getConfiguration(), userperm); } - @Override - public void postModifyTableHandler(ObserverContext c, - TableName tableName, HTableDescriptor htd) throws IOException {} - - @Override public void preAddColumn(ObserverContext c, TableName tableName, HColumnDescriptor column) throws IOException { requirePermission("addColumn", tableName, null, null, Action.ADMIN, Action.CREATE); } - @Override - public void preAddColumnHandler(ObserverContext c, - TableName tableName, HColumnDescriptor column) throws IOException {} - - @Override - public void postAddColumn(ObserverContext c, - TableName tableName, HColumnDescriptor column) throws IOException {} - - @Override - public void postAddColumnHandler(ObserverContext c, - TableName tableName, HColumnDescriptor column) throws IOException {} - @Override public void preModifyColumn(ObserverContext c, TableName tableName, HColumnDescriptor descriptor) throws IOException { requirePermission("modifyColumn", tableName, null, null, Action.ADMIN, Action.CREATE); } - @Override - public void preModifyColumnHandler(ObserverContext c, - TableName tableName, HColumnDescriptor descriptor) throws IOException {} - - @Override - public void postModifyColumn(ObserverContext c, - TableName tableName, HColumnDescriptor descriptor) throws IOException {} - - @Override - public void postModifyColumnHandler(ObserverContext c, - TableName tableName, HColumnDescriptor descriptor) throws IOException {} - @Override public void preDeleteColumn(ObserverContext c, TableName tableName, byte[] col) throws IOException { requirePermission("deleteColumn", tableName, null, null, Action.ADMIN, Action.CREATE); } - @Override - public void preDeleteColumnHandler(ObserverContext c, - TableName tableName, byte[] col) throws IOException {} - @Override public void postDeleteColumn(ObserverContext c, TableName tableName, byte[] col) throws IOException { AccessControlLists.removeTablePermissions(c.getEnvironment().getConfiguration(), tableName, col); } - @Override - public void postDeleteColumnHandler(ObserverContext c, - TableName tableName, byte[] col) throws IOException {} - @Override public void preEnableTable(ObserverContext c, TableName tableName) throws IOException { requirePermission("enableTable", tableName, null, null, Action.ADMIN, Action.CREATE); } - @Override - public void preEnableTableHandler(ObserverContext c, - TableName tableName) throws IOException {} - - @Override - public void postEnableTable(ObserverContext c, - TableName tableName) throws IOException {} - - @Override - public void postEnableTableHandler(ObserverContext c, - TableName tableName) throws IOException {} - @Override public void preDisableTable(ObserverContext c, TableName tableName) throws IOException { @@ -1067,70 +987,36 @@ public class AccessController extends BaseRegionObserver requirePermission("disableTable", tableName, null, null, Action.ADMIN, Action.CREATE); } - @Override - public void preDisableTableHandler(ObserverContext c, - TableName tableName) throws IOException {} - - @Override - public void postDisableTable(ObserverContext c, - TableName tableName) throws IOException {} - - @Override - public void postDisableTableHandler(ObserverContext c, - TableName tableName) throws IOException {} - @Override public void preMove(ObserverContext c, HRegionInfo region, ServerName srcServer, ServerName destServer) throws IOException { requirePermission("move", region.getTable(), null, null, Action.ADMIN); } - @Override - public void postMove(ObserverContext c, - HRegionInfo region, ServerName srcServer, ServerName destServer) - throws IOException {} - @Override public void preAssign(ObserverContext c, HRegionInfo regionInfo) throws IOException { requirePermission("assign", regionInfo.getTable(), null, null, Action.ADMIN); } - @Override - public void postAssign(ObserverContext c, - HRegionInfo regionInfo) throws IOException {} - @Override public void preUnassign(ObserverContext c, HRegionInfo regionInfo, boolean force) throws IOException { requirePermission("unassign", regionInfo.getTable(), null, null, Action.ADMIN); } - @Override - public void postUnassign(ObserverContext c, - HRegionInfo regionInfo, boolean force) throws IOException {} - @Override public void preRegionOffline(ObserverContext c, HRegionInfo regionInfo) throws IOException { requirePermission("regionOffline", regionInfo.getTable(), null, null, Action.ADMIN); } - @Override - public void postRegionOffline(ObserverContext c, - HRegionInfo regionInfo) throws IOException { - } - @Override public void preBalance(ObserverContext c) throws IOException { requirePermission("balance", Action.ADMIN); } - @Override - public void postBalance(ObserverContext c, List plans) - throws IOException {} - @Override public boolean preBalanceSwitch(ObserverContext c, boolean newValue) throws IOException { @@ -1138,10 +1024,6 @@ public class AccessController extends BaseRegionObserver return newValue; } - @Override - public void postBalanceSwitch(ObserverContext c, - boolean oldValue, boolean newValue) throws IOException {} - @Override public void preShutdown(ObserverContext c) throws IOException { @@ -1166,11 +1048,6 @@ public class AccessController extends BaseRegionObserver } } - @Override - public void preMasterInitialization( - ObserverContext ctx) throws IOException { - } - @Override public void preSnapshot(final ObserverContext ctx, final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) @@ -1178,12 +1055,6 @@ public class AccessController extends BaseRegionObserver requirePermission("snapshot", Action.ADMIN); } - @Override - public void postSnapshot(final ObserverContext ctx, - final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) - throws IOException { - } - @Override public void preCloneSnapshot(final ObserverContext ctx, final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) @@ -1191,12 +1062,6 @@ public class AccessController extends BaseRegionObserver requirePermission("clone", Action.ADMIN); } - @Override - public void postCloneSnapshot(final ObserverContext ctx, - final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) - throws IOException { - } - @Override public void preRestoreSnapshot(final ObserverContext ctx, final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) @@ -1204,34 +1069,18 @@ public class AccessController extends BaseRegionObserver requirePermission("restore", Action.ADMIN); } - @Override - public void postRestoreSnapshot(final ObserverContext ctx, - final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) - throws IOException { - } - @Override public void preDeleteSnapshot(final ObserverContext ctx, final SnapshotDescription snapshot) throws IOException { requirePermission("deleteSnapshot", Action.ADMIN); } - @Override - public void postDeleteSnapshot(final ObserverContext ctx, - final SnapshotDescription snapshot) throws IOException { - } - @Override public void preCreateNamespace(ObserverContext ctx, NamespaceDescriptor ns) throws IOException { requireGlobalPermission("createNamespace", Action.ADMIN, ns.getName()); } - @Override - public void postCreateNamespace(ObserverContext ctx, - NamespaceDescriptor ns) throws IOException { - } - @Override public void preDeleteNamespace(ObserverContext ctx, String namespace) throws IOException { @@ -1252,22 +1101,12 @@ public class AccessController extends BaseRegionObserver requireGlobalPermission("modifyNamespace", Action.ADMIN, ns.getName()); } - @Override - public void postModifyNamespace(ObserverContext ctx, - NamespaceDescriptor ns) throws IOException { - } - @Override public void preTableFlush(final ObserverContext ctx, final TableName tableName) throws IOException { requirePermission("flushTable", tableName, null, null, Action.ADMIN, Action.CREATE); } - @Override - public void postTableFlush(final ObserverContext ctx, - final TableName tableName) throws IOException { - } - /* ---- RegionObserver implementation ---- */ @Override @@ -1335,7 +1174,7 @@ public class AccessController extends BaseRegionObserver public void preSplit(ObserverContext e) throws IOException { requirePermission("split", getTableName(e.getEnvironment()), null, null, Action.ADMIN); } - + @Override public void preSplit(ObserverContext e, byte[] splitRow) throws IOException { @@ -1409,7 +1248,7 @@ public class AccessController extends BaseRegionObserver // grants for qualifiers. Otherwise we will fall through below and log // the result and throw an ADE. We may end up checking qualifier // grants three times (permissionGranted above, here, and in the - // filter) but that's the price of backwards compatibility. + // filter) but that's the price of backwards compatibility. if (hasFamilyQualifierPermission(user, Action.READ, env, families)) { Filter ourFilter = new AccessControlFilter(authManager, user, table, AccessControlFilter.Strategy.CHECK_TABLE_AND_CF_ONLY, @@ -1437,7 +1276,7 @@ public class AccessController extends BaseRegionObserver // New behavior: Any access we might be granted is more fine-grained // than whole table or CF. Simply inject a filter and return what is // allowed. We will not throw an AccessDeniedException. This is a - // behavioral change since 0.96. + // behavioral change since 0.96. Filter ourFilter = new AccessControlFilter(authManager, user, table, AccessControlFilter.Strategy.CHECK_CELL_DEFAULT, cfVsMaxVersions); // wrap any existing filter @@ -2324,11 +2163,6 @@ public class AccessController extends BaseRegionObserver } } - @Override - public void postGetTableDescriptors(ObserverContext ctx, - List descriptors) throws IOException { - } - @Override public void preMerge(ObserverContext ctx, HRegion regionA, HRegion regionB) throws IOException { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java index 9b8667bbb8f..70edf98cfd0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java @@ -48,13 +48,10 @@ import org.apache.hadoop.hbase.CoprocessorEnvironment; import org.apache.hadoop.hbase.DoNotRetryIOException; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HConstants; -import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.KeyValue.Type; import org.apache.hadoop.hbase.KeyValueUtil; -import org.apache.hadoop.hbase.NamespaceDescriptor; -import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.Tag; import org.apache.hadoop.hbase.MetaTableAccessor; @@ -67,7 +64,7 @@ import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.constraint.ConstraintException; -import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver; +import org.apache.hadoop.hbase.coprocessor.BaseMasterAndRegionObserver; import org.apache.hadoop.hbase.coprocessor.CoprocessorException; import org.apache.hadoop.hbase.coprocessor.CoprocessorHost; import org.apache.hadoop.hbase.coprocessor.CoprocessorService; @@ -86,10 +83,8 @@ import org.apache.hadoop.hbase.io.hfile.HFile; import org.apache.hadoop.hbase.io.util.StreamUtils; import org.apache.hadoop.hbase.ipc.RequestContext; import org.apache.hadoop.hbase.master.MasterServices; -import org.apache.hadoop.hbase.master.RegionPlan; import org.apache.hadoop.hbase.protobuf.ResponseConverter; import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.RegionActionResult; -import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription; import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos; import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.GetAuthsRequest; import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.GetAuthsResponse; @@ -133,8 +128,8 @@ import com.google.protobuf.Service; * visibility labels */ @InterfaceAudience.Private -public class VisibilityController extends BaseRegionObserver implements MasterObserver, - RegionObserver, VisibilityLabelsService.Interface, CoprocessorService { +public class VisibilityController extends BaseMasterAndRegionObserver implements + VisibilityLabelsService.Interface, CoprocessorService { private static final Log LOG = LogFactory.getLog(VisibilityController.class); private static final byte[] DUMMY_VALUE = new byte[0]; @@ -148,7 +143,7 @@ public class VisibilityController extends BaseRegionObserver implements MasterOb // defined only for Endpoint implementation, so it can have way to access region services. private RegionCoprocessorEnvironment regionEnv; private List scanLabelGenerators; - + private volatile int ordinalCounter = -1; // flags if we are running on a region of the 'labels' table private boolean labelsRegion = false; @@ -249,46 +244,6 @@ public class VisibilityController extends BaseRegionObserver implements MasterOb } } - @Override - public void preCreateTable(ObserverContext ctx, - HTableDescriptor desc, HRegionInfo[] regions) throws IOException { - } - - @Override - public void postCreateTable(ObserverContext ctx, - HTableDescriptor desc, HRegionInfo[] regions) throws IOException { - } - - @Override - public void preCreateTableHandler(ObserverContext ctx, - HTableDescriptor desc, HRegionInfo[] regions) throws IOException { - } - - @Override - public void postCreateTableHandler(ObserverContext ctx, - HTableDescriptor desc, HRegionInfo[] regions) throws IOException { - } - - @Override - public void preDeleteTable(ObserverContext ctx, TableName tableName) - throws IOException { - } - - @Override - public void postDeleteTable(ObserverContext ctx, TableName tableName) - throws IOException { - } - - @Override - public void preDeleteTableHandler(ObserverContext ctx, - TableName tableName) throws IOException { - } - - @Override - public void postDeleteTableHandler(ObserverContext ctx, - TableName tableName) throws IOException { - } - @Override public void preModifyTable(ObserverContext ctx, TableName tableName, HTableDescriptor htd) throws IOException { @@ -297,21 +252,6 @@ public class VisibilityController extends BaseRegionObserver implements MasterOb } } - @Override - public void postModifyTable(ObserverContext ctx, - TableName tableName, HTableDescriptor htd) throws IOException { - } - - @Override - public void preModifyTableHandler(ObserverContext ctx, - TableName tableName, HTableDescriptor htd) throws IOException { - } - - @Override - public void postModifyTableHandler(ObserverContext ctx, - TableName tableName, HTableDescriptor htd) throws IOException { - } - @Override public void preAddColumn(ObserverContext ctx, TableName tableName, HColumnDescriptor column) throws IOException { @@ -320,21 +260,6 @@ public class VisibilityController extends BaseRegionObserver implements MasterOb } } - @Override - public void postAddColumn(ObserverContext ctx, TableName tableName, - HColumnDescriptor column) throws IOException { - } - - @Override - public void preAddColumnHandler(ObserverContext ctx, - TableName tableName, HColumnDescriptor column) throws IOException { - } - - @Override - public void postAddColumnHandler(ObserverContext ctx, - TableName tableName, HColumnDescriptor column) throws IOException { - } - @Override public void preModifyColumn(ObserverContext ctx, TableName tableName, HColumnDescriptor descriptor) throws IOException { @@ -343,21 +268,6 @@ public class VisibilityController extends BaseRegionObserver implements MasterOb } } - @Override - public void postModifyColumn(ObserverContext ctx, - TableName tableName, HColumnDescriptor descriptor) throws IOException { - } - - @Override - public void preModifyColumnHandler(ObserverContext ctx, - TableName tableName, HColumnDescriptor descriptor) throws IOException { - } - - @Override - public void postModifyColumnHandler(ObserverContext ctx, - TableName tableName, HColumnDescriptor descriptor) throws IOException { - } - @Override public void preDeleteColumn(ObserverContext ctx, TableName tableName, byte[] c) throws IOException { @@ -366,63 +276,6 @@ public class VisibilityController extends BaseRegionObserver implements MasterOb } } - @Override - public void postDeleteColumn(ObserverContext ctx, - TableName tableName, byte[] c) throws IOException { - } - - @Override - public void preDeleteColumnHandler(ObserverContext ctx, - TableName tableName, byte[] c) throws IOException { - } - - @Override - public void postDeleteColumnHandler(ObserverContext ctx, - TableName tableName, byte[] c) throws IOException { - } - - @Override - public void preTruncateTable(ObserverContext ctx, - TableName tableName) throws IOException { - } - - @Override - public void postTruncateTable(ObserverContext ctx, - TableName tableName) throws IOException { - } - - @Override - public void preTruncateTableHandler( - final ObserverContext ctx, TableName tableName) - throws IOException{ - } - - @Override - public void postTruncateTableHandler( - final ObserverContext ctx, TableName tableName) - throws IOException { - } - - @Override - public void preEnableTable(ObserverContext ctx, TableName tableName) - throws IOException { - } - - @Override - public void postEnableTable(ObserverContext ctx, TableName tableName) - throws IOException { - } - - @Override - public void preEnableTableHandler(ObserverContext ctx, - TableName tableName) throws IOException { - } - - @Override - public void postEnableTableHandler(ObserverContext ctx, - TableName tableName) throws IOException { - } - @Override public void preDisableTable(ObserverContext ctx, TableName tableName) throws IOException { @@ -431,185 +284,6 @@ public class VisibilityController extends BaseRegionObserver implements MasterOb } } - @Override - public void postDisableTable(ObserverContext ctx, - TableName tableName) throws IOException { - } - - @Override - public void preDisableTableHandler(ObserverContext ctx, - TableName tableName) throws IOException { - } - - @Override - public void postDisableTableHandler(ObserverContext ctx, - TableName tableName) throws IOException { - } - - @Override - public void preMove(ObserverContext ctx, HRegionInfo region, - ServerName srcServer, ServerName destServer) throws IOException { - } - - @Override - public void postMove(ObserverContext ctx, HRegionInfo region, - ServerName srcServer, ServerName destServer) throws IOException { - } - - @Override - public void preAssign(ObserverContext ctx, HRegionInfo regionInfo) - throws IOException { - } - - @Override - public void postAssign(ObserverContext ctx, HRegionInfo regionInfo) - throws IOException { - } - - @Override - public void preUnassign(ObserverContext ctx, - HRegionInfo regionInfo, boolean force) throws IOException { - } - - @Override - public void postUnassign(ObserverContext ctx, - HRegionInfo regionInfo, boolean force) throws IOException { - } - - @Override - public void preRegionOffline(ObserverContext ctx, - HRegionInfo regionInfo) throws IOException { - } - - @Override - public void postRegionOffline(ObserverContext ctx, - HRegionInfo regionInfo) throws IOException { - } - - @Override - public void preBalance(ObserverContext ctx) throws IOException { - } - - @Override - public void postBalance(ObserverContext ctx, List plans) - throws IOException { - } - - @Override - public boolean preBalanceSwitch(ObserverContext ctx, - boolean newValue) throws IOException { - return newValue; - } - - @Override - public void postBalanceSwitch(ObserverContext ctx, - boolean oldValue, boolean newValue) throws IOException { - } - - @Override - public void preShutdown(ObserverContext ctx) throws IOException { - } - - @Override - public void preStopMaster(ObserverContext ctx) throws IOException { - } - - @Override - public void preSnapshot(ObserverContext ctx, - SnapshotDescription snapshot, HTableDescriptor hTableDescriptor) throws IOException { - } - - @Override - public void postSnapshot(ObserverContext ctx, - SnapshotDescription snapshot, HTableDescriptor hTableDescriptor) throws IOException { - } - - @Override - public void preCloneSnapshot(ObserverContext ctx, - SnapshotDescription snapshot, HTableDescriptor hTableDescriptor) throws IOException { - } - - @Override - public void postCloneSnapshot(ObserverContext ctx, - SnapshotDescription snapshot, HTableDescriptor hTableDescriptor) throws IOException { - } - - @Override - public void preRestoreSnapshot(ObserverContext ctx, - SnapshotDescription snapshot, HTableDescriptor hTableDescriptor) throws IOException { - } - - @Override - public void postRestoreSnapshot(ObserverContext ctx, - SnapshotDescription snapshot, HTableDescriptor hTableDescriptor) throws IOException { - } - - @Override - public void preDeleteSnapshot(ObserverContext ctx, - SnapshotDescription snapshot) throws IOException { - } - - @Override - public void postDeleteSnapshot(ObserverContext ctx, - SnapshotDescription snapshot) throws IOException { - } - - @Override - public void preGetTableDescriptors(ObserverContext ctx, - List tableNamesList, List descriptors) throws IOException { - } - - @Override - public void postGetTableDescriptors(ObserverContext ctx, - List descriptors) throws IOException { - } - - @Override - public void preCreateNamespace(ObserverContext ctx, - NamespaceDescriptor ns) throws IOException { - } - - @Override - public void postCreateNamespace(ObserverContext ctx, - NamespaceDescriptor ns) throws IOException { - } - - @Override - public void preDeleteNamespace(ObserverContext ctx, - String namespace) throws IOException { - } - - @Override - public void postDeleteNamespace(ObserverContext ctx, - String namespace) throws IOException { - } - - @Override - public void preModifyNamespace(ObserverContext ctx, - NamespaceDescriptor ns) throws IOException { - } - - @Override - public void postModifyNamespace(ObserverContext ctx, - NamespaceDescriptor ns) throws IOException { - } - - @Override - public void preTableFlush(ObserverContext ctx, - TableName tableName) throws IOException { - } - - @Override - public void postTableFlush(ObserverContext ctx, - TableName tableName) throws IOException { - } - - @Override - public void preMasterInitialization(ObserverContext ctx) - throws IOException { - - } - /****************************** Region related hooks ******************************/ @Override @@ -637,7 +311,7 @@ public class VisibilityController extends BaseRegionObserver implements MasterOb private void initialize(ObserverContext e) { try { - Pair, Map>> labelsAndUserAuths = + Pair, Map>> labelsAndUserAuths = extractLabelsAndAuths(getExistingLabelsWithAuths()); Map labels = labelsAndUserAuths.getFirst(); Map> userAuths = labelsAndUserAuths.getSecond();