feat: admin gc (#308)

* 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>
This commit is contained in:
discord9
2026-03-06 15:07:34 +08:00
committed by GitHub
parent 4010e25ea0
commit 092ba1d01e
8 changed files with 9653 additions and 123 deletions
+47
View File
@@ -92,6 +92,47 @@ message ReconcileResponse {
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);
@@ -107,4 +148,10 @@ service ProcedureService {
// 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);
}