blob: 3d265dd806c2a78d314ba45f7e72734e82585b2d [file] [log] [blame]
/**
* 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.
*/
syntax = "proto2";
// All to do with the Master. Includes schema management since these
// changes are run by the Master process.
package hbase.pb;
option java_package = "org.apache.hadoop.hbase.shaded.protobuf.generated";
option java_outer_classname = "MasterProtos";
option java_generic_services = true;
option java_generate_equals_and_hash = true;
option optimize_for = SPEED;
import "HBase.proto";
import "client/Client.proto";
import "server/Quota.proto";
import "server/Snapshot.proto";
import "server/Procedure.proto";
import "server/ClusterStatus.proto";
import "server/ErrorHandling.proto";
import "server/master/LockService.proto";
import "server/master/Replication.proto";
import "server/rsgroup/RSGroupAdmin.proto";
import "server/coprocessor/AccessControl.proto";
import "server/master/RecentLogs.proto";
/* Column-level protobufs */
message AddColumnRequest {
required TableName table_name = 1;
required ColumnFamilySchema column_families = 2;
optional uint64 nonce_group = 3 [default = 0];
optional uint64 nonce = 4 [default = 0];
}
message AddColumnResponse {
optional uint64 proc_id = 1;
}
message DeleteColumnRequest {
required TableName table_name = 1;
required bytes column_name = 2;
optional uint64 nonce_group = 3 [default = 0];
optional uint64 nonce = 4 [default = 0];
}
message DeleteColumnResponse {
optional uint64 proc_id = 1;
}
message ModifyColumnRequest {
required TableName table_name = 1;
required ColumnFamilySchema column_families = 2;
optional uint64 nonce_group = 3 [default = 0];
optional uint64 nonce = 4 [default = 0];
}
message ModifyColumnResponse {
optional uint64 proc_id = 1;
}
/* Region-level Protos */
message MoveRegionRequest {
required RegionSpecifier region = 1;
optional ServerName dest_server_name = 2;
}
message MoveRegionResponse {
}
/**
* Merging the specified regions in a table.
*/
message MergeTableRegionsRequest {
repeated RegionSpecifier region = 1;
optional bool forcible = 3 [default = false];
optional uint64 nonce_group = 4 [default = 0];
optional uint64 nonce = 5 [default = 0];
}
message MergeTableRegionsResponse {
optional uint64 proc_id = 1;
}
message AssignRegionRequest {
required RegionSpecifier region = 1;
optional bool override = 2 [default = false];
}
message AssignRegionResponse {
}
message UnassignRegionRequest {
required RegionSpecifier region = 1;
// This parameter is ignored
optional bool force = 2 [default = false];
}
message UnassignRegionResponse {
}
message OfflineRegionRequest {
required RegionSpecifier region = 1;
}
message OfflineRegionResponse {
}
/* Table-level protobufs */
message SplitTableRegionRequest {
required RegionInfo region_info = 1;
optional bytes split_row = 2;
optional uint64 nonce_group = 3 [default = 0];
optional uint64 nonce = 4 [default = 0];
}
message SplitTableRegionResponse {
optional uint64 proc_id = 1;
}
message CreateTableRequest {
required TableSchema table_schema = 1;
repeated bytes split_keys = 2;
optional uint64 nonce_group = 3 [default = 0];
optional uint64 nonce = 4 [default = 0];
}
message CreateTableResponse {
optional uint64 proc_id = 1;
}
message DeleteTableRequest {
required TableName table_name = 1;
optional uint64 nonce_group = 2 [default = 0];
optional uint64 nonce = 3 [default = 0];
}
message DeleteTableResponse {
optional uint64 proc_id = 1;
}
message TruncateTableRequest {
required TableName tableName = 1;
optional bool preserveSplits = 2 [default = false];
optional uint64 nonce_group = 3 [default = 0];
optional uint64 nonce = 4 [default = 0];
}
message TruncateTableResponse {
optional uint64 proc_id = 1;
}
message EnableTableRequest {
required TableName table_name = 1;
optional uint64 nonce_group = 2 [default = 0];
optional uint64 nonce = 3 [default = 0];
}
message EnableTableResponse {
optional uint64 proc_id = 1;
}
message DisableTableRequest {
required TableName table_name = 1;
optional uint64 nonce_group = 2 [default = 0];
optional uint64 nonce = 3 [default = 0];
}
message DisableTableResponse {
optional uint64 proc_id = 1;
}
message ModifyTableRequest {
required TableName table_name = 1;
required TableSchema table_schema = 2;
optional uint64 nonce_group = 3 [default = 0];
optional uint64 nonce = 4 [default = 0];
}
message ModifyTableResponse {
optional uint64 proc_id = 1;
}
/* Namespace-level protobufs */
message CreateNamespaceRequest {
required NamespaceDescriptor namespaceDescriptor = 1;
optional uint64 nonce_group = 2 [default = 0];
optional uint64 nonce = 3 [default = 0];
}
message CreateNamespaceResponse {
optional uint64 proc_id = 1;
}
message DeleteNamespaceRequest {
required string namespaceName = 1;
optional uint64 nonce_group = 2 [default = 0];
optional uint64 nonce = 3 [default = 0];
}
message DeleteNamespaceResponse {
optional uint64 proc_id = 1;
}
message ModifyNamespaceRequest {
required NamespaceDescriptor namespaceDescriptor = 1;
optional uint64 nonce_group = 2 [default = 0];
optional uint64 nonce = 3 [default = 0];
}
message ModifyNamespaceResponse {
optional uint64 proc_id = 1;
}
message GetNamespaceDescriptorRequest {
required string namespaceName = 1;
}
message GetNamespaceDescriptorResponse {
required NamespaceDescriptor namespaceDescriptor = 1;
}
message ListNamespacesRequest {
}
message ListNamespacesResponse {
repeated string namespaceName = 1;
}
message ListNamespaceDescriptorsRequest {
}
message ListNamespaceDescriptorsResponse {
repeated NamespaceDescriptor namespaceDescriptor = 1;
}
message ListTableDescriptorsByNamespaceRequest {
required string namespaceName = 1;
}
message ListTableDescriptorsByNamespaceResponse {
repeated TableSchema tableSchema = 1;
}
message ListTableNamesByNamespaceRequest {
required string namespaceName = 1;
}
message ListTableNamesByNamespaceResponse {
repeated TableName tableName = 1;
}
/* Cluster-level protobufs */
message ShutdownRequest {
}
message ShutdownResponse {
}
message StopMasterRequest {
}
message StopMasterResponse {
}
message IsInMaintenanceModeRequest {
}
message IsInMaintenanceModeResponse {
required bool inMaintenanceMode = 1;
}
message BalanceRequest {
optional bool force = 1;
}
message BalanceResponse {
required bool balancer_ran = 1;
}
message SetBalancerRunningRequest {
required bool on = 1;
optional bool synchronous = 2;
}
message SetBalancerRunningResponse {
optional bool prev_balance_value = 1;
}
message IsBalancerEnabledRequest {
}
message IsBalancerEnabledResponse {
required bool enabled = 1;
}
enum MasterSwitchType {
SPLIT = 0;
MERGE = 1;
}
message SetSnapshotCleanupRequest {
required bool enabled = 1;
optional bool synchronous = 2;
}
message SetSnapshotCleanupResponse {
required bool prev_snapshot_cleanup = 1;
}
message IsSnapshotCleanupEnabledRequest {
}
message IsSnapshotCleanupEnabledResponse {
required bool enabled = 1;
}
message SetSplitOrMergeEnabledRequest {
required bool enabled = 1;
optional bool synchronous = 2;
repeated MasterSwitchType switch_types = 3;
}
message SetSplitOrMergeEnabledResponse {
repeated bool prev_value = 1;
}
message IsSplitOrMergeEnabledRequest {
required MasterSwitchType switch_type = 1;
}
message IsSplitOrMergeEnabledResponse {
required bool enabled = 1;
}
message NormalizeRequest {
repeated TableName table_names = 1;
optional string regex = 2;
optional string namespace = 3;
}
message NormalizeResponse {
required bool normalizer_ran = 1;
}
message SetNormalizerRunningRequest {
required bool on = 1;
}
message SetNormalizerRunningResponse {
optional bool prev_normalizer_value = 1;
}
message IsNormalizerEnabledRequest {
}
message IsNormalizerEnabledResponse {
required bool enabled = 1;
}
message RunHbckChoreRequest {
}
message RunHbckChoreResponse {
required bool ran = 1;
}
message RunCatalogScanRequest {
}
message RunCatalogScanResponse {
// This is how many archiving tasks we started as a result of this scan.
optional int32 scan_result = 1;
}
message EnableCatalogJanitorRequest {
required bool enable = 1;
}
message EnableCatalogJanitorResponse {
optional bool prev_value = 1;
}
message IsCatalogJanitorEnabledRequest {
}
message IsCatalogJanitorEnabledResponse {
required bool value = 1;
}
message RunCleanerChoreRequest {
}
message RunCleanerChoreResponse {
required bool cleaner_chore_ran = 1;
}
message SetCleanerChoreRunningRequest {
required bool on = 1;
}
message SetCleanerChoreRunningResponse {
optional bool prev_value = 1;
}
message IsCleanerChoreEnabledRequest {
}
message IsCleanerChoreEnabledResponse {
required bool value = 1;
}
message SnapshotRequest {
required SnapshotDescription snapshot = 1;
}
message SnapshotResponse {
required int64 expected_timeout = 1;
}
message GetCompletedSnapshotsRequest {
}
message GetCompletedSnapshotsResponse {
repeated SnapshotDescription snapshots = 1;
}
message DeleteSnapshotRequest {
required SnapshotDescription snapshot = 1;
}
message DeleteSnapshotResponse {
}
message RestoreSnapshotRequest {
required SnapshotDescription snapshot = 1;
optional uint64 nonce_group = 2 [default = 0];
optional uint64 nonce = 3 [default = 0];
optional bool restoreACL = 4 [default = false];
}
message RestoreSnapshotResponse {
required uint64 proc_id = 1;
}
/* if you don't send the snapshot, then you will get it back
* in the response (if the snapshot is done) so you can check the snapshot
*/
message IsSnapshotDoneRequest {
optional SnapshotDescription snapshot = 1;
}
message IsSnapshotDoneResponse {
optional bool done = 1 [default = false];
optional SnapshotDescription snapshot = 2;
}
message IsRestoreSnapshotDoneRequest {
optional SnapshotDescription snapshot = 1;
}
message IsRestoreSnapshotDoneResponse {
optional bool done = 1 [default = false];
}
message GetSchemaAlterStatusRequest {
required TableName table_name = 1;
}
message GetSchemaAlterStatusResponse {
optional uint32 yet_to_update_regions = 1;
optional uint32 total_regions = 2;
}
message GetTableDescriptorsRequest {
repeated TableName table_names = 1;
optional string regex = 2;
optional bool include_sys_tables = 3 [default=false];
optional string namespace = 4;
}
message GetTableDescriptorsResponse {
repeated TableSchema table_schema = 1;
}
message GetTableNamesRequest {
optional string regex = 1;
optional bool include_sys_tables = 2 [default=false];
optional string namespace = 3;
}
message GetTableNamesResponse {
repeated TableName table_names = 1;
}
message GetTableStateRequest {
required TableName table_name = 1;
}
message GetTableStateResponse {
required TableState table_state = 1;
}
message GetClusterStatusRequest {
repeated Option options = 1;
}
message GetClusterStatusResponse {
required ClusterStatus cluster_status = 1;
}
message IsMasterRunningRequest {
}
message IsMasterRunningResponse {
required bool is_master_running = 1;
}
message ExecProcedureRequest {
required ProcedureDescription procedure = 1;
}
message ExecProcedureResponse {
optional int64 expected_timeout = 1;
optional bytes return_data = 2;
}
message IsProcedureDoneRequest {
optional ProcedureDescription procedure = 1;
}
message IsProcedureDoneResponse {
optional bool done = 1 [default = false];
optional ProcedureDescription snapshot = 2;
}
message GetProcedureResultRequest {
required uint64 proc_id = 1;
}
message GetProcedureResultResponse {
enum State {
NOT_FOUND = 0;
RUNNING = 1;
FINISHED = 2;
}
required State state = 1;
optional uint64 submitted_time = 2;
optional uint64 last_update = 3;
optional bytes result = 4;
optional ForeignExceptionMessage exception = 5;
}
message AbortProcedureRequest {
required uint64 proc_id = 1;
optional bool mayInterruptIfRunning = 2 [default = true];
}
message AbortProcedureResponse {
required bool is_procedure_aborted = 1;
}
message GetProceduresRequest {
}
message GetProceduresResponse {
repeated Procedure procedure = 1;
}
message GetLocksRequest {
}
message GetLocksResponse {
repeated LockedResource lock = 1;
}
message SetQuotaRequest {
optional string user_name = 1;
optional string user_group = 2;
optional string namespace = 3;
optional TableName table_name = 4;
optional bool remove_all = 5;
optional bool bypass_globals = 6;
optional ThrottleRequest throttle = 7;
optional SpaceLimitRequest space_limit = 8;
optional string region_server = 9;
}
message SetQuotaResponse {
}
message MajorCompactionTimestampRequest {
required TableName table_name = 1;
}
message MajorCompactionTimestampForRegionRequest {
required RegionSpecifier region = 1;
}
message MajorCompactionTimestampResponse {
required int64 compaction_timestamp = 1;
}
message SecurityCapabilitiesRequest {
}
message SecurityCapabilitiesResponse {
enum Capability {
SIMPLE_AUTHENTICATION = 0;
SECURE_AUTHENTICATION = 1;
AUTHORIZATION = 2;
CELL_AUTHORIZATION = 3;
CELL_VISIBILITY = 4;
}
repeated Capability capabilities = 1;
}
message ListDecommissionedRegionServersRequest {
}
message ListDecommissionedRegionServersResponse {
repeated ServerName server_name = 1;
}
message DecommissionRegionServersRequest {
repeated ServerName server_name = 1;
required bool offload = 2;
}
message DecommissionRegionServersResponse {
}
message RecommissionRegionServerRequest {
required ServerName server_name = 1;
repeated RegionSpecifier region = 2;
}
message RecommissionRegionServerResponse {
}
message ClearDeadServersRequest {
repeated ServerName server_name = 1;
}
message ClearDeadServersResponse {
repeated ServerName server_name = 1;
}
message SwitchRpcThrottleRequest {
required bool rpc_throttle_enabled = 1;
}
message SwitchRpcThrottleResponse {
required bool previous_rpc_throttle_enabled = 1;
}
message IsRpcThrottleEnabledRequest {
}
message IsRpcThrottleEnabledResponse {
required bool rpc_throttle_enabled = 1;
}
message SwitchExceedThrottleQuotaRequest {
required bool exceed_throttle_quota_enabled = 1;
}
message SwitchExceedThrottleQuotaResponse {
required bool previous_exceed_throttle_quota_enabled = 1;
}
/**
* BalancerDecision (LogRequest) use-case specific RPC request. This request payload will be
* converted in bytes and sent to generic RPC API: GetLogEntries
* LogRequest message has two params:
* 1. log_class_name: BalancerDecisionsRequest (for BalancerDecision use-case)
* 2. log_message: BalancerDecisionsRequest converted in bytes (for BalancerDecision use-case)
*/
message BalancerDecisionsRequest {
optional uint32 limit = 1;
}
/**
* Same as BalancerDecision but used for BalancerRejection
*/
message BalancerRejectionsRequest {
optional uint32 limit = 1;
}
/**
* BalancerDecision (LogEntry) use-case specific RPC response. This response payload will be
* converted in bytes by servers and sent as response to generic RPC API: GetLogEntries
* LogEntry message has two params:
* 1. log_class_name: BalancerDecisionsResponse (for BalancerDecision use-case)
* 2. log_message: BalancerDecisionsResponse converted in bytes (for BalancerDecision use-case)
*/
message BalancerDecisionsResponse {
repeated BalancerDecision balancer_decision = 1;
}
message BalancerRejectionsResponse {
repeated BalancerRejection balancer_rejection = 1;
}
service MasterService {
/** Used by the client to get the number of regions that have received the updated schema */
rpc GetSchemaAlterStatus(GetSchemaAlterStatusRequest)
returns(GetSchemaAlterStatusResponse);
/** Get list of TableDescriptors for requested tables. */
rpc GetTableDescriptors(GetTableDescriptorsRequest)
returns(GetTableDescriptorsResponse);
/** Get the list of table names. */
rpc GetTableNames(GetTableNamesRequest)
returns(GetTableNamesResponse);
/** Return cluster status. */
rpc GetClusterStatus(GetClusterStatusRequest)
returns(GetClusterStatusResponse);
/** return true if master is available */
rpc IsMasterRunning(IsMasterRunningRequest) returns(IsMasterRunningResponse);
/** Adds a column to the specified table. */
rpc AddColumn(AddColumnRequest)
returns(AddColumnResponse);
/** Deletes a column from the specified table. Table must be disabled. */
rpc DeleteColumn(DeleteColumnRequest)
returns(DeleteColumnResponse);
/** Modifies an existing column on the specified table. */
rpc ModifyColumn(ModifyColumnRequest)
returns(ModifyColumnResponse);
/** Move the region region to the destination server. */
rpc MoveRegion(MoveRegionRequest)
returns(MoveRegionResponse);
/** Master merge the regions */
rpc MergeTableRegions(MergeTableRegionsRequest)
returns(MergeTableRegionsResponse);
/** Assign a region to a server chosen at random. */
rpc AssignRegion(AssignRegionRequest)
returns(AssignRegionResponse);
/**
* Unassign a region from current hosting regionserver. Region will then be
* assigned to a regionserver chosen at random. Region could be reassigned
* back to the same server. Use MoveRegion if you want
* to control the region movement.
*/
rpc UnassignRegion(UnassignRegionRequest)
returns(UnassignRegionResponse);
/**
* Offline a region from the assignment manager's in-memory state. The
* region should be in a closed state and there will be no attempt to
* automatically reassign the region as in unassign. This is a special
* method, and should only be used by experts or hbck.
*/
rpc OfflineRegion(OfflineRegionRequest)
returns(OfflineRegionResponse);
/**
* Split region
*/
rpc SplitRegion(SplitTableRegionRequest)
returns(SplitTableRegionResponse);
/** Deletes a table */
rpc DeleteTable(DeleteTableRequest)
returns(DeleteTableResponse);
/** Truncate a table */
rpc truncateTable(TruncateTableRequest)
returns(TruncateTableResponse);
/** Puts the table on-line (only needed if table has been previously taken offline) */
rpc EnableTable(EnableTableRequest)
returns(EnableTableResponse);
/** Take table offline */
rpc DisableTable(DisableTableRequest)
returns(DisableTableResponse);
/** Modify a table's metadata */
rpc ModifyTable(ModifyTableRequest)
returns(ModifyTableResponse);
/** Creates a new table asynchronously */
rpc CreateTable(CreateTableRequest)
returns(CreateTableResponse);
/** Shutdown an HBase cluster. */
rpc Shutdown(ShutdownRequest)
returns(ShutdownResponse);
/** Stop HBase Master only. Does not shutdown the cluster. */
rpc StopMaster(StopMasterRequest)
returns(StopMasterResponse);
/**
* Query whether the Master is in maintenance mode.
*/
rpc IsMasterInMaintenanceMode(IsInMaintenanceModeRequest)
returns(IsInMaintenanceModeResponse);
/**
* Run the balancer. Will run the balancer and if regions to move, it will
* go ahead and do the reassignments. Can NOT run for various reasons.
* Check logs.
*/
rpc Balance(BalanceRequest)
returns(BalanceResponse);
/**
* Turn the load balancer on or off.
* If synchronous is true, it waits until current balance() call, if outstanding, to return.
*/
rpc SetBalancerRunning(SetBalancerRunningRequest)
returns(SetBalancerRunningResponse);
/**
* Query whether the Region Balancer is running.
*/
rpc IsBalancerEnabled(IsBalancerEnabledRequest)
returns(IsBalancerEnabledResponse);
/**
* Turn the split or merge switch on or off.
* If synchronous is true, it waits until current operation call, if outstanding, to return.
*/
rpc SetSplitOrMergeEnabled(SetSplitOrMergeEnabledRequest)
returns(SetSplitOrMergeEnabledResponse);
/**
* Query whether the split or merge switch is on/off.
*/
rpc IsSplitOrMergeEnabled(IsSplitOrMergeEnabledRequest)
returns(IsSplitOrMergeEnabledResponse);
/**
* Run region normalizer. Can NOT run for various reasons. Check logs.
*/
rpc Normalize(NormalizeRequest)
returns(NormalizeResponse);
/**
* Turn region normalizer on or off.
*/
rpc SetNormalizerRunning(SetNormalizerRunningRequest)
returns(SetNormalizerRunningResponse);
/**
* Query whether region normalizer is enabled.
*/
rpc IsNormalizerEnabled(IsNormalizerEnabledRequest)
returns(IsNormalizerEnabledResponse);
/** Get a run of the catalog janitor */
rpc RunCatalogScan(RunCatalogScanRequest)
returns(RunCatalogScanResponse);
/**
* Enable the catalog janitor on or off.
*/
rpc EnableCatalogJanitor(EnableCatalogJanitorRequest)
returns(EnableCatalogJanitorResponse);
/**
* Query whether the catalog janitor is enabled.
*/
rpc IsCatalogJanitorEnabled(IsCatalogJanitorEnabledRequest)
returns(IsCatalogJanitorEnabledResponse);
/** Get a run of the CleanerChore */
rpc RunCleanerChore(RunCleanerChoreRequest)
returns(RunCleanerChoreResponse);
/**
* Enable the CleanerChore on or off.
*/
rpc SetCleanerChoreRunning(SetCleanerChoreRunningRequest)
returns(SetCleanerChoreRunningResponse);
/**
* Query whether the CleanerChore is enabled.
*/
rpc IsCleanerChoreEnabled(IsCleanerChoreEnabledRequest)
returns(IsCleanerChoreEnabledResponse);
/**
* Call a master coprocessor endpoint
*/
rpc ExecMasterService(CoprocessorServiceRequest)
returns(CoprocessorServiceResponse);
/**
* Create a snapshot for the given table.
*/
rpc Snapshot(SnapshotRequest) returns(SnapshotResponse);
/**
* Get completed snapshots.
* Returns a list of snapshot descriptors for completed snapshots
*/
rpc GetCompletedSnapshots(GetCompletedSnapshotsRequest) returns(GetCompletedSnapshotsResponse);
/**
* Delete an existing snapshot. This method can also be used to clean up an aborted snapshot.
*/
rpc DeleteSnapshot(DeleteSnapshotRequest) returns(DeleteSnapshotResponse);
/**
* Determine if the snapshot is done yet.
*/
rpc IsSnapshotDone(IsSnapshotDoneRequest) returns(IsSnapshotDoneResponse);
/**
* Restore a snapshot
*/
rpc RestoreSnapshot(RestoreSnapshotRequest) returns(RestoreSnapshotResponse);
/**
* Turn on/off snapshot auto-cleanup based on TTL expiration
*/
rpc SwitchSnapshotCleanup (SetSnapshotCleanupRequest)
returns (SetSnapshotCleanupResponse);
/**
* Determine if snapshot auto-cleanup based on TTL expiration is turned on
*/
rpc IsSnapshotCleanupEnabled (IsSnapshotCleanupEnabledRequest)
returns (IsSnapshotCleanupEnabledResponse);
/**
* Execute a distributed procedure.
*/
rpc ExecProcedure(ExecProcedureRequest) returns(ExecProcedureResponse);
/**
* Execute a distributed procedure with return data.
*/
rpc ExecProcedureWithRet(ExecProcedureRequest) returns(ExecProcedureResponse);
/**
* Determine if the procedure is done yet.
*/
rpc IsProcedureDone(IsProcedureDoneRequest) returns(IsProcedureDoneResponse);
/** return true if master is available */
/** rpc IsMasterRunning(IsMasterRunningRequest) returns(IsMasterRunningResponse); */
/** Modify a namespace's metadata */
rpc ModifyNamespace(ModifyNamespaceRequest)
returns(ModifyNamespaceResponse);
/** Creates a new namespace synchronously */
rpc CreateNamespace(CreateNamespaceRequest)
returns(CreateNamespaceResponse);
/** Deletes namespace synchronously */
rpc DeleteNamespace(DeleteNamespaceRequest)
returns(DeleteNamespaceResponse);
/** Get a namespace descriptor by name */
rpc GetNamespaceDescriptor(GetNamespaceDescriptorRequest)
returns(GetNamespaceDescriptorResponse);
/** returns a list of namespace descriptors */
rpc ListNamespaceDescriptors(ListNamespaceDescriptorsRequest)
returns(ListNamespaceDescriptorsResponse);
/** returns a list of tables for a given namespace*/
rpc ListTableDescriptorsByNamespace(ListTableDescriptorsByNamespaceRequest)
returns(ListTableDescriptorsByNamespaceResponse);
/** returns a list of tables for a given namespace*/
rpc ListTableNamesByNamespace(ListTableNamesByNamespaceRequest)
returns(ListTableNamesByNamespaceResponse);
/** returns table state */
rpc GetTableState(GetTableStateRequest)
returns(GetTableStateResponse);
/** Apply the new quota settings */
rpc SetQuota(SetQuotaRequest) returns(SetQuotaResponse);
/** Returns the timestamp of the last major compaction */
rpc getLastMajorCompactionTimestamp(MajorCompactionTimestampRequest)
returns(MajorCompactionTimestampResponse);
/** Returns the timestamp of the last major compaction */
rpc getLastMajorCompactionTimestampForRegion(MajorCompactionTimestampForRegionRequest)
returns(MajorCompactionTimestampResponse);
rpc getProcedureResult(GetProcedureResultRequest)
returns(GetProcedureResultResponse);
/** Returns the security capabilities in effect on the cluster */
rpc getSecurityCapabilities(SecurityCapabilitiesRequest)
returns(SecurityCapabilitiesResponse);
/** Abort a procedure */
rpc AbortProcedure(AbortProcedureRequest)
returns(AbortProcedureResponse);
/** returns a list of procedures */
rpc GetProcedures(GetProceduresRequest)
returns(GetProceduresResponse);
rpc GetLocks(GetLocksRequest)
returns(GetLocksResponse);
/** Add a replication peer */
rpc AddReplicationPeer(AddReplicationPeerRequest)
returns(AddReplicationPeerResponse);
/** Remove a replication peer */
rpc RemoveReplicationPeer(RemoveReplicationPeerRequest)
returns(RemoveReplicationPeerResponse);
/** Enable a replication peer */
rpc EnableReplicationPeer(EnableReplicationPeerRequest)
returns(EnableReplicationPeerResponse);
/** Disable a replication peer */
rpc DisableReplicationPeer(DisableReplicationPeerRequest)
returns(DisableReplicationPeerResponse);
/** Return peer config for a replication peer */
rpc GetReplicationPeerConfig(GetReplicationPeerConfigRequest)
returns(GetReplicationPeerConfigResponse);
/** Update peer config for a replication peer */
rpc UpdateReplicationPeerConfig(UpdateReplicationPeerConfigRequest)
returns(UpdateReplicationPeerConfigResponse);
/** Returns a list of replication peers */
rpc ListReplicationPeers(ListReplicationPeersRequest)
returns(ListReplicationPeersResponse);
/** Transit the state of current cluster in a synchronous replication peer */
rpc TransitReplicationPeerSyncReplicationState(TransitReplicationPeerSyncReplicationStateRequest)
returns(TransitReplicationPeerSyncReplicationStateResponse);
/** Returns a list of ServerNames marked as decommissioned. */
rpc ListDecommissionedRegionServers(ListDecommissionedRegionServersRequest)
returns(ListDecommissionedRegionServersResponse);
/** Decommission region servers. */
rpc DecommissionRegionServers(DecommissionRegionServersRequest)
returns(DecommissionRegionServersResponse);
/** Re-commission region server. */
rpc RecommissionRegionServer(RecommissionRegionServerRequest)
returns(RecommissionRegionServerResponse);
/** Fetches the Master's view of space utilization */
rpc GetSpaceQuotaRegionSizes(GetSpaceQuotaRegionSizesRequest)
returns(GetSpaceQuotaRegionSizesResponse);
/** Fetches the Master's view of quotas */
rpc GetQuotaStates(GetQuotaStatesRequest)
returns(GetQuotaStatesResponse);
/** clear dead servers from master*/
rpc ClearDeadServers(ClearDeadServersRequest)
returns(ClearDeadServersResponse);
/** Turn the quota throttle on or off */
rpc SwitchRpcThrottle (SwitchRpcThrottleRequest) returns (SwitchRpcThrottleResponse);
/** Get if is rpc throttled enabled */
rpc IsRpcThrottleEnabled (IsRpcThrottleEnabledRequest)
returns (IsRpcThrottleEnabledResponse);
/** Turn the exceed throttle quota on or off */
rpc SwitchExceedThrottleQuota (SwitchExceedThrottleQuotaRequest)
returns (SwitchExceedThrottleQuotaResponse);
rpc Grant(GrantRequest) returns (GrantResponse);
rpc Revoke(RevokeRequest) returns (RevokeResponse);
rpc GetUserPermissions (GetUserPermissionsRequest) returns (GetUserPermissionsResponse);
rpc HasUserPermissions (HasUserPermissionsRequest) returns (HasUserPermissionsResponse);
/** returns a list of namespace names */
rpc ListNamespaces(ListNamespacesRequest)
returns(ListNamespacesResponse);
rpc GetRSGroupInfo(GetRSGroupInfoRequest)
returns (GetRSGroupInfoResponse);
rpc GetRSGroupInfoOfTable(GetRSGroupInfoOfTableRequest)
returns (GetRSGroupInfoOfTableResponse);
rpc GetRSGroupInfoOfServer(GetRSGroupInfoOfServerRequest)
returns (GetRSGroupInfoOfServerResponse);
rpc MoveServers(MoveServersRequest)
returns (MoveServersResponse);
rpc AddRSGroup(AddRSGroupRequest)
returns (AddRSGroupResponse);
rpc RemoveRSGroup(RemoveRSGroupRequest)
returns (RemoveRSGroupResponse);
rpc BalanceRSGroup(BalanceRSGroupRequest)
returns (BalanceRSGroupResponse);
rpc ListRSGroupInfos(ListRSGroupInfosRequest)
returns (ListRSGroupInfosResponse);
rpc RemoveServers(RemoveServersRequest)
returns (RemoveServersResponse);
rpc ListTablesInRSGroup(ListTablesInRSGroupRequest)
returns (ListTablesInRSGroupResponse);
rpc GetConfiguredNamespacesAndTablesInRSGroup(GetConfiguredNamespacesAndTablesInRSGroupRequest)
returns (GetConfiguredNamespacesAndTablesInRSGroupResponse);
rpc RenameRSGroup(RenameRSGroupRequest)
returns (RenameRSGroupResponse);
rpc UpdateRSGroupConfig(UpdateRSGroupConfigRequest)
returns (UpdateRSGroupConfigResponse);
rpc GetLogEntries(LogRequest)
returns(LogEntry);
}
// HBCK Service definitions.
message SetTableStateInMetaRequest {
required TableName table_name = 1;
required TableState table_state = 2;
}
message RegionSpecifierAndState {
required RegionSpecifier region_specifier = 1;
required RegionState.State state = 2;
}
message SetRegionStateInMetaRequest {
repeated RegionSpecifierAndState states = 1;
}
message SetRegionStateInMetaResponse {
repeated RegionSpecifierAndState states = 1;
}
/** Like Admin's AssignRegionRequest except it can
* take one or more Regions at a time.
*/
// NOTE: In hbck.proto, there is a define for
// AssignRegionRequest -- singular 'Region'. This
// is plural to convey it can carry more than one
// Region at a time.
message AssignsRequest {
repeated RegionSpecifier region = 1;
optional bool override = 2 [default = false];
}
/** Like Admin's AssignRegionResponse except it can
* return one or more pids as result -- one per assign.
*/
message AssignsResponse {
repeated uint64 pid = 1;
}
/** Like Admin's UnassignRegionRequest except it can
* take one or more Regions at a time.
*/
message UnassignsRequest {
repeated RegionSpecifier region = 1;
optional bool override = 2 [default = false];
}
/** Like Admin's UnassignRegionResponse except it can
* return one or more pids as result -- one per unassign.
*/
message UnassignsResponse {
repeated uint64 pid = 1;
}
message BypassProcedureRequest {
repeated uint64 proc_id = 1;
optional uint64 waitTime = 2; // wait time in ms to acquire lock on a procedure
optional bool override = 3 [default = false]; // if true, procedure is marked for bypass even if its executing
optional bool recursive = 4;
}
message BypassProcedureResponse {
repeated bool bypassed = 1;
}
message ScheduleServerCrashProcedureRequest {
repeated ServerName serverName = 1;
}
message ScheduleServerCrashProcedureResponse {
repeated uint64 pid = 1;
}
message ScheduleSCPsForUnknownServersRequest {}
message ScheduleSCPsForUnknownServersResponse {
repeated uint64 pid = 1;
}
message FixMetaRequest {}
message FixMetaResponse {}
service HbckService {
/** Update state of the table in meta only*/
rpc SetTableStateInMeta(SetTableStateInMetaRequest)
returns(GetTableStateResponse);
/** Update state of the region in meta only*/
rpc SetRegionStateInMeta(SetRegionStateInMetaRequest)
returns(SetRegionStateInMetaResponse);
/**
* Assign regions.
* Like Admin's assign but works even if the
* Master is initializing. Also allows bulk'ing up
* assigns rather than one region at a time.
*/
rpc Assigns(AssignsRequest)
returns(AssignsResponse);
/**
* Unassign regions
* Like Admin's unssign but works even if the
* Master is initializing. Also allows bulk'ing up
* assigns rather than one region at a time.
*/
rpc Unassigns(UnassignsRequest)
returns(UnassignsResponse);
/** Bypass a procedure to completion, procedure is completed but no actual work is done*/
rpc BypassProcedure(BypassProcedureRequest)
returns(BypassProcedureResponse);
/** Schedule a ServerCrashProcedure to help recover a crash server */
rpc ScheduleServerCrashProcedure(ScheduleServerCrashProcedureRequest)
returns(ScheduleServerCrashProcedureResponse);
/** Schedule a ServerCrashProcedure for unknown servers */
rpc ScheduleSCPsForUnknownServers(ScheduleSCPsForUnknownServersRequest)
returns(ScheduleSCPsForUnknownServersResponse);
/**
* Request HBCK chore to run at master side.
*/
rpc RunHbckChore(RunHbckChoreRequest)
returns(RunHbckChoreResponse);
/** Schedule a fix meta run. */
rpc FixMeta(FixMetaRequest)
returns(FixMetaResponse);
}
/** Request and response to get the clusterID for this cluster */
message GetClusterIdRequest {
}
message GetClusterIdResponse {
/** Not set if cluster ID could not be determined. */
optional string cluster_id = 1;
}
/** Request and response to get the currently active master name for this cluster */
message GetActiveMasterRequest {
}
message GetActiveMasterResponse {
/** Not set if an active master could not be determined. */
optional ServerName server_name = 1;
}
/** Request and response to get the current list of all registers master servers */
message GetMastersRequest {
}
message GetMastersResponseEntry {
required ServerName server_name = 1;
required bool is_active = 2;
}
message GetMastersResponse {
repeated GetMastersResponseEntry master_servers = 1;
}
/** Request and response to get the current list of meta region locations */
message GetMetaRegionLocationsRequest {
}
message GetMetaRegionLocationsResponse {
/** Not set if meta region locations could not be determined. */
repeated RegionLocation meta_locations = 1;
}
/**
* Implements all the RPCs needed by clients to look up cluster meta information needed for
* connection establishment.
*/
service ClientMetaService {
/**
* Get Cluster ID for this cluster.
*/
rpc GetClusterId(GetClusterIdRequest) returns(GetClusterIdResponse);
/**
* Get active master server name for this cluster. Retained for out of sync client and master
* rolling upgrades. Newer clients switched to GetMasters RPC request.
*/
rpc GetActiveMaster(GetActiveMasterRequest) returns(GetActiveMasterResponse);
/**
* Get registered list of master servers in this cluster.
*/
rpc GetMasters(GetMastersRequest) returns(GetMastersResponse);
/**
* Get current meta replicas' region locations.
*/
rpc GetMetaRegionLocations(GetMetaRegionLocationsRequest) returns(GetMetaRegionLocationsResponse);
}