mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-06 17:18:35 +08:00
issue: https://github.com/milvus-io/milvus/issues/45691 Add persistent task management for external collections with automatic detection of external_source and external_spec changes. When source changes, the system aborts running tasks and creates new ones, ensuring only one active task per collection. Tasks validate their source on completion to prevent superseded tasks from committing results. --------- Signed-off-by: sunby <sunbingyi1992@gmail.com>
347 lines
8.7 KiB
Protocol Buffer
347 lines
8.7 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package milvus.proto.index;
|
|
|
|
option go_package = "github.com/milvus-io/milvus/pkg/v2/proto/indexpb";
|
|
|
|
import "common.proto";
|
|
import "internal.proto";
|
|
import "milvus.proto";
|
|
import "schema.proto";
|
|
|
|
service IndexCoord {
|
|
rpc CreateIndex(CreateIndexRequest) returns (common.Status){}
|
|
rpc AlterIndex(AlterIndexRequest) returns (common.Status){}
|
|
// Deprecated: use DescribeIndex instead
|
|
rpc GetIndexState(GetIndexStateRequest) returns (GetIndexStateResponse) {}
|
|
rpc GetSegmentIndexState(GetSegmentIndexStateRequest) returns (GetSegmentIndexStateResponse) {}
|
|
rpc GetIndexInfos(GetIndexInfoRequest) returns (GetIndexInfoResponse){}
|
|
rpc DropIndex(DropIndexRequest) returns (common.Status) {}
|
|
rpc DescribeIndex(DescribeIndexRequest) returns (DescribeIndexResponse) {}
|
|
rpc GetIndexStatistics(GetIndexStatisticsRequest) returns (GetIndexStatisticsResponse) {}
|
|
// Deprecated: use DescribeIndex instead
|
|
rpc GetIndexBuildProgress(GetIndexBuildProgressRequest) returns (GetIndexBuildProgressResponse) {}
|
|
|
|
rpc ShowConfigurations(internal.ShowConfigurationsRequest)
|
|
returns (internal.ShowConfigurationsResponse) {
|
|
}
|
|
// https://wiki.lfaidata.foundation/display/MIL/MEP+8+--+Add+metrics+for+proxy
|
|
rpc GetMetrics(milvus.GetMetricsRequest)
|
|
returns (milvus.GetMetricsResponse) {
|
|
}
|
|
|
|
rpc CheckHealth(milvus.CheckHealthRequest)
|
|
returns (milvus.CheckHealthResponse) {
|
|
}
|
|
}
|
|
|
|
message IndexInfo {
|
|
int64 collectionID = 1;
|
|
int64 fieldID = 2;
|
|
string index_name = 3;
|
|
int64 indexID = 4;
|
|
repeated common.KeyValuePair type_params = 5;
|
|
repeated common.KeyValuePair index_params = 6;
|
|
// index build progress
|
|
// The real-time statistics may not be expected due to the existence of the compaction mechanism.
|
|
int64 indexed_rows = 7;
|
|
int64 total_rows = 8;
|
|
// index state
|
|
common.IndexState state = 9;
|
|
string index_state_fail_reason = 10;
|
|
bool is_auto_index = 11;
|
|
repeated common.KeyValuePair user_index_params = 12;
|
|
int64 pending_index_rows = 13;
|
|
int32 min_index_version = 14;
|
|
int32 max_index_version = 15;
|
|
}
|
|
|
|
message FieldIndex {
|
|
IndexInfo index_info = 1;
|
|
bool deleted = 2;
|
|
uint64 create_time = 3;
|
|
}
|
|
|
|
message SegmentIndex {
|
|
int64 collectionID = 1;
|
|
int64 partitionID = 2;
|
|
int64 segmentID = 3;
|
|
int64 num_rows = 4;
|
|
int64 indexID = 5;
|
|
int64 buildID = 6;
|
|
int64 nodeID = 7;
|
|
int64 index_version = 8;
|
|
common.IndexState state = 9;
|
|
string fail_reason = 10;
|
|
repeated string index_file_keys = 11;
|
|
bool deleted = 12;
|
|
uint64 create_time = 13;
|
|
uint64 serialize_size = 14; // the total size of index file at oos. (may be compress)
|
|
bool write_handoff = 15;
|
|
int32 current_index_version = 16;
|
|
int64 index_store_version = 17;
|
|
uint64 finished_time = 18;
|
|
uint64 mem_size = 19; // the total size of index file at local (disk or memory) before loading by knowhere. (not compress)
|
|
int32 current_scalar_index_version = 20;
|
|
string index_type = 21;
|
|
}
|
|
|
|
message RegisterNodeRequest {
|
|
common.MsgBase base = 1;
|
|
common.Address address = 2;
|
|
int64 nodeID = 3;
|
|
}
|
|
|
|
message RegisterNodeResponse {
|
|
common.Status status = 1;
|
|
internal.InitParams init_params = 2;
|
|
}
|
|
|
|
message GetIndexStateRequest {
|
|
int64 collectionID = 1;
|
|
string index_name = 2;
|
|
}
|
|
|
|
message GetIndexStateResponse {
|
|
common.Status status = 1;
|
|
common.IndexState state = 2;
|
|
string fail_reason = 3;
|
|
}
|
|
|
|
message GetSegmentIndexStateRequest {
|
|
int64 collectionID = 1;
|
|
string index_name = 2;
|
|
repeated int64 segmentIDs = 3;
|
|
}
|
|
|
|
message SegmentIndexState {
|
|
int64 segmentID = 1;
|
|
common.IndexState state = 2;
|
|
string fail_reason = 3;
|
|
string index_name = 4;
|
|
int32 index_version = 5;
|
|
}
|
|
|
|
message GetSegmentIndexStateResponse {
|
|
common.Status status = 1;
|
|
repeated SegmentIndexState states = 2;
|
|
}
|
|
|
|
message CreateIndexRequest {
|
|
int64 collectionID = 1;
|
|
int64 fieldID = 2;
|
|
string index_name = 3;
|
|
repeated common.KeyValuePair type_params = 4;
|
|
repeated common.KeyValuePair index_params = 5;
|
|
uint64 timestamp = 6;
|
|
bool is_auto_index = 7;
|
|
repeated common.KeyValuePair user_index_params = 8;
|
|
bool user_autoindex_metric_type_specified = 9;
|
|
}
|
|
|
|
message AlterIndexRequest {
|
|
int64 collectionID = 1;
|
|
string index_name = 2;
|
|
repeated common.KeyValuePair params = 3;
|
|
repeated string delete_keys = 4;
|
|
}
|
|
|
|
message GetIndexInfoRequest {
|
|
int64 collectionID = 1;
|
|
repeated int64 segmentIDs = 2;
|
|
string index_name = 3;
|
|
}
|
|
|
|
message IndexFilePathInfo {
|
|
int64 segmentID = 1;
|
|
int64 fieldID = 2;
|
|
int64 indexID = 3;
|
|
int64 buildID = 4;
|
|
string index_name = 5;
|
|
repeated common.KeyValuePair index_params = 6;
|
|
repeated string index_file_paths = 7;
|
|
uint64 serialized_size = 8;
|
|
int64 index_version = 9;
|
|
int64 num_rows = 10;
|
|
int32 current_index_version = 11;
|
|
uint64 mem_size = 12;
|
|
}
|
|
|
|
message SegmentInfo {
|
|
int64 collectionID = 1;
|
|
int64 segmentID = 2;
|
|
bool enable_index = 3;
|
|
repeated IndexFilePathInfo index_infos = 4;
|
|
}
|
|
|
|
message GetIndexInfoResponse {
|
|
common.Status status = 1;
|
|
map<int64, SegmentInfo> segment_info = 2;
|
|
}
|
|
|
|
message DropIndexRequest {
|
|
int64 collectionID = 1;
|
|
repeated int64 partitionIDs = 2;
|
|
string index_name = 3;
|
|
bool drop_all = 4;
|
|
}
|
|
|
|
message DescribeIndexRequest {
|
|
int64 collectionID = 1;
|
|
string index_name = 2;
|
|
uint64 timestamp = 3;
|
|
}
|
|
|
|
message DescribeIndexResponse {
|
|
common.Status status = 1;
|
|
repeated IndexInfo index_infos = 2;
|
|
}
|
|
|
|
message GetIndexBuildProgressRequest {
|
|
int64 collectionID = 1;
|
|
string index_name = 2;
|
|
}
|
|
|
|
message GetIndexBuildProgressResponse {
|
|
common.Status status = 1;
|
|
int64 indexed_rows = 2;
|
|
int64 total_rows = 3;
|
|
int64 pending_index_rows = 4;
|
|
}
|
|
|
|
// Synchronously modify StorageConfig in index_cgo_msg.proto/clustering.proto file
|
|
message StorageConfig {
|
|
string address = 1;
|
|
string access_keyID = 2;
|
|
string secret_access_key = 3;
|
|
bool useSSL = 4;
|
|
string bucket_name = 5;
|
|
string root_path = 6;
|
|
bool useIAM = 7;
|
|
string IAMEndpoint = 8;
|
|
string storage_type = 9;
|
|
bool use_virtual_host = 10;
|
|
string region = 11;
|
|
string cloud_provider = 12;
|
|
int64 request_timeout_ms = 13;
|
|
string sslCACert = 14;
|
|
string GcpCredentialJSON = 15;
|
|
uint32 max_connections = 16;
|
|
}
|
|
|
|
// Synchronously modify OptionalFieldInfo in index_cgo_msg.proto file
|
|
message OptionalFieldInfo {
|
|
int64 fieldID = 1;
|
|
string field_name = 2;
|
|
int32 field_type = 3;
|
|
repeated string data_paths = 4;
|
|
repeated int64 data_ids = 5;
|
|
int32 element_type = 6;
|
|
}
|
|
|
|
message JobInfo {
|
|
int64 num_rows = 1;
|
|
int64 dim = 2;
|
|
int64 start_time = 3;
|
|
int64 end_time = 4;
|
|
repeated common.KeyValuePair index_params = 5;
|
|
int64 podID = 6;
|
|
}
|
|
|
|
message GetIndexStatisticsRequest {
|
|
int64 collectionID = 1;
|
|
string index_name = 2;
|
|
}
|
|
|
|
message GetIndexStatisticsResponse {
|
|
common.Status status = 1;
|
|
repeated IndexInfo index_infos = 2;
|
|
}
|
|
|
|
message ListIndexesRequest {
|
|
int64 collectionID = 1;
|
|
}
|
|
|
|
message ListIndexesResponse {
|
|
common.Status status = 1;
|
|
repeated IndexInfo index_infos = 2;
|
|
}
|
|
|
|
message AnalyzeTask {
|
|
int64 collectionID = 1;
|
|
int64 partitionID = 2;
|
|
int64 fieldID = 3;
|
|
string field_name = 4;
|
|
schema.DataType field_type = 5;
|
|
int64 taskID = 6;
|
|
int64 version = 7;
|
|
repeated int64 segmentIDs = 8;
|
|
int64 nodeID = 9;
|
|
JobState state = 10;
|
|
string fail_reason = 11;
|
|
int64 dim = 12;
|
|
string centroids_file = 13;
|
|
}
|
|
|
|
message SegmentStats {
|
|
int64 ID = 1;
|
|
int64 num_rows = 2;
|
|
repeated int64 logIDs = 3;
|
|
}
|
|
|
|
message FieldLogPath {
|
|
int64 fieldID = 1;
|
|
repeated string file_paths = 2;
|
|
}
|
|
|
|
enum JobType {
|
|
JobTypeNone = 0;
|
|
JobTypeIndexJob = 1;
|
|
JobTypeAnalyzeJob = 2;
|
|
JobTypeStatsJob = 3;
|
|
}
|
|
|
|
enum JobState {
|
|
JobStateNone = 0;
|
|
JobStateInit = 1;
|
|
JobStateInProgress = 2;
|
|
JobStateFinished = 3;
|
|
JobStateFailed = 4;
|
|
JobStateRetry = 5;
|
|
}
|
|
|
|
message StatsTask {
|
|
int64 collectionID = 1;
|
|
int64 partitionID = 2;
|
|
int64 segmentID = 3;
|
|
string insert_channel = 4;
|
|
int64 taskID = 5;
|
|
int64 version = 6;
|
|
int64 nodeID = 7;
|
|
JobState state = 8;
|
|
string fail_reason = 9;
|
|
int64 target_segmentID = 10;
|
|
index.StatsSubJob subJobType = 11;
|
|
bool canRecycle = 12;
|
|
}
|
|
|
|
message UpdateExternalCollectionTask {
|
|
int64 collectionID = 1;
|
|
int64 taskID = 2;
|
|
int64 version = 3;
|
|
int64 nodeID = 4;
|
|
JobState state = 5;
|
|
string fail_reason = 6;
|
|
string external_source = 7;
|
|
string external_spec = 8;
|
|
}
|
|
|
|
enum StatsSubJob {
|
|
None = 0;
|
|
// deprecated, after v2.6.0, move to compaction
|
|
Sort = 1;
|
|
TextIndexJob = 2;
|
|
BM25Job=3;
|
|
JsonKeyIndexJob = 4;
|
|
}
|