Files
orion_greptime_proto/proto/greptime/v1/meta/procedure.proto
T
Weny Xu 91c3d7b97a feat: introduce reconcile interface (#264)
* feat: introduce reconcile interface

* chore: gen set_header

* chore: add comments

* feat: return procedure_id

* feat: add `ResolveStragey` and `Parallelism` to request

* chore: apply suggestions from CR
2025-08-04 16:50:33 +08:00

111 lines
2.4 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;
}
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);
}