092ba1d01e
* feat: add gc admin rpc * chore: make all Signed-off-by: discord9 <discord9@163.com> * per review Signed-off-by: discord9 <discord9@163.com> * chore: per review Signed-off-by: discord9 <discord9@163.com> --------- Signed-off-by: discord9 <discord9@163.com>
158 lines
3.7 KiB
Protocol Buffer
158 lines
3.7 KiB
Protocol Buffer
// 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 = "proto3";
|
|
|
|
package greptime.v1.meta;
|
|
|
|
import "greptime/v1/meta/common.proto";
|
|
import "greptime/v1/meta/ddl.proto";
|
|
import "greptime/v1/meta/region.proto";
|
|
|
|
option go_package = "github.com/GreptimeTeam/greptime-proto/go/greptime/v1/meta";
|
|
|
|
enum ProcedureStatus {
|
|
Running = 0;
|
|
Done = 1;
|
|
Retrying = 2;
|
|
Failed = 3;
|
|
PrepareRollback = 4;
|
|
RollingBack = 5;
|
|
Poisoned = 6;
|
|
}
|
|
|
|
message ProcedureMeta {
|
|
ProcedureId id = 1;
|
|
string type_name = 2;
|
|
ProcedureStatus status = 3;
|
|
int64 start_time_ms = 4;
|
|
int64 end_time_ms = 5;
|
|
repeated string lock_keys = 6;
|
|
string error = 7;
|
|
}
|
|
|
|
message QueryProcedureRequest {
|
|
RequestHeader header = 1;
|
|
ProcedureId pid = 2;
|
|
}
|
|
|
|
message ProcedureStateResponse {
|
|
ResponseHeader header = 1;
|
|
ProcedureStatus status = 2;
|
|
string error = 3;
|
|
}
|
|
|
|
message ProcedureDetailRequest {
|
|
RequestHeader header = 1;
|
|
}
|
|
|
|
message ProcedureDetailResponse {
|
|
ResponseHeader header = 1;
|
|
repeated ProcedureMeta procedures = 2;
|
|
}
|
|
|
|
enum ResolveStrategy {
|
|
UseLatest = 0;
|
|
UseMetasrv = 1;
|
|
AbortOnConflict = 2;
|
|
}
|
|
|
|
message ReconcileTable {
|
|
string catalog_name = 1;
|
|
string schema_name = 2;
|
|
string table_name = 3;
|
|
ResolveStrategy resolve_strategy = 4;
|
|
}
|
|
|
|
message ReconcileDatabase {
|
|
string catalog_name = 1;
|
|
string database_name = 2;
|
|
uint32 parallelism = 3;
|
|
ResolveStrategy resolve_strategy = 4;
|
|
}
|
|
|
|
message ReconcileCatalog {
|
|
string catalog_name = 1;
|
|
uint32 parallelism = 2;
|
|
ResolveStrategy resolve_strategy = 3;
|
|
}
|
|
|
|
message ReconcileRequest {
|
|
RequestHeader header = 1;
|
|
oneof target {
|
|
ReconcileTable reconcile_table = 2;
|
|
ReconcileDatabase reconcile_database = 3;
|
|
ReconcileCatalog reconcile_catalog = 4;
|
|
}
|
|
}
|
|
|
|
message ReconcileResponse {
|
|
ResponseHeader header = 1;
|
|
ProcedureId pid = 2;
|
|
}
|
|
|
|
message GcRegionsRequest {
|
|
RequestHeader header = 1;
|
|
repeated uint64 region_ids = 2;
|
|
// Whether to perform a full file listing on datanodes when GC'ing the regions.
|
|
bool full_file_listing = 3;
|
|
// Timeout in seconds for the entire GC procedure.
|
|
uint32 timeout_secs = 4;
|
|
}
|
|
|
|
message GcStats {
|
|
// Number of regions requested for GC (accepted by the server side).
|
|
uint64 processed_regions = 1;
|
|
// Regions that need retry in the next GC round.
|
|
repeated uint64 need_retry_regions = 2;
|
|
// Number of deleted SST files.
|
|
uint64 deleted_files = 3;
|
|
// Number of deleted index files.
|
|
uint64 deleted_indexes = 4;
|
|
}
|
|
|
|
message GcRegionsResponse {
|
|
ResponseHeader header = 1;
|
|
GcStats stats = 2;
|
|
}
|
|
|
|
message GcTableRequest {
|
|
RequestHeader header = 1;
|
|
string catalog_name = 2;
|
|
string schema_name = 3;
|
|
string table_name = 4;
|
|
// Whether to perform a full file listing on datanodes when GC'ing the regions.
|
|
bool full_file_listing = 5;
|
|
// Timeout in seconds for the entire GC procedure.
|
|
uint32 timeout_secs = 6;
|
|
}
|
|
|
|
message GcTableResponse {
|
|
ResponseHeader header = 1;
|
|
GcStats stats = 2;
|
|
}
|
|
|
|
service ProcedureService {
|
|
// Query a submitted procedure state
|
|
rpc query(QueryProcedureRequest) returns (ProcedureStateResponse);
|
|
|
|
// Submits a DDL task
|
|
rpc ddl(DdlTaskRequest) returns (DdlTaskResponse);
|
|
|
|
// Submits a reconcile task
|
|
rpc reconcile(ReconcileRequest) returns (ReconcileResponse);
|
|
|
|
// Submits a region migration task
|
|
rpc migrate(MigrateRegionRequest) returns (MigrateRegionResponse);
|
|
|
|
// Query all submitted procedures details
|
|
rpc details(ProcedureDetailRequest) returns (ProcedureDetailResponse);
|
|
|
|
// Manually trigger GC for a specific list of regions
|
|
rpc gc_regions(GcRegionsRequest) returns (GcRegionsResponse);
|
|
|
|
// Manually trigger GC for a table (all its regions)
|
|
rpc gc_table(GcTableRequest) returns (GcTableResponse);
|
|
}
|