@InterfaceAudience.LimitedPrivate(value="Configuration") public class AccessController extends BaseMasterAndRegionObserver implements RegionServerObserver, org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface, CoprocessorService, EndpointObserver, BulkLoadObserver
AccessController
performs authorization checks for HBase operations
based on:
Permission.Action
values)
If the authorization check fails, an AccessDeniedException
will be thrown for the operation.
To perform authorization checks, AccessController
relies on the
RpcServerEngine being loaded to provide
the user identities for remote requests.
The access control lists used for authorization can be manipulated via the
exposed AccessControlProtos.AccessControlService
Interface implementation, and the associated
grant
, revoke
, and user_permission
HBase shell
commands.
Modifier and Type | Class and Description |
---|---|
private static class |
AccessController.OpType |
Coprocessor.State
RegionObserver.MutationType
Modifier and Type | Field and Description |
---|---|
(package private) boolean |
aclRegion
flags if we are running on a region of the _acl_ table
|
private boolean |
aclTabAvailable
if the ACL table is available, only relevant in the master
|
private static org.apache.commons.logging.Log |
AUDITLOG |
(package private) TableAuthManager |
authManager |
(package private) boolean |
authorizationEnabled
if we are active, usually true, only not true if "hbase.security.authorization"
has been set to false in site configuration
|
(package private) boolean |
cellFeaturesEnabled
if we are able to support cell ACLs
|
private static String |
CHECK_COVERING_PERM |
(package private) boolean |
compatibleEarlyTermination
if we should terminate access checks early as soon as table or CF grants
allow access; pre-0.98 compatible behavior
|
private boolean |
initialized
if we have been successfully initialized
|
private static org.apache.commons.logging.Log |
LOG |
private RegionCoprocessorEnvironment |
regionEnv
defined only for Endpoint implementation, so it can have way to
access region services
|
private Map<InternalScanner,String> |
scannerOwners
Mapping of scanner instances to the user who created them
|
(package private) boolean |
shouldCheckExecPermission
if we should check EXEC permissions
|
private Map<TableName,List<UserPermission>> |
tableAcls |
private static String |
TAG_CHECK_PASSED |
private static byte[] |
TRUE |
private UserProvider |
userProvider
Provider for mapping principal names to Users
|
PRIORITY_HIGHEST, PRIORITY_LOWEST, PRIORITY_SYSTEM, PRIORITY_USER, VERSION
Constructor and Description |
---|
AccessController() |
Modifier and Type | Method and Description |
---|---|
private static void |
addCellPermissions(byte[] perms,
Map<byte[],List<Cell>> familyMap) |
private boolean |
checkCoveringPermission(AccessController.OpType request,
RegionCoprocessorEnvironment e,
byte[] row,
Map<byte[],? extends Collection<?>> familyMap,
long opTs,
Permission.Action... actions)
Determine if cell ACLs covered by the operation grant access.
|
private void |
checkForReservedTagPresence(User user,
Mutation m) |
void |
checkPermissions(com.google.protobuf.RpcController controller,
org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.CheckPermissionsRequest request,
com.google.protobuf.RpcCallback<org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.CheckPermissionsResponse> done)
rpc CheckPermissions(.CheckPermissionsRequest) returns (.CheckPermissionsResponse); |
private void |
checkSystemOrSuperUser() |
private User |
getActiveUser()
Returns the active user to which authorization checks should be applied.
|
TableAuthManager |
getAuthManager() |
Region |
getRegion() |
private Region |
getRegion(RegionCoprocessorEnvironment e) |
com.google.protobuf.Service |
getService() |
private TableName |
getTableName(Region region) |
private TableName |
getTableName(RegionCoprocessorEnvironment e) |
void |
getUserPermissions(com.google.protobuf.RpcController controller,
org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.GetUserPermissionsRequest request,
com.google.protobuf.RpcCallback<org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.GetUserPermissionsResponse> done)
rpc GetUserPermissions(.GetUserPermissionsRequest) returns (.GetUserPermissionsResponse); |
void |
grant(com.google.protobuf.RpcController controller,
org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.GrantRequest request,
com.google.protobuf.RpcCallback<org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.GrantResponse> done)
rpc Grant(.GrantRequest) returns (.GrantResponse); |
private boolean |
hasFamilyQualifierPermission(User user,
Permission.Action perm,
RegionCoprocessorEnvironment env,
Map<byte[],? extends Collection<byte[]>> familyMap)
Returns
true if the current user is allowed the given action
over at least one of the column qualifiers in the given column families. |
(package private) void |
initialize(RegionCoprocessorEnvironment e) |
private void |
internalPreRead(ObserverContext<RegionCoprocessorEnvironment> c,
Query query,
AccessController.OpType opType) |
static boolean |
isAuthorizationSupported(org.apache.hadoop.conf.Configuration conf) |
static boolean |
isCellAuthorizationSupported(org.apache.hadoop.conf.Configuration conf) |
private void |
logResult(AuthResult result) |
private Map<byte[],? extends Collection<byte[]>> |
makeFamilyMap(byte[] family,
byte[] qualifier) |
(package private) AuthResult |
permissionGranted(AccessController.OpType opType,
User user,
RegionCoprocessorEnvironment e,
Map<byte[],? extends Collection<?>> families,
Permission.Action... actions)
Check the current user for authorization to perform a specific action
against the given set of row data.
|
(package private) AuthResult |
permissionGranted(String request,
User user,
Permission.Action permRequest,
RegionCoprocessorEnvironment e,
Map<byte[],? extends Collection<?>> families)
Check the current user for authorization to perform a specific action
against the given set of row data.
|
void |
postAbortProcedure(ObserverContext<MasterCoprocessorEnvironment> ctx)
Called after a abortProcedure request has been processed.
|
ReplicationEndpoint |
postCreateReplicationEndPoint(ObserverContext<RegionServerCoprocessorEnvironment> ctx,
ReplicationEndpoint endpoint)
This will be called after the replication endpoint is instantiated.
|
void |
postCreateTableHandler(ObserverContext<MasterCoprocessorEnvironment> c,
HTableDescriptor desc,
HRegionInfo[] regions)
Called after the createTable operation has been requested.
|
void |
postDelete(ObserverContext<RegionCoprocessorEnvironment> c,
Delete delete,
WALEdit edit,
Durability durability)
Called after the client deletes a value.
|
void |
postDeleteColumn(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName,
byte[] col)
Called after the column family has been deleted.
|
void |
postDeleteNamespace(ObserverContext<MasterCoprocessorEnvironment> ctx,
String namespace)
Called after the deleteNamespace operation has been requested.
|
void |
postDeleteTable(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName)
Called after the deleteTable operation has been requested.
|
void |
postEndpointInvocation(ObserverContext<RegionCoprocessorEnvironment> ctx,
com.google.protobuf.Service service,
String methodName,
com.google.protobuf.Message request,
com.google.protobuf.Message.Builder responseBuilder)
Called after an Endpoint service method is invoked.
|
void |
postGetTableDescriptors(ObserverContext<MasterCoprocessorEnvironment> ctx,
List<TableName> tableNamesList,
List<HTableDescriptor> descriptors,
String regex)
Called after a getTableDescriptors request has been processed.
|
void |
postGetTableNames(ObserverContext<MasterCoprocessorEnvironment> ctx,
List<HTableDescriptor> descriptors,
String regex)
Called after a getTableNames request has been processed.
|
void |
postListNamespaceDescriptors(ObserverContext<MasterCoprocessorEnvironment> ctx,
List<NamespaceDescriptor> descriptors)
Called after a listNamespaceDescriptors request has been processed.
|
void |
postListProcedures(ObserverContext<MasterCoprocessorEnvironment> ctx,
List<ProcedureInfo> procInfoList)
Called after a listProcedures request has been processed.
|
void |
postLogReplay(ObserverContext<RegionCoprocessorEnvironment> c)
Called after the log replay on the region is over.
|
void |
postMerge(ObserverContext<RegionServerCoprocessorEnvironment> c,
Region regionA,
Region regionB,
Region mergedRegion)
called after the regions merge.
|
void |
postMergeCommit(ObserverContext<RegionServerCoprocessorEnvironment> ctx,
Region regionA,
Region regionB,
Region mergedRegion)
This will be called after PONR step as part of regions merge transaction.
|
void |
postModifyTable(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName,
HTableDescriptor htd)
Called after the modifyTable operation has been requested.
|
Cell |
postMutationBeforeWAL(ObserverContext<RegionCoprocessorEnvironment> ctx,
RegionObserver.MutationType opType,
Mutation mutation,
Cell oldCell,
Cell newCell)
Called after a new cell has been created during an increment operation, but before
it is committed to the WAL or memstore.
|
void |
postOpen(ObserverContext<RegionCoprocessorEnvironment> c)
Called after the region is reported as open to the master.
|
void |
postPut(ObserverContext<RegionCoprocessorEnvironment> c,
Put put,
WALEdit edit,
Durability durability)
Called after the client stores a value.
|
void |
postReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,
List<org.apache.hadoop.hbase.protobuf.generated.AdminProtos.WALEntry> entries,
CellScanner cells)
This will be called after executing replication request to shipping log entries.
|
void |
postRollBackMerge(ObserverContext<RegionServerCoprocessorEnvironment> ctx,
Region regionA,
Region regionB)
This will be called after the roll back of the regions merge.
|
void |
postRollWALWriterRequest(ObserverContext<RegionServerCoprocessorEnvironment> ctx)
This will be called after executing user request to roll a region server WAL.
|
void |
postScannerClose(ObserverContext<RegionCoprocessorEnvironment> c,
InternalScanner s)
Called after the client closes a scanner.
|
RegionScanner |
postScannerOpen(ObserverContext<RegionCoprocessorEnvironment> c,
Scan scan,
RegionScanner s)
Called after the client opens a new scanner.
|
void |
postStartMaster(ObserverContext<MasterCoprocessorEnvironment> ctx)
Called immediately after an active master instance has completed
initialization.
|
void |
postTruncateTable(ObserverContext<MasterCoprocessorEnvironment> ctx,
TableName tableName)
Called after the truncateTable operation has been requested.
|
void |
preAbortProcedure(ObserverContext<MasterCoprocessorEnvironment> ctx,
ProcedureExecutor<MasterProcedureEnv> procEnv,
long procId)
Called before a abortProcedure request has been processed.
|
void |
preAddColumn(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName,
HColumnDescriptor column)
Called prior to adding a new column family to the table.
|
Result |
preAppend(ObserverContext<RegionCoprocessorEnvironment> c,
Append append)
Called before Append.
|
Result |
preAppendAfterRowLock(ObserverContext<RegionCoprocessorEnvironment> c,
Append append)
Called before Append but after acquiring rowlock.
|
void |
preAssign(ObserverContext<MasterCoprocessorEnvironment> c,
HRegionInfo regionInfo)
Called prior to assigning a specific region.
|
void |
preBalance(ObserverContext<MasterCoprocessorEnvironment> c)
Called prior to requesting rebalancing of the cluster regions, though after
the initial checks for regions in transition and the balance switch flag.
|
boolean |
preBalanceSwitch(ObserverContext<MasterCoprocessorEnvironment> c,
boolean newValue)
Called prior to modifying the flag used to enable/disable region balancing.
|
void |
preBatchMutate(ObserverContext<RegionCoprocessorEnvironment> c,
MiniBatchOperationInProgress<Mutation> miniBatchOp)
This will be called for every batch mutation operation happening at the server.
|
void |
preBulkLoadHFile(ObserverContext<RegionCoprocessorEnvironment> ctx,
List<Pair<byte[],String>> familyPaths)
Verifies user has CREATE privileges on
the Column Families involved in the bulkLoadHFile
request.
|
boolean |
preCheckAndDelete(ObserverContext<RegionCoprocessorEnvironment> c,
byte[] row,
byte[] family,
byte[] qualifier,
CompareFilter.CompareOp compareOp,
ByteArrayComparable comparator,
Delete delete,
boolean result)
Called before checkAndDelete.
|
boolean |
preCheckAndDeleteAfterRowLock(ObserverContext<RegionCoprocessorEnvironment> c,
byte[] row,
byte[] family,
byte[] qualifier,
CompareFilter.CompareOp compareOp,
ByteArrayComparable comparator,
Delete delete,
boolean result)
Called before checkAndDelete but after acquiring rowock.
|
boolean |
preCheckAndPut(ObserverContext<RegionCoprocessorEnvironment> c,
byte[] row,
byte[] family,
byte[] qualifier,
CompareFilter.CompareOp compareOp,
ByteArrayComparable comparator,
Put put,
boolean result)
Called before checkAndPut.
|
boolean |
preCheckAndPutAfterRowLock(ObserverContext<RegionCoprocessorEnvironment> c,
byte[] row,
byte[] family,
byte[] qualifier,
CompareFilter.CompareOp compareOp,
ByteArrayComparable comparator,
Put put,
boolean result)
Called before checkAndPut but after acquiring rowlock.
|
void |
preCleanupBulkLoad(ObserverContext<RegionCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.protobuf.generated.SecureBulkLoadProtos.CleanupBulkLoadRequest request)
Authorization security check for
SecureBulkLoadProtocol.cleanupBulkLoad()
|
void |
preCloneSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot,
HTableDescriptor hTableDescriptor)
Called before a snapshot is cloned.
|
void |
preClose(ObserverContext<RegionCoprocessorEnvironment> e,
boolean abortRequested)
Called before the region is reported as closed to the master.
|
InternalScanner |
preCompact(ObserverContext<RegionCoprocessorEnvironment> e,
Store store,
InternalScanner scanner,
ScanType scanType)
Called prior to writing the
StoreFile s selected for compaction into a new
StoreFile . |
void |
preCreateNamespace(ObserverContext<MasterCoprocessorEnvironment> ctx,
NamespaceDescriptor ns)
Called before a new namespace is created by
HMaster . |
void |
preCreateTable(ObserverContext<MasterCoprocessorEnvironment> c,
HTableDescriptor desc,
HRegionInfo[] regions)
Called before a new table is created by
HMaster . |
void |
preDelete(ObserverContext<RegionCoprocessorEnvironment> c,
Delete delete,
WALEdit edit,
Durability durability)
Called before the client deletes a value.
|
void |
preDeleteColumn(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName,
byte[] col)
Called prior to deleting the entire column family.
|
void |
preDeleteNamespace(ObserverContext<MasterCoprocessorEnvironment> ctx,
String namespace)
Called before
HMaster deletes a
namespace
It can't bypass the default action, e.g., ctx.bypass() won't have effect. |
void |
preDeleteSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot)
Called before a snapshot is deleted.
|
void |
preDeleteTable(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName)
Called before
HMaster deletes a
table. |
void |
preDisableTable(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName)
Called prior to disabling a table.
|
void |
preEnableTable(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName)
Called prior to enabling a table.
|
com.google.protobuf.Message |
preEndpointInvocation(ObserverContext<RegionCoprocessorEnvironment> ctx,
com.google.protobuf.Service service,
String methodName,
com.google.protobuf.Message request)
Called before an Endpoint service method is invoked.
|
boolean |
preExists(ObserverContext<RegionCoprocessorEnvironment> c,
Get get,
boolean exists)
Called before the client tests for existence using a Get.
|
void |
preFlush(ObserverContext<RegionCoprocessorEnvironment> e)
Called before the memstore is flushed to disk.
|
void |
preGetClosestRowBefore(ObserverContext<RegionCoprocessorEnvironment> c,
byte[] row,
byte[] family,
Result result)
Called before a client makes a GetClosestRowBefore request.
|
void |
preGetNamespaceDescriptor(ObserverContext<MasterCoprocessorEnvironment> ctx,
String namespace)
Called before a getNamespaceDescriptor request has been processed.
|
void |
preGetOp(ObserverContext<RegionCoprocessorEnvironment> c,
Get get,
List<Cell> result)
Called before the client performs a Get
|
void |
preGetTableDescriptors(ObserverContext<MasterCoprocessorEnvironment> ctx,
List<TableName> tableNamesList,
List<HTableDescriptor> descriptors,
String regex)
Called before a getTableDescriptors request has been processed.
|
Result |
preIncrement(ObserverContext<RegionCoprocessorEnvironment> c,
Increment increment)
Called before Increment.
|
Result |
preIncrementAfterRowLock(ObserverContext<RegionCoprocessorEnvironment> c,
Increment increment)
Called before Increment but after acquiring rowlock.
|
long |
preIncrementColumnValue(ObserverContext<RegionCoprocessorEnvironment> c,
byte[] row,
byte[] family,
byte[] qualifier,
long amount,
boolean writeToWAL)
Called before incrementColumnValue
|
void |
preListProcedures(ObserverContext<MasterCoprocessorEnvironment> ctx)
Called before a listProcedures request has been processed.
|
void |
preListSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot)
Called before listSnapshots request has been processed.
|
void |
preMerge(ObserverContext<RegionServerCoprocessorEnvironment> ctx,
Region regionA,
Region regionB)
Called before the regions merge.
|
void |
preMergeCommit(ObserverContext<RegionServerCoprocessorEnvironment> ctx,
Region regionA,
Region regionB,
List<Mutation> metaEntries)
This will be called before PONR step as part of regions merge transaction.
|
void |
preModifyColumn(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName,
HColumnDescriptor descriptor)
Called prior to modifying a column family's attributes.
|
void |
preModifyNamespace(ObserverContext<MasterCoprocessorEnvironment> ctx,
NamespaceDescriptor ns)
Called prior to modifying a namespace's properties.
|
void |
preModifyTable(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName,
HTableDescriptor htd)
Called prior to modifying a table's properties.
|
void |
preMove(ObserverContext<MasterCoprocessorEnvironment> c,
HRegionInfo region,
ServerName srcServer,
ServerName destServer)
Called prior to moving a given region from one region server to another.
|
void |
preOpen(ObserverContext<RegionCoprocessorEnvironment> e)
Called before the region is reported as open to the master.
|
void |
prePrepareBulkLoad(ObserverContext<RegionCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.protobuf.generated.SecureBulkLoadProtos.PrepareBulkLoadRequest request)
Authorization check for
SecureBulkLoadProtocol.prepareBulkLoad()
|
void |
prePut(ObserverContext<RegionCoprocessorEnvironment> c,
Put put,
WALEdit edit,
Durability durability)
Called before the client stores a value.
|
void |
preRegionOffline(ObserverContext<MasterCoprocessorEnvironment> c,
HRegionInfo regionInfo)
Called prior to marking a given region as offline.
|
void |
preReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,
List<org.apache.hadoop.hbase.protobuf.generated.AdminProtos.WALEntry> entries,
CellScanner cells)
This will be called before executing replication request to shipping log entries.
|
void |
preRestoreSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot,
HTableDescriptor hTableDescriptor)
Called before a snapshot is restored.
|
void |
preRollBackMerge(ObserverContext<RegionServerCoprocessorEnvironment> ctx,
Region regionA,
Region regionB)
This will be called before the roll back of the regions merge.
|
void |
preRollWALWriterRequest(ObserverContext<RegionServerCoprocessorEnvironment> ctx)
This will be called before executing user request to roll a region server WAL.
|
void |
preScannerClose(ObserverContext<RegionCoprocessorEnvironment> c,
InternalScanner s)
Called before the client closes a scanner.
|
boolean |
preScannerNext(ObserverContext<RegionCoprocessorEnvironment> c,
InternalScanner s,
List<Result> result,
int limit,
boolean hasNext)
Called before the client asks for the next row on a scanner.
|
RegionScanner |
preScannerOpen(ObserverContext<RegionCoprocessorEnvironment> c,
Scan scan,
RegionScanner s)
Called before the client opens a new scanner.
|
void |
preSetNamespaceQuota(ObserverContext<MasterCoprocessorEnvironment> ctx,
String namespace,
org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas)
Called before the quota for the namespace is stored.
|
void |
preSetTableQuota(ObserverContext<MasterCoprocessorEnvironment> ctx,
TableName tableName,
org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas)
Called before the quota for the table is stored.
|
void |
preSetUserQuota(ObserverContext<MasterCoprocessorEnvironment> ctx,
String userName,
org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas)
Called before the quota for the user is stored.
|
void |
preSetUserQuota(ObserverContext<MasterCoprocessorEnvironment> ctx,
String userName,
String namespace,
org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas)
Called before the quota for the user on the specified namespace is stored.
|
void |
preSetUserQuota(ObserverContext<MasterCoprocessorEnvironment> ctx,
String userName,
TableName tableName,
org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas)
Called before the quota for the user on the specified table is stored.
|
void |
preShutdown(ObserverContext<MasterCoprocessorEnvironment> c)
Called prior to shutting down the full HBase cluster, including this
HMaster process. |
void |
preSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx,
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot,
HTableDescriptor hTableDescriptor)
Called before a new snapshot is taken.
|
void |
preSplit(ObserverContext<RegionCoprocessorEnvironment> e)
Called before the region is split.
|
void |
preSplit(ObserverContext<RegionCoprocessorEnvironment> e,
byte[] splitRow)
Called before the region is split.
|
void |
preStopMaster(ObserverContext<MasterCoprocessorEnvironment> c)
Called immediately prior to stopping this
HMaster process. |
void |
preStopRegionServer(ObserverContext<RegionServerCoprocessorEnvironment> env)
Called before stopping region server.
|
void |
preTableFlush(ObserverContext<MasterCoprocessorEnvironment> ctx,
TableName tableName)
Called before the table memstore is flushed to disk.
|
void |
preTruncateTable(ObserverContext<MasterCoprocessorEnvironment> c,
TableName tableName)
Called before
HMaster truncates a
table. |
void |
preUnassign(ObserverContext<MasterCoprocessorEnvironment> c,
HRegionInfo regionInfo,
boolean force)
Called prior to unassigning a given region.
|
private void |
requireAccess(String request,
TableName tableName,
Permission.Action... permissions)
Authorizes that the current user has any of the given permissions to access the table.
|
private void |
requireGlobalPermission(String request,
Permission.Action perm,
String namespace)
Checks that the user has the given global permission.
|
private void |
requireGlobalPermission(String request,
Permission.Action perm,
TableName tableName,
Map<byte[],? extends Collection<byte[]>> familyMap)
Checks that the user has the given global permission.
|
void |
requireNamespacePermission(String request,
String namespace,
Permission.Action... permissions)
Checks that the user has the given global or namespace permission.
|
void |
requireNamespacePermission(String request,
String namespace,
TableName tableName,
Map<byte[],? extends Collection<byte[]>> familyMap,
Permission.Action... permissions)
Checks that the user has the given global or namespace permission.
|
private void |
requirePermission(String request,
Permission.Action perm)
Authorizes that the current user has global privileges for the given action.
|
private void |
requirePermission(String request,
TableName tableName,
byte[] family,
byte[] qualifier,
Permission.Action... permissions)
Authorizes that the current user has any of the given permissions for the
given table, column family and column qualifier.
|
private void |
requireScannerOwner(InternalScanner s)
Verify, when servicing an RPC, that the caller is the scanner owner.
|
private void |
requireTablePermission(String request,
TableName tableName,
byte[] family,
byte[] qualifier,
Permission.Action... permissions)
Authorizes that the current user has any of the given permissions for the
given table, column family and column qualifier.
|
void |
revoke(com.google.protobuf.RpcController controller,
org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.RevokeRequest request,
com.google.protobuf.RpcCallback<org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.RevokeResponse> done)
rpc Revoke(.RevokeRequest) returns (.RevokeResponse); |
void |
start(CoprocessorEnvironment env) |
void |
stop(CoprocessorEnvironment env) |
(package private) void |
updateACL(RegionCoprocessorEnvironment e,
Map<byte[],List<Cell>> familyMap)
Writes all table ACLs for the tables in the given Map up into ZooKeeper
znodes.
|
postAddColumn, postAddColumnHandler, postAssign, postBalance, postBalanceSwitch, postCloneSnapshot, postCreateNamespace, postCreateTable, postDeleteColumnHandler, postDeleteSnapshot, postDeleteTableHandler, postDisableTable, postDisableTableHandler, postEnableTable, postEnableTableHandler, postGetNamespaceDescriptor, postGetTableDescriptors, postListSnapshot, postModifyColumn, postModifyColumnHandler, postModifyNamespace, postModifyTableHandler, postMove, postRegionOffline, postRestoreSnapshot, postSetNamespaceQuota, postSetTableQuota, postSetUserQuota, postSetUserQuota, postSetUserQuota, postSnapshot, postTableFlush, postTruncateTableHandler, postUnassign, preAddColumnHandler, preCreateTableHandler, preDeleteColumnHandler, preDeleteTableHandler, preDisableTableHandler, preEnableTableHandler, preGetTableDescriptors, preGetTableNames, preListNamespaceDescriptors, preMasterInitialization, preModifyColumnHandler, preModifyTableHandler, preTruncateTableHandler
postAppend, postBatchMutate, postBatchMutateIndispensably, postBulkLoadHFile, postCheckAndDelete, postCheckAndPut, postClose, postCloseRegionOperation, postCompact, postCompact, postCompactSelection, postCompactSelection, postCompleteSplit, postExists, postFlush, postFlush, postGetClosestRowBefore, postGetOp, postIncrement, postIncrementColumnValue, postInstantiateDeleteTracker, postRollBackSplit, postScannerFilterRow, postScannerNext, postSplit, postStartRegionOperation, postStoreFileReaderOpen, postWALRestore, postWALRestore, preCompact, preCompactScannerOpen, preCompactScannerOpen, preCompactSelection, preCompactSelection, preFlush, preFlushScannerOpen, prePrepareTimeStampForDeleteVersion, preRollBackSplit, preSplitAfterPONR, preSplitBeforePONR, preStoreFileReaderOpen, preStoreScannerOpen, preWALRestore, preWALRestore
private static final org.apache.commons.logging.Log LOG
private static final org.apache.commons.logging.Log AUDITLOG
private static final String CHECK_COVERING_PERM
private static final String TAG_CHECK_PASSED
private static final byte[] TRUE
TableAuthManager authManager
boolean aclRegion
private RegionCoprocessorEnvironment regionEnv
private Map<InternalScanner,String> scannerOwners
private Map<TableName,List<UserPermission>> tableAcls
private UserProvider userProvider
boolean authorizationEnabled
boolean cellFeaturesEnabled
boolean shouldCheckExecPermission
boolean compatibleEarlyTermination
private volatile boolean initialized
private volatile boolean aclTabAvailable
public static boolean isAuthorizationSupported(org.apache.hadoop.conf.Configuration conf)
public static boolean isCellAuthorizationSupported(org.apache.hadoop.conf.Configuration conf)
public Region getRegion()
public TableAuthManager getAuthManager()
void initialize(RegionCoprocessorEnvironment e) throws IOException
IOException
void updateACL(RegionCoprocessorEnvironment e, Map<byte[],List<Cell>> familyMap)
_acl_
table updates.AuthResult permissionGranted(String request, User user, Permission.Action permRequest, RegionCoprocessorEnvironment e, Map<byte[],? extends Collection<?>> families)
Note: Ordering of the authorization checks has been carefully optimized to short-circuit the most common requests and minimize the amount of processing required.
permRequest
- the action being requestede
- the coprocessor environmentfamilies
- the map of column families to qualifiers present in
the requestAuthResult permissionGranted(AccessController.OpType opType, User user, RegionCoprocessorEnvironment e, Map<byte[],? extends Collection<?>> families, Permission.Action... actions)
opType
- the operation typeuser
- the usere
- the coprocessor environmentfamilies
- the map of column families to qualifiers present in
the requestactions
- the desired actionsprivate void logResult(AuthResult result)
private User getActiveUser() throws IOException
IOException
private void requirePermission(String request, TableName tableName, byte[] family, byte[] qualifier, Permission.Action... permissions) throws IOException
tableName
- Table requestedfamily
- Column family requestedqualifier
- Column qualifier requestedIOException
- if obtaining the current user failsAccessDeniedException
- if user has no authorizationprivate void requireTablePermission(String request, TableName tableName, byte[] family, byte[] qualifier, Permission.Action... permissions) throws IOException
tableName
- Table requestedfamily
- Column family paramqualifier
- Column qualifier paramIOException
- if obtaining the current user failsAccessDeniedException
- if user has no authorizationprivate void requireAccess(String request, TableName tableName, Permission.Action... permissions) throws IOException
tableName
- Table requestedpermissions
- Actions being requestedIOException
- if obtaining the current user failsAccessDeniedException
- if user has no authorizationprivate void requirePermission(String request, Permission.Action perm) throws IOException
perm
- The action being requestedIOException
- if obtaining the current user failsAccessDeniedException
- if authorization is deniedprivate void requireGlobalPermission(String request, Permission.Action perm, TableName tableName, Map<byte[],? extends Collection<byte[]>> familyMap) throws IOException
perm
- Action being requestedtableName
- Affected table name.familyMap
- Affected column families.IOException
private void requireGlobalPermission(String request, Permission.Action perm, String namespace) throws IOException
perm
- Action being requestednamespace
- IOException
public void requireNamespacePermission(String request, String namespace, Permission.Action... permissions) throws IOException
namespace
- permissions
- Actions being requestedIOException
public void requireNamespacePermission(String request, String namespace, TableName tableName, Map<byte[],? extends Collection<byte[]>> familyMap, Permission.Action... permissions) throws IOException
namespace
- permissions
- Actions being requestedIOException
private boolean hasFamilyQualifierPermission(User user, Permission.Action perm, RegionCoprocessorEnvironment env, Map<byte[],? extends Collection<byte[]>> familyMap) throws IOException
true
if the current user is allowed the given action
over at least one of the column qualifiers in the given column families.IOException
private boolean checkCoveringPermission(AccessController.OpType request, RegionCoprocessorEnvironment e, byte[] row, Map<byte[],? extends Collection<?>> familyMap, long opTs, Permission.Action... actions) throws IOException
IOException
private static void addCellPermissions(byte[] perms, Map<byte[],List<Cell>> familyMap)
private void checkForReservedTagPresence(User user, Mutation m) throws IOException
IOException
public void start(CoprocessorEnvironment env) throws IOException
start
in interface Coprocessor
start
in class BaseMasterAndRegionObserver
IOException
public void stop(CoprocessorEnvironment env)
stop
in interface Coprocessor
stop
in class BaseMasterAndRegionObserver
public void preCreateTable(ObserverContext<MasterCoprocessorEnvironment> c, HTableDescriptor desc, HRegionInfo[] regions) throws IOException
MasterObserver
HMaster
. Called as part of create
table RPC call.
It can't bypass the default action, e.g., ctx.bypass() won't have effect.preCreateTable
in interface MasterObserver
preCreateTable
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and masterdesc
- the HTableDescriptor for the tableregions
- the initial regions created for the tableIOException
public void postCreateTableHandler(ObserverContext<MasterCoprocessorEnvironment> c, HTableDescriptor desc, HRegionInfo[] regions) throws IOException
MasterObserver
postCreateTableHandler
in interface MasterObserver
postCreateTableHandler
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and masterdesc
- the HTableDescriptor for the tableregions
- the initial regions created for the tableIOException
public void preDeleteTable(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName) throws IOException
MasterObserver
HMaster
deletes a
table. Called as part of delete table RPC call.
It can't bypass the default action, e.g., ctx.bypass() won't have effect.preDeleteTable
in interface MasterObserver
preDeleteTable
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tableIOException
public void postDeleteTable(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName) throws IOException
MasterObserver
postDeleteTable
in interface MasterObserver
postDeleteTable
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tableIOException
public void preTruncateTable(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName) throws IOException
MasterObserver
HMaster
truncates a
table. Called as part of truncate table RPC call.
It can't bypass the default action, e.g., ctx.bypass() won't have effect.preTruncateTable
in interface MasterObserver
preTruncateTable
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tableIOException
public void postTruncateTable(ObserverContext<MasterCoprocessorEnvironment> ctx, TableName tableName) throws IOException
MasterObserver
postTruncateTable
in interface MasterObserver
postTruncateTable
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastertableName
- the name of the tableIOException
public void preModifyTable(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName, HTableDescriptor htd) throws IOException
MasterObserver
preModifyTable
in interface MasterObserver
preModifyTable
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tablehtd
- the HTableDescriptorIOException
public void postModifyTable(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName, HTableDescriptor htd) throws IOException
MasterObserver
postModifyTable
in interface MasterObserver
postModifyTable
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tablehtd
- the HTableDescriptorIOException
public void preAddColumn(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName, HColumnDescriptor column) throws IOException
MasterObserver
preAddColumn
in interface MasterObserver
preAddColumn
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tablecolumn
- the HColumnDescriptorIOException
public void preModifyColumn(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName, HColumnDescriptor descriptor) throws IOException
MasterObserver
preModifyColumn
in interface MasterObserver
preModifyColumn
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tabledescriptor
- the HColumnDescriptorIOException
public void preDeleteColumn(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName, byte[] col) throws IOException
MasterObserver
preDeleteColumn
in interface MasterObserver
preDeleteColumn
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tablecol
- the columnIOException
public void postDeleteColumn(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName, byte[] col) throws IOException
MasterObserver
postDeleteColumn
in interface MasterObserver
postDeleteColumn
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tablecol
- the columnIOException
public void preEnableTable(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName) throws IOException
MasterObserver
preEnableTable
in interface MasterObserver
preEnableTable
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tableIOException
public void preDisableTable(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName) throws IOException
MasterObserver
preDisableTable
in interface MasterObserver
preDisableTable
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and mastertableName
- the name of the tableIOException
public void preAbortProcedure(ObserverContext<MasterCoprocessorEnvironment> ctx, ProcedureExecutor<MasterProcedureEnv> procEnv, long procId) throws IOException
MasterObserver
preAbortProcedure
in interface MasterObserver
preAbortProcedure
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masterIOException
public void postAbortProcedure(ObserverContext<MasterCoprocessorEnvironment> ctx) throws IOException
MasterObserver
postAbortProcedure
in interface MasterObserver
postAbortProcedure
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masterIOException
public void preListProcedures(ObserverContext<MasterCoprocessorEnvironment> ctx) throws IOException
MasterObserver
preListProcedures
in interface MasterObserver
preListProcedures
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masterIOException
public void postListProcedures(ObserverContext<MasterCoprocessorEnvironment> ctx, List<ProcedureInfo> procInfoList) throws IOException
MasterObserver
postListProcedures
in interface MasterObserver
postListProcedures
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masterprocInfoList
- the list of procedures about to be returnedIOException
public void preMove(ObserverContext<MasterCoprocessorEnvironment> c, HRegionInfo region, ServerName srcServer, ServerName destServer) throws IOException
MasterObserver
preMove
in interface MasterObserver
preMove
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and masterregion
- the HRegionInfosrcServer
- the source ServerNamedestServer
- the destination ServerNameIOException
public void preAssign(ObserverContext<MasterCoprocessorEnvironment> c, HRegionInfo regionInfo) throws IOException
MasterObserver
preAssign
in interface MasterObserver
preAssign
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and masterregionInfo
- the regionInfo of the regionIOException
public void preUnassign(ObserverContext<MasterCoprocessorEnvironment> c, HRegionInfo regionInfo, boolean force) throws IOException
MasterObserver
preUnassign
in interface MasterObserver
preUnassign
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and masterforce
- whether to force unassignment or notIOException
public void preRegionOffline(ObserverContext<MasterCoprocessorEnvironment> c, HRegionInfo regionInfo) throws IOException
MasterObserver
ctx.bypass()
will not have any
impact on this hook.preRegionOffline
in interface MasterObserver
preRegionOffline
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and masterIOException
public void preBalance(ObserverContext<MasterCoprocessorEnvironment> c) throws IOException
MasterObserver
preBalance
in interface MasterObserver
preBalance
in class BaseMasterAndRegionObserver
c
- the environment to interact with the framework and masterIOException
public boolean preBalanceSwitch(ObserverContext<MasterCoprocessorEnvironment> c, boolean newValue) throws IOException
MasterObserver
preBalanceSwitch
in interface MasterObserver
preBalanceSwitch
in class BaseMasterAndRegionObserver
c
- the coprocessor instance's environmentnewValue
- the new flag value submitted in the callIOException
public void preShutdown(ObserverContext<MasterCoprocessorEnvironment> c) throws IOException
MasterObserver
HMaster
process.preShutdown
in interface MasterObserver
preShutdown
in class BaseMasterAndRegionObserver
IOException
public void preStopMaster(ObserverContext<MasterCoprocessorEnvironment> c) throws IOException
MasterObserver
HMaster
process.preStopMaster
in interface MasterObserver
preStopMaster
in class BaseMasterAndRegionObserver
IOException
public void postStartMaster(ObserverContext<MasterCoprocessorEnvironment> ctx) throws IOException
MasterObserver
postStartMaster
in interface MasterObserver
postStartMaster
in class BaseMasterAndRegionObserver
IOException
public void preSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot, HTableDescriptor hTableDescriptor) throws IOException
MasterObserver
preSnapshot
in interface MasterObserver
preSnapshot
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastersnapshot
- the SnapshotDescriptor for the snapshothTableDescriptor
- the hTableDescriptor of the table to snapshotIOException
public void preListSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot) throws IOException
MasterObserver
preListSnapshot
in interface MasterObserver
preListSnapshot
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastersnapshot
- the SnapshotDescriptor of the snapshot to listIOException
public void preCloneSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot, HTableDescriptor hTableDescriptor) throws IOException
MasterObserver
preCloneSnapshot
in interface MasterObserver
preCloneSnapshot
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastersnapshot
- the SnapshotDescriptor for the snapshothTableDescriptor
- the hTableDescriptor of the table to createIOException
public void preRestoreSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot, HTableDescriptor hTableDescriptor) throws IOException
MasterObserver
preRestoreSnapshot
in interface MasterObserver
preRestoreSnapshot
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastersnapshot
- the SnapshotDescriptor for the snapshothTableDescriptor
- the hTableDescriptor of the table to restoreIOException
public void preDeleteSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription snapshot) throws IOException
MasterObserver
preDeleteSnapshot
in interface MasterObserver
preDeleteSnapshot
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastersnapshot
- the SnapshotDescriptor of the snapshot to deleteIOException
public void preCreateNamespace(ObserverContext<MasterCoprocessorEnvironment> ctx, NamespaceDescriptor ns) throws IOException
MasterObserver
HMaster
.
It can't bypass the default action, e.g., ctx.bypass() won't have effect.preCreateNamespace
in interface MasterObserver
preCreateNamespace
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masterns
- the NamespaceDescriptor for the tableIOException
public void preDeleteNamespace(ObserverContext<MasterCoprocessorEnvironment> ctx, String namespace) throws IOException
MasterObserver
HMaster
deletes a
namespace
It can't bypass the default action, e.g., ctx.bypass() won't have effect.preDeleteNamespace
in interface MasterObserver
preDeleteNamespace
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masternamespace
- the name of the namespaceIOException
public void postDeleteNamespace(ObserverContext<MasterCoprocessorEnvironment> ctx, String namespace) throws IOException
MasterObserver
postDeleteNamespace
in interface MasterObserver
postDeleteNamespace
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masternamespace
- the name of the namespaceIOException
public void preModifyNamespace(ObserverContext<MasterCoprocessorEnvironment> ctx, NamespaceDescriptor ns) throws IOException
MasterObserver
preModifyNamespace
in interface MasterObserver
preModifyNamespace
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masterns
- the NamespaceDescriptorIOException
public void preGetNamespaceDescriptor(ObserverContext<MasterCoprocessorEnvironment> ctx, String namespace) throws IOException
MasterObserver
preGetNamespaceDescriptor
in interface MasterObserver
preGetNamespaceDescriptor
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masternamespace
- the name of the namespaceIOException
public void postListNamespaceDescriptors(ObserverContext<MasterCoprocessorEnvironment> ctx, List<NamespaceDescriptor> descriptors) throws IOException
MasterObserver
postListNamespaceDescriptors
in interface MasterObserver
postListNamespaceDescriptors
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masterdescriptors
- the list of descriptors about to be returnedIOException
public void preTableFlush(ObserverContext<MasterCoprocessorEnvironment> ctx, TableName tableName) throws IOException
MasterObserver
preTableFlush
in interface MasterObserver
preTableFlush
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastertableName
- the name of the tableIOException
public void preOpen(ObserverContext<RegionCoprocessorEnvironment> e) throws IOException
RegionObserver
preOpen
in interface RegionObserver
preOpen
in class BaseRegionObserver
e
- the environment provided by the region serverIOException
- if an error occurred on the coprocessorpublic void postOpen(ObserverContext<RegionCoprocessorEnvironment> c)
RegionObserver
postOpen
in interface RegionObserver
postOpen
in class BaseRegionObserver
c
- the environment provided by the region serverpublic void postLogReplay(ObserverContext<RegionCoprocessorEnvironment> c)
RegionObserver
postLogReplay
in interface RegionObserver
postLogReplay
in class BaseRegionObserver
c
- the environment provided by the region serverpublic void preFlush(ObserverContext<RegionCoprocessorEnvironment> e) throws IOException
RegionObserver
preFlush
in interface RegionObserver
preFlush
in class BaseRegionObserver
e
- the environment provided by the region serverIOException
- if an error occurred on the coprocessorpublic void preSplit(ObserverContext<RegionCoprocessorEnvironment> e) throws IOException
RegionObserver
preSplit
in interface RegionObserver
preSplit
in class BaseRegionObserver
e
- the environment provided by the region server
(e.getRegion() returns the parent region)IOException
- if an error occurred on the coprocessorpublic void preSplit(ObserverContext<RegionCoprocessorEnvironment> e, byte[] splitRow) throws IOException
RegionObserver
preSplit
in interface RegionObserver
preSplit
in class BaseRegionObserver
e
- the environment provided by the region server
(e.getRegion() returns the parent region)IOException
- if an error occurred on the coprocessorpublic InternalScanner preCompact(ObserverContext<RegionCoprocessorEnvironment> e, Store store, InternalScanner scanner, ScanType scanType) throws IOException
RegionObserver
StoreFile
s selected for compaction into a new
StoreFile
. To override or modify the compaction process, implementing classes have two
options:
InternalScanner
with a custom implementation that is returned
from this method. The custom scanner can then inspect
KeyValue
s from the wrapped
scanner, applying its own policy to what gets written.ObserverContext.bypass()
and provide a
custom implementation for writing of new StoreFile
s. Note: any implementations
bypassing core compaction using this approach must write out new store files themselves or the
existing data will no longer be available after compaction.preCompact
in interface RegionObserver
preCompact
in class BaseRegionObserver
e
- the environment provided by the region serverstore
- the store being compactedscanner
- the scanner over existing data used in the store file rewritingscanType
- type of Scannull
unless the
implementation is writing new store files on its own.IOException
- if an error occurred on the coprocessorpublic void preGetClosestRowBefore(ObserverContext<RegionCoprocessorEnvironment> c, byte[] row, byte[] family, Result result) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preGetClosestRowBefore
in interface RegionObserver
preGetClosestRowBefore
in class BaseRegionObserver
c
- the environment provided by the region serverrow
- the rowfamily
- the familyresult
- The result to return to the client if default processing
is bypassed. Can be modified. Will not be used if default processing
is not bypassed.IOException
- if an error occurred on the coprocessorprivate void internalPreRead(ObserverContext<RegionCoprocessorEnvironment> c, Query query, AccessController.OpType opType) throws IOException
IOException
public void preGetOp(ObserverContext<RegionCoprocessorEnvironment> c, Get get, List<Cell> result) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preGetOp
in interface RegionObserver
preGetOp
in class BaseRegionObserver
c
- the environment provided by the region serverget
- the Get requestresult
- The result to return to the client if default processing
is bypassed. Can be modified. Will not be used if default processing
is not bypassed.IOException
- if an error occurred on the coprocessorpublic boolean preExists(ObserverContext<RegionCoprocessorEnvironment> c, Get get, boolean exists) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preExists
in interface RegionObserver
preExists
in class BaseRegionObserver
c
- the environment provided by the region serverget
- the Get requestIOException
- if an error occurred on the coprocessorpublic void prePut(ObserverContext<RegionCoprocessorEnvironment> c, Put put, WALEdit edit, Durability durability) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
prePut
in interface RegionObserver
prePut
in class BaseRegionObserver
c
- the environment provided by the region serverput
- The Put objectedit
- The WALEdit object that will be written to the waldurability
- Persistence guarantee for this PutIOException
- if an error occurred on the coprocessorpublic void postPut(ObserverContext<RegionCoprocessorEnvironment> c, Put put, WALEdit edit, Durability durability)
RegionObserver
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
postPut
in interface RegionObserver
postPut
in class BaseRegionObserver
c
- the environment provided by the region serverput
- The Put objectedit
- The WALEdit object for the waldurability
- Persistence guarantee for this Putpublic void preDelete(ObserverContext<RegionCoprocessorEnvironment> c, Delete delete, WALEdit edit, Durability durability) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preDelete
in interface RegionObserver
preDelete
in class BaseRegionObserver
c
- the environment provided by the region serverdelete
- The Delete objectedit
- The WALEdit object for the waldurability
- Persistence guarantee for this DeleteIOException
- if an error occurred on the coprocessorpublic void preBatchMutate(ObserverContext<RegionCoprocessorEnvironment> c, MiniBatchOperationInProgress<Mutation> miniBatchOp) throws IOException
RegionObserver
MiniBatchOperationInProgress.setOperationStatus(int, OperationStatus)
),
RegionObserver
can make Region to skip these Mutations.preBatchMutate
in interface RegionObserver
preBatchMutate
in class BaseRegionObserver
c
- the environment provided by the region serverminiBatchOp
- batch of Mutations getting applied to region.IOException
- if an error occurred on the coprocessorpublic void postDelete(ObserverContext<RegionCoprocessorEnvironment> c, Delete delete, WALEdit edit, Durability durability) throws IOException
RegionObserver
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
postDelete
in interface RegionObserver
postDelete
in class BaseRegionObserver
c
- the environment provided by the region serverdelete
- The Delete objectedit
- The WALEdit object for the waldurability
- Persistence guarantee for this DeleteIOException
- if an error occurred on the coprocessorpublic boolean preCheckAndPut(ObserverContext<RegionCoprocessorEnvironment> c, byte[] row, byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, ByteArrayComparable comparator, Put put, boolean result) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preCheckAndPut
in interface RegionObserver
preCheckAndPut
in class BaseRegionObserver
c
- the environment provided by the region serverrow
- row to checkfamily
- column familyqualifier
- column qualifiercompareOp
- the comparison operationcomparator
- the comparatorput
- data to put if check succeedsIOException
- if an error occurred on the coprocessorpublic boolean preCheckAndPutAfterRowLock(ObserverContext<RegionCoprocessorEnvironment> c, byte[] row, byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, ByteArrayComparable comparator, Put put, boolean result) throws IOException
RegionObserver
Note: Caution to be taken for not doing any long time operation in this hook. Row will be locked for longer time. Trying to acquire lock on another row, within this, can lead to potential deadlock.
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preCheckAndPutAfterRowLock
in interface RegionObserver
preCheckAndPutAfterRowLock
in class BaseRegionObserver
c
- the environment provided by the region serverrow
- row to checkfamily
- column familyqualifier
- column qualifiercompareOp
- the comparison operationcomparator
- the comparatorput
- data to put if check succeedsIOException
- if an error occurred on the coprocessorpublic boolean preCheckAndDelete(ObserverContext<RegionCoprocessorEnvironment> c, byte[] row, byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, ByteArrayComparable comparator, Delete delete, boolean result) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preCheckAndDelete
in interface RegionObserver
preCheckAndDelete
in class BaseRegionObserver
c
- the environment provided by the region serverrow
- row to checkfamily
- column familyqualifier
- column qualifiercompareOp
- the comparison operationcomparator
- the comparatordelete
- delete to commit if check succeedsIOException
- if an error occurred on the coprocessorpublic boolean preCheckAndDeleteAfterRowLock(ObserverContext<RegionCoprocessorEnvironment> c, byte[] row, byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, ByteArrayComparable comparator, Delete delete, boolean result) throws IOException
RegionObserver
Note: Caution to be taken for not doing any long time operation in this hook. Row will be locked for longer time. Trying to acquire lock on another row, within this, can lead to potential deadlock.
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preCheckAndDeleteAfterRowLock
in interface RegionObserver
preCheckAndDeleteAfterRowLock
in class BaseRegionObserver
c
- the environment provided by the region serverrow
- row to checkfamily
- column familyqualifier
- column qualifiercompareOp
- the comparison operationcomparator
- the comparatordelete
- delete to commit if check succeedsIOException
- if an error occurred on the coprocessorpublic long preIncrementColumnValue(ObserverContext<RegionCoprocessorEnvironment> c, byte[] row, byte[] family, byte[] qualifier, long amount, boolean writeToWAL) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preIncrementColumnValue
in interface RegionObserver
preIncrementColumnValue
in class BaseRegionObserver
c
- the environment provided by the region serverrow
- row to checkfamily
- column familyqualifier
- column qualifieramount
- long amount to incrementwriteToWAL
- true if the change should be written to the WALIOException
- if an error occurred on the coprocessorpublic Result preAppend(ObserverContext<RegionCoprocessorEnvironment> c, Append append) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preAppend
in interface RegionObserver
preAppend
in class BaseRegionObserver
c
- the environment provided by the region serverappend
- Append objectIOException
- if an error occurred on the coprocessorpublic Result preAppendAfterRowLock(ObserverContext<RegionCoprocessorEnvironment> c, Append append) throws IOException
RegionObserver
Note: Caution to be taken for not doing any long time operation in this hook. Row will be locked for longer time. Trying to acquire lock on another row, within this, can lead to potential deadlock.
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preAppendAfterRowLock
in interface RegionObserver
preAppendAfterRowLock
in class BaseRegionObserver
c
- the environment provided by the region serverappend
- Append objectIOException
- if an error occurred on the coprocessorpublic Result preIncrement(ObserverContext<RegionCoprocessorEnvironment> c, Increment increment) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preIncrement
in interface RegionObserver
preIncrement
in class BaseRegionObserver
c
- the environment provided by the region serverincrement
- increment objectIOException
- if an error occurred on the coprocessorpublic Result preIncrementAfterRowLock(ObserverContext<RegionCoprocessorEnvironment> c, Increment increment) throws IOException
RegionObserver
Note: Caution to be taken for not doing any long time operation in this hook. Row will be locked for longer time. Trying to acquire lock on another row, within this, can lead to potential deadlock.
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preIncrementAfterRowLock
in interface RegionObserver
preIncrementAfterRowLock
in class BaseRegionObserver
c
- the environment provided by the region serverincrement
- increment objectIOException
- if an error occurred on the coprocessorpublic Cell postMutationBeforeWAL(ObserverContext<RegionCoprocessorEnvironment> ctx, RegionObserver.MutationType opType, Mutation mutation, Cell oldCell, Cell newCell) throws IOException
RegionObserver
ObserverContext.bypass()
has no
effect in this hook.postMutationBeforeWAL
in interface RegionObserver
postMutationBeforeWAL
in class BaseRegionObserver
ctx
- the environment provided by the region serveropType
- the operation typemutation
- the current mutationoldCell
- old cell containing previous valuenewCell
- the new cell containing the computed valueIOException
public RegionScanner preScannerOpen(ObserverContext<RegionCoprocessorEnvironment> c, Scan scan, RegionScanner s) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preScannerOpen
in interface RegionObserver
preScannerOpen
in class BaseRegionObserver
c
- the environment provided by the region serverscan
- the Scan specifications
- if not null, the base scannerIOException
- if an error occurred on the coprocessorpublic RegionScanner postScannerOpen(ObserverContext<RegionCoprocessorEnvironment> c, Scan scan, RegionScanner s) throws IOException
RegionObserver
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
postScannerOpen
in interface RegionObserver
postScannerOpen
in class BaseRegionObserver
c
- the environment provided by the region serverscan
- the Scan specifications
- if not null, the base scannerIOException
- if an error occurred on the coprocessorpublic boolean preScannerNext(ObserverContext<RegionCoprocessorEnvironment> c, InternalScanner s, List<Result> result, int limit, boolean hasNext) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preScannerNext
in interface RegionObserver
preScannerNext
in class BaseRegionObserver
c
- the environment provided by the region servers
- the scannerresult
- The result to return to the client if default processing
is bypassed. Can be modified. Will not be returned if default processing
is not bypassed.limit
- the maximum number of results to returnhasNext
- the 'has more' indicationIOException
- if an error occurred on the coprocessorpublic void preScannerClose(ObserverContext<RegionCoprocessorEnvironment> c, InternalScanner s) throws IOException
RegionObserver
Call CoprocessorEnvironment#bypass to skip default actions
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
preScannerClose
in interface RegionObserver
preScannerClose
in class BaseRegionObserver
c
- the environment provided by the region servers
- the scannerIOException
- if an error occurred on the coprocessorpublic void postScannerClose(ObserverContext<RegionCoprocessorEnvironment> c, InternalScanner s) throws IOException
RegionObserver
Call CoprocessorEnvironment#complete to skip any subsequent chained coprocessors
postScannerClose
in interface RegionObserver
postScannerClose
in class BaseRegionObserver
c
- the environment provided by the region servers
- the scannerIOException
- if an error occurred on the coprocessorprivate void requireScannerOwner(InternalScanner s) throws AccessDeniedException
AccessDeniedException
public void preBulkLoadHFile(ObserverContext<RegionCoprocessorEnvironment> ctx, List<Pair<byte[],String>> familyPaths) throws IOException
preBulkLoadHFile
in interface RegionObserver
preBulkLoadHFile
in class BaseRegionObserver
familyPaths
- pairs of { CF, HFile path } submitted for bulk load. Adding
or removing from this list will add or remove HFiles to be bulk loaded.IOException
public void prePrepareBulkLoad(ObserverContext<RegionCoprocessorEnvironment> ctx, org.apache.hadoop.hbase.protobuf.generated.SecureBulkLoadProtos.PrepareBulkLoadRequest request) throws IOException
prePrepareBulkLoad
in interface BulkLoadObserver
ctx
- the contextrequest
- the requestIOException
public void preCleanupBulkLoad(ObserverContext<RegionCoprocessorEnvironment> ctx, org.apache.hadoop.hbase.protobuf.generated.SecureBulkLoadProtos.CleanupBulkLoadRequest request) throws IOException
preCleanupBulkLoad
in interface BulkLoadObserver
ctx
- the contextrequest
- the requestIOException
public com.google.protobuf.Message preEndpointInvocation(ObserverContext<RegionCoprocessorEnvironment> ctx, com.google.protobuf.Service service, String methodName, com.google.protobuf.Message request) throws IOException
EndpointObserver
ObserverContext.bypass()
has no
effect in this hook.preEndpointInvocation
in interface EndpointObserver
ctx
- the environment provided by the region serverservice
- the endpoint servicemethodName
- the invoked service methodrequest
- the request messageIOException
public void postEndpointInvocation(ObserverContext<RegionCoprocessorEnvironment> ctx, com.google.protobuf.Service service, String methodName, com.google.protobuf.Message request, com.google.protobuf.Message.Builder responseBuilder) throws IOException
EndpointObserver
postEndpointInvocation
in interface EndpointObserver
ctx
- the environment provided by the region serverservice
- the endpoint servicemethodName
- the invoked service methodrequest
- the request messageresponseBuilder
- the response message builderIOException
public void grant(com.google.protobuf.RpcController controller, org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.GrantRequest request, com.google.protobuf.RpcCallback<org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.GrantResponse> done)
org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface
rpc Grant(.GrantRequest) returns (.GrantResponse);
grant
in interface org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface
public void revoke(com.google.protobuf.RpcController controller, org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.RevokeRequest request, com.google.protobuf.RpcCallback<org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.RevokeResponse> done)
org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface
rpc Revoke(.RevokeRequest) returns (.RevokeResponse);
revoke
in interface org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface
public void getUserPermissions(com.google.protobuf.RpcController controller, org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.GetUserPermissionsRequest request, com.google.protobuf.RpcCallback<org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.GetUserPermissionsResponse> done)
org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface
rpc GetUserPermissions(.GetUserPermissionsRequest) returns (.GetUserPermissionsResponse);
getUserPermissions
in interface org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface
public void checkPermissions(com.google.protobuf.RpcController controller, org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.CheckPermissionsRequest request, com.google.protobuf.RpcCallback<org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.CheckPermissionsResponse> done)
org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface
rpc CheckPermissions(.CheckPermissionsRequest) returns (.CheckPermissionsResponse);
checkPermissions
in interface org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface
public com.google.protobuf.Service getService()
getService
in interface CoprocessorService
private Region getRegion(RegionCoprocessorEnvironment e)
private TableName getTableName(RegionCoprocessorEnvironment e)
public void preClose(ObserverContext<RegionCoprocessorEnvironment> e, boolean abortRequested) throws IOException
RegionObserver
preClose
in interface RegionObserver
preClose
in class BaseRegionObserver
e
- the environment provided by the region serverabortRequested
- true if the region server is abortingIOException
private void checkSystemOrSuperUser() throws IOException
IOException
public void preStopRegionServer(ObserverContext<RegionServerCoprocessorEnvironment> env) throws IOException
RegionServerObserver
preStopRegionServer
in interface RegionServerObserver
env
- An instance of RegionServerCoprocessorEnvironmentIOException
- Signals that an I/O exception has occurred.private Map<byte[],? extends Collection<byte[]>> makeFamilyMap(byte[] family, byte[] qualifier)
public void preGetTableDescriptors(ObserverContext<MasterCoprocessorEnvironment> ctx, List<TableName> tableNamesList, List<HTableDescriptor> descriptors, String regex) throws IOException
MasterObserver
preGetTableDescriptors
in interface MasterObserver
preGetTableDescriptors
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastertableNamesList
- the list of table names, or null if querying for alldescriptors
- an empty list, can be filled with what to return if bypassingregex
- regular expression used for filtering the table namesIOException
public void postGetTableDescriptors(ObserverContext<MasterCoprocessorEnvironment> ctx, List<TableName> tableNamesList, List<HTableDescriptor> descriptors, String regex) throws IOException
MasterObserver
postGetTableDescriptors
in interface MasterObserver
postGetTableDescriptors
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastertableNamesList
- the list of table names, or null if querying for alldescriptors
- the list of descriptors about to be returnedregex
- regular expression used for filtering the table namesIOException
public void postGetTableNames(ObserverContext<MasterCoprocessorEnvironment> ctx, List<HTableDescriptor> descriptors, String regex) throws IOException
MasterObserver
postGetTableNames
in interface MasterObserver
postGetTableNames
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masterdescriptors
- the list of descriptors about to be returnedregex
- regular expression used for filtering the table namesIOException
public void preMerge(ObserverContext<RegionServerCoprocessorEnvironment> ctx, Region regionA, Region regionB) throws IOException
RegionServerObserver
ObserverContext.bypass()
to skip the merge.preMerge
in interface RegionServerObserver
IOException
- if an error occurred on the coprocessorpublic void postMerge(ObserverContext<RegionServerCoprocessorEnvironment> c, Region regionA, Region regionB, Region mergedRegion) throws IOException
RegionServerObserver
postMerge
in interface RegionServerObserver
IOException
public void preMergeCommit(ObserverContext<RegionServerCoprocessorEnvironment> ctx, Region regionA, Region regionB, List<Mutation> metaEntries) throws IOException
RegionServerObserver
ObserverContext.bypass()
rollback the mergepreMergeCommit
in interface RegionServerObserver
metaEntries
- mutations to execute on hbase:meta atomically with regions merge updates.
Any puts or deletes to execute on hbase:meta can be added to the mutations.IOException
public void postMergeCommit(ObserverContext<RegionServerCoprocessorEnvironment> ctx, Region regionA, Region regionB, Region mergedRegion) throws IOException
RegionServerObserver
postMergeCommit
in interface RegionServerObserver
IOException
public void preRollBackMerge(ObserverContext<RegionServerCoprocessorEnvironment> ctx, Region regionA, Region regionB) throws IOException
RegionServerObserver
preRollBackMerge
in interface RegionServerObserver
IOException
public void postRollBackMerge(ObserverContext<RegionServerCoprocessorEnvironment> ctx, Region regionA, Region regionB) throws IOException
RegionServerObserver
postRollBackMerge
in interface RegionServerObserver
IOException
public void preRollWALWriterRequest(ObserverContext<RegionServerCoprocessorEnvironment> ctx) throws IOException
RegionServerObserver
preRollWALWriterRequest
in interface RegionServerObserver
ctx
- An instance of ObserverContextIOException
- Signals that an I/O exception has occurred.public void postRollWALWriterRequest(ObserverContext<RegionServerCoprocessorEnvironment> ctx) throws IOException
RegionServerObserver
postRollWALWriterRequest
in interface RegionServerObserver
ctx
- An instance of ObserverContextIOException
- Signals that an I/O exception has occurred.public ReplicationEndpoint postCreateReplicationEndPoint(ObserverContext<RegionServerCoprocessorEnvironment> ctx, ReplicationEndpoint endpoint)
RegionServerObserver
postCreateReplicationEndPoint
in interface RegionServerObserver
endpoint
- - the base endpoint for replicationpublic void preReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx, List<org.apache.hadoop.hbase.protobuf.generated.AdminProtos.WALEntry> entries, CellScanner cells) throws IOException
RegionServerObserver
preReplicateLogEntries
in interface RegionServerObserver
ctx
- An instance of ObserverContextentries
- list of WALEntries to replicatecells
- Cells that the WALEntries refer to (if cells is non-null)IOException
- Signals that an I/O exception has occurred.public void postReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx, List<org.apache.hadoop.hbase.protobuf.generated.AdminProtos.WALEntry> entries, CellScanner cells) throws IOException
RegionServerObserver
postReplicateLogEntries
in interface RegionServerObserver
ctx
- An instance of ObserverContextentries
- list of WALEntries to replicatecells
- Cells that the WALEntries refer to (if cells is non-null)IOException
- Signals that an I/O exception has occurred.public void preSetUserQuota(ObserverContext<MasterCoprocessorEnvironment> ctx, String userName, org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas) throws IOException
MasterObserver
preSetUserQuota
in interface MasterObserver
preSetUserQuota
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masteruserName
- the name of userquotas
- the quota settingsIOException
public void preSetUserQuota(ObserverContext<MasterCoprocessorEnvironment> ctx, String userName, TableName tableName, org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas) throws IOException
MasterObserver
preSetUserQuota
in interface MasterObserver
preSetUserQuota
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masteruserName
- the name of usertableName
- the name of the tablequotas
- the quota settingsIOException
public void preSetUserQuota(ObserverContext<MasterCoprocessorEnvironment> ctx, String userName, String namespace, org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas) throws IOException
MasterObserver
preSetUserQuota
in interface MasterObserver
preSetUserQuota
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masteruserName
- the name of usernamespace
- the name of the namespacequotas
- the quota settingsIOException
public void preSetTableQuota(ObserverContext<MasterCoprocessorEnvironment> ctx, TableName tableName, org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas) throws IOException
MasterObserver
preSetTableQuota
in interface MasterObserver
preSetTableQuota
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and mastertableName
- the name of the tablequotas
- the quota settingsIOException
public void preSetNamespaceQuota(ObserverContext<MasterCoprocessorEnvironment> ctx, String namespace, org.apache.hadoop.hbase.protobuf.generated.QuotaProtos.Quotas quotas) throws IOException
MasterObserver
preSetNamespaceQuota
in interface MasterObserver
preSetNamespaceQuota
in class BaseMasterAndRegionObserver
ctx
- the environment to interact with the framework and masternamespace
- the name of the namespacequotas
- the quota settingsIOException
Copyright © 2007–2019 The Apache Software Foundation. All rights reserved.