gensrc/thrift/AgentService.thrift (479 lines of code) (raw):
// 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.
namespace cpp doris
namespace java org.apache.doris.thrift
include "Status.thrift"
include "Types.thrift"
include "PaloInternalService.thrift"
include "PlanNodes.thrift"
include "Descriptors.thrift"
include "Exprs.thrift"
struct TTabletSchema {
1: required i16 short_key_column_count
2: required Types.TSchemaHash schema_hash
3: required Types.TKeysType keys_type
4: required Types.TStorageType storage_type
5: required list<Descriptors.TColumn> columns
6: optional double bloom_filter_fpp
7: optional list<Descriptors.TOlapTableIndex> indexes
8: optional bool is_in_memory
9: optional i32 delete_sign_idx = -1
10: optional i32 sequence_col_idx = -1
11: optional Types.TSortType sort_type
12: optional i32 sort_col_num
13: optional bool disable_auto_compaction
14: optional i32 version_col_idx = -1
15: optional bool is_dynamic_schema = false // deprecated
16: optional bool store_row_column = false
17: optional bool enable_single_replica_compaction = false
18: optional bool skip_write_index_on_load = false
19: optional list<i32> cluster_key_uids
// col unique id for row store column
20: optional list<i32> row_store_col_cids
21: optional i64 row_store_page_size = 16384
22: optional bool variant_enable_flatten_nested = false
23: optional i64 storage_page_size = 65536
}
// this enum stands for different storage format in src_backends
// V1 for Segment-V1
// V2 for Segment-V2
enum TStorageFormat {
DEFAULT,
V1,
V2
}
enum TTabletType {
TABLET_TYPE_DISK = 0,
TABLET_TYPE_MEMORY = 1
}
enum TObjStorageType {
UNKNOWN = 0,
AWS = 1,
AZURE = 2,
BOS = 3,
COS = 4,
OBS = 5,
OSS = 6,
GCP = 7
}
enum TCredProviderType {
// used for creating different credentials provider when creating s3client
DEFAULT = 0, // DefaultAWSCredentialsProviderChain
SIMPLE = 1, // SimpleAWSCredentialsProvider, corresponding to (ak, sk)
INSTANCE_PROFILE = 2 // InstanceProfileCredentialsProvider
}
struct TS3StorageParam {
1: optional string endpoint
2: optional string region
3: optional string ak
4: optional string sk
5: optional i32 max_conn = 50
6: optional i32 request_timeout_ms = 3000
7: optional i32 conn_timeout_ms = 1000
8: optional string root_path
9: optional string bucket
10: optional bool use_path_style = false
11: optional string token
12: optional TObjStorageType provider
13: optional TCredProviderType cred_provider_type
14: optional string role_arn // aws assumed role's arn
15: optional string external_id // aws assumed role's external_id if configure
}
struct TStoragePolicy {
1: optional i64 id
2: optional string name
3: optional i64 version // alter version
4: optional i64 cooldown_datetime
5: optional i64 cooldown_ttl
6: optional i64 resource_id
}
struct TStorageResource {
1: optional i64 id
2: optional string name
3: optional i64 version // alter version
4: optional TS3StorageParam s3_storage_param
5: optional PlanNodes.THdfsParams hdfs_storage_param
// more storage resource type
}
struct TPushStoragePolicyReq {
1: optional list<TStoragePolicy> storage_policy
2: optional list<TStorageResource> resource
3: optional list<i64> dropped_storage_policy
}
struct TCleanTrashReq {}
struct TCleanUDFCacheReq {
1: optional string function_signature //function_name(arg_type)
}
enum TCompressionType {
UNKNOWN_COMPRESSION = 0,
DEFAULT_COMPRESSION = 1,
NO_COMPRESSION = 2,
SNAPPY = 3,
LZ4 = 4,
LZ4F = 5,
ZLIB = 6,
ZSTD = 7,
LZ4HC = 8
}
// Enumerates the storage formats for inverted indexes in src_backends.
// This enum is used to distinguish between different organizational methods
// of inverted index data, affecting how the index is stored and accessed.
enum TInvertedIndexStorageFormat {
DEFAULT, // Default format, unspecified storage method.
V1, // Index per idx: Each index is stored separately based on its identifier.
V2 // Segment id per idx: Indexes are organized based on segment identifiers, grouping indexes by their associated segment.
}
struct TBinlogConfig {
1: optional bool enable;
2: optional i64 ttl_seconds;
3: optional i64 max_bytes;
4: optional i64 max_history_nums;
}
struct TCreateTabletReq {
1: required Types.TTabletId tablet_id
2: required TTabletSchema tablet_schema
3: optional Types.TVersion version
// Deprecated
4: optional Types.TVersionHash version_hash
5: optional Types.TStorageMedium storage_medium
6: optional bool in_restore_mode
// this new tablet should be colocate with base tablet
7: optional Types.TTabletId base_tablet_id
8: optional Types.TSchemaHash base_schema_hash
9: optional i64 table_id
10: optional i64 partition_id
// used to find the primary replica among tablet's replicas
// replica with the largest term is primary replica
11: optional i64 allocation_term
// indicate whether this tablet is a compute storage split mode, we call it "eco mode"
12: optional bool is_eco_mode
13: optional TStorageFormat storage_format
14: optional TTabletType tablet_type
// 15: optional TStorageParam storage_param
16: optional TCompressionType compression_type = TCompressionType.LZ4F
17: optional Types.TReplicaId replica_id = 0
// 18: optional string storage_policy
19: optional bool enable_unique_key_merge_on_write = false
20: optional i64 storage_policy_id
21: optional TBinlogConfig binlog_config
22: optional string compaction_policy = "size_based"
23: optional i64 time_series_compaction_goal_size_mbytes = 1024
24: optional i64 time_series_compaction_file_count_threshold = 2000
25: optional i64 time_series_compaction_time_threshold_seconds = 3600
26: optional i64 time_series_compaction_empty_rowsets_threshold = 5
27: optional i64 time_series_compaction_level_threshold = 1
28: optional TInvertedIndexStorageFormat inverted_index_storage_format = TInvertedIndexStorageFormat.DEFAULT // Deprecated
29: optional Types.TInvertedIndexFileStorageFormat inverted_index_file_storage_format = Types.TInvertedIndexFileStorageFormat.V2
// For cloud
1000: optional bool is_in_memory = false
1001: optional bool is_persistent = false
}
struct TDropTabletReq {
1: required Types.TTabletId tablet_id
2: optional Types.TSchemaHash schema_hash
3: optional Types.TReplicaId replica_id = 0
4: optional bool is_drop_table_or_partition = false
}
struct TAlterTabletReq {
1: required Types.TTabletId base_tablet_id
2: required Types.TSchemaHash base_schema_hash
3: required TCreateTabletReq new_tablet_req
}
enum TAlterTabletType {
SCHEMA_CHANGE = 1,
ROLLUP = 2,
MIGRATION = 3
}
struct TAlterMaterializedViewParam {
1: required string column_name
2: optional string origin_column_name
3: optional Exprs.TExpr mv_expr
}
// This v2 request will replace the old TAlterTabletReq.
// TAlterTabletReq should be deprecated after new alter job process merged.
struct TAlterTabletReqV2 {
1: required Types.TTabletId base_tablet_id
2: required Types.TTabletId new_tablet_id
3: required Types.TSchemaHash base_schema_hash
4: required Types.TSchemaHash new_schema_hash
// version of data which this alter task should transform
5: optional Types.TVersion alter_version
6: optional Types.TVersionHash alter_version_hash // Deprecated
7: optional list<TAlterMaterializedViewParam> materialized_view_params
8: optional TAlterTabletType alter_tablet_type = TAlterTabletType.SCHEMA_CHANGE
9: optional Descriptors.TDescriptorTable desc_tbl
10: optional list<Descriptors.TColumn> columns
11: optional i32 be_exec_version = 0
// For cloud
1000: optional i64 job_id
1001: optional i64 expiration
1002: optional string storage_vault_id
}
struct TAlterInvertedIndexReq {
1: required Types.TTabletId tablet_id
2: required Types.TSchemaHash schema_hash
3: optional Types.TVersion alter_version // Deprecated
4: optional TAlterTabletType alter_tablet_type = TAlterTabletType.SCHEMA_CHANGE // Deprecated
5: optional bool is_drop_op= false
6: optional list<Descriptors.TOlapTableIndex> alter_inverted_indexes
7: optional list<Descriptors.TOlapTableIndex> indexes_desc
8: optional list<Descriptors.TColumn> columns
9: optional i64 job_id
10: optional i64 expiration
}
struct TTabletGcBinlogInfo {
1: optional Types.TTabletId tablet_id
2: optional i64 version
}
struct TGcBinlogReq {
1: optional list<TTabletGcBinlogInfo> tablet_gc_binlog_infos
}
struct TStorageMigrationReqV2 {
1: optional Types.TTabletId base_tablet_id
2: optional Types.TTabletId new_tablet_id
3: optional Types.TSchemaHash base_schema_hash
4: optional Types.TSchemaHash new_schema_hash
5: optional Types.TVersion migration_version
}
struct TClusterInfo {
1: required string user
2: required string password
}
struct TPushReq {
1: required Types.TTabletId tablet_id
2: required Types.TSchemaHash schema_hash
3: required Types.TVersion version
4: required Types.TVersionHash version_hash // Deprecated
5: required i64 timeout
6: required Types.TPushType push_type
7: optional string http_file_path
8: optional i64 http_file_size
9: optional list<PaloInternalService.TCondition> delete_conditions
10: optional bool need_decompress
// for real time load
11: optional Types.TTransactionId transaction_id
12: optional Types.TPartitionId partition_id
// fe should inform be that this request is running during schema change
// be should write two files
13: optional bool is_schema_changing
// 14 and 15 are used by spark load
14: optional PlanNodes.TBrokerScanRange broker_scan_range
15: optional Descriptors.TDescriptorTable desc_tbl
16: optional list<Descriptors.TColumn> columns_desc
17: optional string storage_vault_id
18: optional i32 schema_version
}
struct TCloneReq {
1: required Types.TTabletId tablet_id
2: required Types.TSchemaHash schema_hash
3: required list<Types.TBackend> src_backends
4: optional Types.TStorageMedium storage_medium
// these are visible version(hash) actually
5: optional Types.TVersion version
6: optional Types.TVersionHash committed_version_hash // Deprecated
7: optional i32 task_version;
8: optional i64 src_path_hash;
9: optional i64 dest_path_hash;
10: optional i32 timeout_s;
11: optional Types.TReplicaId replica_id = 0
12: optional i64 partition_id
13: optional i64 table_id = -1
}
struct TCompactionReq {
1: optional Types.TTabletId tablet_id
2: optional Types.TSchemaHash schema_hash
3: optional string type
}
struct TStorageMediumMigrateReq {
1: required Types.TTabletId tablet_id
2: required Types.TSchemaHash schema_hash
3: required Types.TStorageMedium storage_medium
// if data dir is specified, the storage_medium is meaning less,
// Doris will try to migrate the tablet to the specified data dir.
4: optional string data_dir
}
struct TCancelDeleteDataReq {
// deprecated
1: required Types.TTabletId tablet_id
2: required Types.TSchemaHash schema_hash
3: required Types.TVersion version
4: required Types.TVersionHash version_hash // Deprecated
}
struct TCheckConsistencyReq {
1: required Types.TTabletId tablet_id
2: required Types.TSchemaHash schema_hash
3: required Types.TVersion version
4: required Types.TVersionHash version_hash // Deprecated
}
struct TUploadReq {
1: required i64 job_id;
2: required map<string, string> src_dest_map
3: required Types.TNetworkAddress broker_addr
4: optional map<string, string> broker_prop
5: optional Types.TStorageBackendType storage_backend = Types.TStorageBackendType.BROKER
6: optional string location // root path
}
struct TRemoteTabletSnapshot {
1: optional i64 local_tablet_id
2: optional string local_snapshot_path
3: optional i64 remote_tablet_id
4: optional i64 remote_be_id
5: optional Types.TNetworkAddress remote_be_addr
6: optional string remote_snapshot_path
7: optional string remote_token
}
struct TDownloadReq {
1: required i64 job_id
2: required map<string, string> src_dest_map
3: required Types.TNetworkAddress broker_addr
4: optional map<string, string> broker_prop
5: optional Types.TStorageBackendType storage_backend = Types.TStorageBackendType.BROKER
6: optional string location // root path
7: optional list<TRemoteTabletSnapshot> remote_tablet_snapshots
}
struct TSnapshotRequest {
1: required Types.TTabletId tablet_id
2: required Types.TSchemaHash schema_hash
3: optional Types.TVersion version
4: optional Types.TVersionHash version_hash // Deprecated
5: optional i64 timeout
6: optional list<Types.TVersion> missing_version
7: optional bool list_files
// if all nodes has been upgraded, it can be removed.
// Deprecated since version 0.13
8: optional bool allow_incremental_clone
9: optional i32 preferred_snapshot_version = Types.TPREFER_SNAPSHOT_REQ_VERSION
10: optional bool is_copy_tablet_task
11: optional Types.TVersion start_version
12: optional Types.TVersion end_version
13: optional bool is_copy_binlog
14: optional Types.TTabletId ref_tablet_id
}
struct TReleaseSnapshotRequest {
1: required string snapshot_path
}
struct TClearRemoteFileReq {
1: required string remote_file_path
2: required map<string, string> remote_source_properties
}
struct TPartitionVersionInfo {
1: required Types.TPartitionId partition_id
2: required Types.TVersion version
3: required Types.TVersionHash version_hash // Deprecated
}
struct TMoveDirReq {
1: required Types.TTabletId tablet_id
2: required Types.TSchemaHash schema_hash
3: required string src
4: required i64 job_id
5: required bool overwrite
}
enum TAgentServiceVersion {
V1
}
struct TPublishVersionRequest {
1: required Types.TTransactionId transaction_id
2: required list<TPartitionVersionInfo> partition_version_infos
// strict mode means BE will check tablet missing version
3: optional bool strict_mode = false
// for delta rows statistics to exclude rollup tablets
4: optional set<Types.TTabletId> base_tablet_ids
}
struct TVisibleVersionReq {
1: required map<Types.TPartitionId, Types.TVersion> partition_version
}
struct TCalcDeleteBitmapPartitionInfo {
1: required Types.TPartitionId partition_id
2: required Types.TVersion version
3: required list<Types.TTabletId> tablet_ids
4: optional list<i64> base_compaction_cnts
5: optional list<i64> cumulative_compaction_cnts
6: optional list<i64> cumulative_points
7: optional list<i64> sub_txn_ids
8: optional list<i64> tablet_states
}
struct TCalcDeleteBitmapRequest {
1: required Types.TTransactionId transaction_id
2: required list<TCalcDeleteBitmapPartitionInfo> partitions;
}
struct TClearAlterTaskRequest {
1: required Types.TTabletId tablet_id
2: required Types.TSchemaHash schema_hash
}
struct TClearTransactionTaskRequest {
1: required Types.TTransactionId transaction_id
2: required list<Types.TPartitionId> partition_id
}
struct TRecoverTabletReq {
1: optional Types.TTabletId tablet_id
2: optional Types.TSchemaHash schema_hash
3: optional Types.TVersion version
4: optional Types.TVersionHash version_hash // Deprecated
}
enum TTabletMetaType {
PARTITIONID,
INMEMORY,
BINLOG_CONFIG
}
struct TTabletMetaInfo {
1: optional Types.TTabletId tablet_id
2: optional Types.TSchemaHash schema_hash
3: optional Types.TPartitionId partition_id
// 4: optional TTabletMetaType Deprecated_meta_type
5: optional bool is_in_memory
// 6: optional string Deprecated_storage_policy
7: optional i64 storage_policy_id
8: optional Types.TReplicaId replica_id
9: optional TBinlogConfig binlog_config
10: optional string compaction_policy
11: optional i64 time_series_compaction_goal_size_mbytes
12: optional i64 time_series_compaction_file_count_threshold
13: optional i64 time_series_compaction_time_threshold_seconds
14: optional bool enable_single_replica_compaction
15: optional bool skip_write_index_on_load
16: optional bool disable_auto_compaction
17: optional i64 time_series_compaction_empty_rowsets_threshold
18: optional i64 time_series_compaction_level_threshold
}
struct TUpdateTabletMetaInfoReq {
1: optional list<TTabletMetaInfo> tabletMetaInfos
}
struct TPluginMetaInfo {
1: required string name
2: required i32 type
3: optional string so_name
4: optional string source
}
struct TCooldownConf {
1: required Types.TTabletId tablet_id
2: optional Types.TReplicaId cooldown_replica_id
3: optional i64 cooldown_term
}
struct TPushCooldownConfReq {
1: required list<TCooldownConf> cooldown_confs
}
struct TAgentTaskRequest {
1: required TAgentServiceVersion protocol_version
2: required Types.TTaskType task_type
3: required i64 signature // every request has unique signature
4: optional Types.TPriority priority
5: optional TCreateTabletReq create_tablet_req
6: optional TDropTabletReq drop_tablet_req
7: optional TAlterTabletReq alter_tablet_req
8: optional TCloneReq clone_req
9: optional TPushReq push_req
10: optional TCancelDeleteDataReq cancel_delete_data_req //deprecated
// Deprecated
11: optional Types.TResourceInfo resource_info
12: optional TStorageMediumMigrateReq storage_medium_migrate_req
13: optional TCheckConsistencyReq check_consistency_req
14: optional TUploadReq upload_req
15: optional TDownloadReq download_req
16: optional TSnapshotRequest snapshot_req
17: optional TReleaseSnapshotRequest release_snapshot_req
18: optional TClearRemoteFileReq clear_remote_file_req
19: optional TPublishVersionRequest publish_version_req
20: optional TClearAlterTaskRequest clear_alter_task_req
21: optional TClearTransactionTaskRequest clear_transaction_task_req
22: optional TMoveDirReq move_dir_req
23: optional TRecoverTabletReq recover_tablet_req
24: optional TAlterTabletReqV2 alter_tablet_req_v2
25: optional i64 recv_time // time the task is inserted to queue
26: optional TUpdateTabletMetaInfoReq update_tablet_meta_info_req
27: optional TCompactionReq compaction_req
28: optional TStorageMigrationReqV2 storage_migration_req_v2
// DEPRECATED 29: optional TGetStoragePolicy update_policy
30: optional TPushCooldownConfReq push_cooldown_conf
31: optional TPushStoragePolicyReq push_storage_policy_req
32: optional TAlterInvertedIndexReq alter_inverted_index_req
33: optional TGcBinlogReq gc_binlog_req
34: optional TCleanTrashReq clean_trash_req
35: optional TVisibleVersionReq visible_version_req
36: optional TCleanUDFCacheReq clean_udf_cache_req
// For cloud
1000: optional TCalcDeleteBitmapRequest calc_delete_bitmap_req
}
struct TAgentResult {
1: required Status.TStatus status
2: optional string snapshot_path
3: optional bool allow_incremental_clone
// the snapshot that be has done according
// to the preferred snapshot version that client requests
4: optional i32 snapshot_version = 1
}
struct TTopicItem {
1: required string key
2: optional i64 int_value
3: optional double double_value
4: optional string string_value
}
enum TTopicType {
RESOURCE = 0
}
struct TTopicUpdate {
1: required TTopicType type
2: optional list<TTopicItem> updates
3: optional list<string> deletes
}
struct TAgentPublishRequest {
1: required TAgentServiceVersion protocol_version
2: required list<TTopicUpdate> updates
}