risingwave_pb/
hummock.rs

1// This file is @generated by prost-build.
2/// Key range for a single vnode within an SST.
3/// Keys are always represented as closed intervals: \[min_key, max_key\].
4#[derive(prost_helpers::AnyPB)]
5#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6pub struct VnodeUserKeyRange {
7    #[prost(bytes = "vec", tag = "1")]
8    pub min_key: ::prost::alloc::vec::Vec<u8>,
9    #[prost(bytes = "vec", tag = "2")]
10    pub max_key: ::prost::alloc::vec::Vec<u8>,
11}
12/// Optional per-vnode statistics for SSTs with few vnodes.
13/// Enables more precise query pruning by providing vnode-level key ranges.
14#[derive(prost_helpers::AnyPB)]
15#[derive(Clone, PartialEq, ::prost::Message)]
16pub struct VnodeStatistics {
17    #[prost(map = "uint32, message", tag = "1")]
18    pub vnode_user_key_ranges: ::std::collections::HashMap<u32, VnodeUserKeyRange>,
19}
20#[derive(prost_helpers::AnyPB)]
21#[derive(Clone, PartialEq, ::prost::Message)]
22pub struct SstableInfo {
23    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockSstableObjectId")]
24    pub object_id: crate::id::HummockSstableObjectId,
25    #[prost(uint64, tag = "2", wrapper = "crate::id::HummockSstableId")]
26    pub sst_id: crate::id::HummockSstableId,
27    #[prost(message, optional, tag = "3")]
28    pub key_range: ::core::option::Option<KeyRange>,
29    /// represents the physical object size, which is usually used in the builder.
30    #[prost(uint64, tag = "4")]
31    pub file_size: u64,
32    #[prost(uint32, repeated, tag = "5", wrapper = "crate::id::TableId")]
33    pub table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
34    #[prost(uint64, tag = "6")]
35    pub meta_offset: u64,
36    #[prost(uint64, tag = "7")]
37    pub stale_key_count: u64,
38    #[prost(uint64, tag = "8")]
39    pub total_key_count: u64,
40    #[prost(uint64, tag = "9")]
41    pub min_epoch: u64,
42    #[prost(uint64, tag = "10")]
43    pub max_epoch: u64,
44    #[prost(uint64, tag = "11")]
45    pub uncompressed_file_size: u64,
46    #[prost(uint64, tag = "12")]
47    pub range_tombstone_count: u64,
48    #[prost(enumeration = "BloomFilterType", tag = "13")]
49    pub bloom_filter_kind: i32,
50    /// In order to calculate more finely in the compaction strategy, we need to re-calculate the sst_size after split sst
51    /// `sst_size` represents the size of the sst instead of the object size(usually used in the meta).
52    #[prost(uint64, tag = "14")]
53    pub sst_size: u64,
54    /// Optional per-vnode statistics for query pruning when the SST spans only a small set of vnodes.
55    /// Only emitted when SST contains multiple vnodes to avoid redundancy with key_range.
56    #[prost(message, optional, tag = "15")]
57    pub vnode_statistics: ::core::option::Option<VnodeStatistics>,
58}
59#[derive(prost_helpers::AnyPB)]
60#[derive(Clone, PartialEq, ::prost::Message)]
61pub struct OverlappingLevel {
62    #[prost(message, repeated, tag = "1")]
63    pub sub_levels: ::prost::alloc::vec::Vec<Level>,
64    #[prost(uint64, tag = "2")]
65    pub total_file_size: u64,
66    #[prost(uint64, tag = "3")]
67    pub uncompressed_file_size: u64,
68}
69#[derive(prost_helpers::AnyPB)]
70#[derive(Clone, PartialEq, ::prost::Message)]
71pub struct Level {
72    #[prost(uint32, tag = "1")]
73    pub level_idx: u32,
74    #[prost(enumeration = "LevelType", tag = "2")]
75    pub level_type: i32,
76    #[prost(message, repeated, tag = "3")]
77    pub table_infos: ::prost::alloc::vec::Vec<SstableInfo>,
78    #[prost(uint64, tag = "4")]
79    pub total_file_size: u64,
80    #[prost(uint64, tag = "5")]
81    pub sub_level_id: u64,
82    #[prost(uint64, tag = "6")]
83    pub uncompressed_file_size: u64,
84    #[prost(uint32, tag = "7")]
85    pub vnode_partition_count: u32,
86}
87#[derive(prost_helpers::AnyPB)]
88#[derive(Clone, PartialEq, ::prost::Message)]
89pub struct InputLevel {
90    #[prost(uint32, tag = "1")]
91    pub level_idx: u32,
92    #[prost(enumeration = "LevelType", tag = "2")]
93    pub level_type: i32,
94    #[prost(message, repeated, tag = "3")]
95    pub table_infos: ::prost::alloc::vec::Vec<SstableInfo>,
96}
97#[derive(prost_helpers::AnyPB)]
98#[derive(Clone, PartialEq, ::prost::Message)]
99pub struct NewL0SubLevel {
100    #[prost(message, repeated, tag = "1")]
101    pub inserted_table_infos: ::prost::alloc::vec::Vec<SstableInfo>,
102}
103#[derive(prost_helpers::AnyPB)]
104#[derive(Clone, PartialEq, ::prost::Message)]
105pub struct IntraLevelDelta {
106    #[prost(uint32, tag = "1")]
107    pub level_idx: u32,
108    #[prost(uint64, tag = "2")]
109    pub l0_sub_level_id: u64,
110    #[prost(uint64, repeated, tag = "3", wrapper = "crate::id::HummockSstableId")]
111    pub removed_table_ids: ::prost::alloc::vec::Vec<crate::id::HummockSstableId>,
112    #[prost(message, repeated, tag = "4")]
113    pub inserted_table_infos: ::prost::alloc::vec::Vec<SstableInfo>,
114    #[prost(uint32, tag = "5")]
115    pub vnode_partition_count: u32,
116    #[prost(uint64, tag = "6")]
117    pub compaction_group_version_id: u64,
118}
119#[derive(prost_helpers::AnyPB)]
120#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
121pub struct GroupConstruct {
122    #[prost(message, optional, tag = "1")]
123    pub group_config: ::core::option::Option<CompactionConfig>,
124    /// If parent_group_id is not 0, it means parent_group_id splits into parent_group_id and this group, so this group is not empty initially.
125    #[prost(uint64, tag = "2", wrapper = "crate::id::CompactionGroupId")]
126    pub parent_group_id: crate::id::CompactionGroupId,
127    #[deprecated]
128    #[prost(uint32, repeated, packed = "false", tag = "3")]
129    pub table_ids: ::prost::alloc::vec::Vec<u32>,
130    #[prost(uint64, tag = "4", wrapper = "crate::id::CompactionGroupId")]
131    pub group_id: crate::id::CompactionGroupId,
132    #[prost(uint64, tag = "5", wrapper = "crate::id::HummockSstableId")]
133    pub new_sst_start_id: crate::id::HummockSstableId,
134    #[prost(enumeration = "CompatibilityVersion", tag = "6")]
135    pub version: i32,
136    /// The split_key is the key that the group is split by.
137    /// When GroupConstruct with commit_epoch, split_key will be empty
138    /// When split_key is not None, GroupConstruct tells to use split_key to check each level and split the sstable_info in the level into two groups (bounded by split_key).
139    /// For the left sstable_info, split_key (right_exclusive=true) will be used as key_range_right.
140    /// In the current implementation split_key always contains a table_id, vnode = 0, epoch = MAX
141    #[prost(bytes = "vec", optional, tag = "7")]
142    pub split_key: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
143}
144#[derive(prost_helpers::AnyPB)]
145#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
146pub struct GroupDestroy {}
147#[derive(prost_helpers::AnyPB)]
148#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
149pub struct GroupMerge {
150    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
151    pub left_group_id: crate::id::CompactionGroupId,
152    #[prost(uint64, tag = "2", wrapper = "crate::id::CompactionGroupId")]
153    pub right_group_id: crate::id::CompactionGroupId,
154}
155/// TruncateTables is used to truncate multiple tables from sstables.
156#[derive(prost_helpers::AnyPB)]
157#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
158pub struct TruncateTables {
159    #[prost(uint32, repeated, tag = "1", wrapper = "crate::id::TableId")]
160    pub table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
161}
162#[derive(prost_helpers::AnyPB)]
163#[derive(Clone, PartialEq, ::prost::Message)]
164pub struct GroupDelta {
165    #[prost(oneof = "group_delta::DeltaType", tags = "1, 2, 3, 6, 7, 8")]
166    pub delta_type: ::core::option::Option<group_delta::DeltaType>,
167}
168/// Nested message and enum types in `GroupDelta`.
169pub mod group_delta {
170    #[derive(prost_helpers::AnyPB)]
171    #[derive(Clone, PartialEq, ::prost::Oneof)]
172    pub enum DeltaType {
173        #[prost(message, tag = "1")]
174        IntraLevel(super::IntraLevelDelta),
175        #[prost(message, tag = "2")]
176        GroupConstruct(super::GroupConstruct),
177        #[prost(message, tag = "3")]
178        GroupDestroy(super::GroupDestroy),
179        #[prost(message, tag = "6")]
180        GroupMerge(super::GroupMerge),
181        #[prost(message, tag = "7")]
182        NewL0SubLevel(super::NewL0SubLevel),
183        #[prost(message, tag = "8")]
184        TruncateTables(super::TruncateTables),
185    }
186}
187#[derive(prost_helpers::AnyPB)]
188#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
189pub struct VnodeWatermark {
190    /// The watermark shared by multiple vnodes
191    #[prost(bytes = "vec", tag = "1")]
192    pub watermark: ::prost::alloc::vec::Vec<u8>,
193    /// The set of vnodes that share the same watermark
194    #[prost(message, optional, tag = "2")]
195    pub vnode_bitmap: ::core::option::Option<super::common::Buffer>,
196}
197/// Table watermark is a lighter weight range delete introduced in
198/// <https://github.com/risingwavelabs/risingwave/issues/13148>
199/// It means the lowest (or highest when `is_ascending` is false) visible
200/// keys in the table within a vnode. Keys lower (or higher) than the
201/// table watermark is invisible and will be cleaned in later compaction.
202#[derive(prost_helpers::AnyPB)]
203#[derive(Clone, PartialEq, ::prost::Message)]
204pub struct TableWatermarks {
205    /// Table watermarks of a state table from all vnodes written in multiple epochs.
206    /// Epochs should be sorted in ascending order, which means earlier epoch at the front
207    #[prost(message, repeated, tag = "1")]
208    pub epoch_watermarks: ::prost::alloc::vec::Vec<table_watermarks::EpochNewWatermarks>,
209    /// The direction of the table watermark.
210    #[prost(bool, tag = "2")]
211    pub is_ascending: bool,
212    /// The table watermark is non-pk prefix table watermark.
213    /// Deprecated. use WatermarkSerdeType instead;
214    #[deprecated]
215    #[prost(bool, tag = "3")]
216    pub is_non_pk_prefix: bool,
217    #[prost(enumeration = "WatermarkSerdeType", tag = "4")]
218    pub raw_watermark_serde_type: i32,
219}
220/// Nested message and enum types in `TableWatermarks`.
221pub mod table_watermarks {
222    #[derive(prost_helpers::AnyPB)]
223    #[derive(Clone, PartialEq, ::prost::Message)]
224    pub struct EpochNewWatermarks {
225        #[prost(message, repeated, tag = "1")]
226        pub watermarks: ::prost::alloc::vec::Vec<super::VnodeWatermark>,
227        #[prost(uint64, tag = "2")]
228        pub epoch: u64,
229    }
230}
231#[derive(prost_helpers::AnyPB)]
232#[derive(Clone, PartialEq, ::prost::Message)]
233pub struct EpochNewChangeLog {
234    #[prost(message, repeated, tag = "1")]
235    pub old_value: ::prost::alloc::vec::Vec<SstableInfo>,
236    #[prost(message, repeated, tag = "2")]
237    pub new_value: ::prost::alloc::vec::Vec<SstableInfo>,
238    /// Epochs should be sorted in ascending order, which means earlier epoch at the front
239    #[prost(uint64, repeated, tag = "3")]
240    pub epochs: ::prost::alloc::vec::Vec<u64>,
241}
242#[derive(prost_helpers::AnyPB)]
243#[derive(Clone, PartialEq, ::prost::Message)]
244pub struct TableChangeLog {
245    /// Epochs should be sorted in ascending order, which means earlier epoch at the front.
246    #[prost(message, repeated, tag = "1")]
247    pub change_logs: ::prost::alloc::vec::Vec<EpochNewChangeLog>,
248}
249#[derive(prost_helpers::AnyPB)]
250#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
251pub struct StateTableInfo {
252    #[prost(uint64, tag = "1")]
253    pub committed_epoch: u64,
254    #[prost(uint64, tag = "3", wrapper = "crate::id::CompactionGroupId")]
255    pub compaction_group_id: crate::id::CompactionGroupId,
256}
257#[derive(prost_helpers::AnyPB)]
258#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
259pub struct StateTableInfoDelta {
260    #[prost(uint64, tag = "1")]
261    pub committed_epoch: u64,
262    #[prost(uint64, tag = "3", wrapper = "crate::id::CompactionGroupId")]
263    pub compaction_group_id: crate::id::CompactionGroupId,
264}
265#[derive(prost_helpers::AnyPB)]
266#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
267pub struct VectorIndexObject {
268    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockRawObjectId")]
269    pub id: crate::id::HummockRawObjectId,
270    #[prost(enumeration = "VectorIndexObjectType", tag = "2")]
271    pub object_type: i32,
272}
273#[derive(prost_helpers::AnyPB)]
274#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
275pub struct VectorFileInfo {
276    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockVectorFileId")]
277    pub object_id: crate::id::HummockVectorFileId,
278    #[prost(uint64, tag = "2")]
279    pub file_size: u64,
280    #[prost(uint64, tag = "3")]
281    pub start_vector_id: u64,
282    #[prost(uint32, tag = "4")]
283    pub vector_count: u32,
284    #[prost(uint64, tag = "5")]
285    pub meta_offset: u64,
286}
287#[derive(prost_helpers::AnyPB)]
288#[derive(Clone, PartialEq, ::prost::Message)]
289pub struct FlatIndex {
290    #[prost(message, optional, tag = "1")]
291    pub config: ::core::option::Option<super::catalog::FlatIndexConfig>,
292    #[prost(message, repeated, tag = "2")]
293    pub vector_files: ::prost::alloc::vec::Vec<VectorFileInfo>,
294    #[prost(uint64, tag = "3")]
295    pub next_vector_id: u64,
296}
297#[derive(prost_helpers::AnyPB)]
298#[derive(Clone, PartialEq, ::prost::Message)]
299pub struct FlatIndexAdd {
300    #[prost(message, repeated, tag = "1")]
301    pub added_vector_files: ::prost::alloc::vec::Vec<VectorFileInfo>,
302    #[prost(uint64, tag = "2")]
303    pub next_vector_id: u64,
304}
305#[derive(prost_helpers::AnyPB)]
306#[derive(Clone, PartialEq, ::prost::Message)]
307pub struct HnswGraph {
308    #[prost(message, repeated, tag = "1")]
309    pub nodes: ::prost::alloc::vec::Vec<hnsw_graph::HnswNode>,
310    #[prost(uint64, tag = "2")]
311    pub entrypoint_id: u64,
312}
313/// Nested message and enum types in `HnswGraph`.
314pub mod hnsw_graph {
315    #[derive(prost_helpers::AnyPB)]
316    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
317    pub struct HnswNeighbor {
318        #[prost(uint64, tag = "1")]
319        pub vector_id: u64,
320        #[prost(double, tag = "2")]
321        pub distance: f64,
322    }
323    #[derive(prost_helpers::AnyPB)]
324    #[derive(Clone, PartialEq, ::prost::Message)]
325    pub struct HnswLevel {
326        #[prost(message, repeated, tag = "1")]
327        pub neighbors: ::prost::alloc::vec::Vec<HnswNeighbor>,
328    }
329    #[derive(prost_helpers::AnyPB)]
330    #[derive(Clone, PartialEq, ::prost::Message)]
331    pub struct HnswNode {
332        #[prost(message, repeated, tag = "1")]
333        pub levels: ::prost::alloc::vec::Vec<HnswLevel>,
334    }
335}
336#[derive(prost_helpers::AnyPB)]
337#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
338pub struct HnswGraphFileInfo {
339    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockHnswGraphFileId")]
340    pub object_id: crate::id::HummockHnswGraphFileId,
341    #[prost(uint64, tag = "2")]
342    pub file_size: u64,
343}
344#[derive(prost_helpers::AnyPB)]
345#[derive(Clone, PartialEq, ::prost::Message)]
346pub struct HnswFlatIndex {
347    #[prost(message, optional, tag = "1")]
348    pub config: ::core::option::Option<super::catalog::HnswFlatIndexConfig>,
349    #[prost(message, repeated, tag = "2")]
350    pub vector_files: ::prost::alloc::vec::Vec<VectorFileInfo>,
351    #[prost(uint64, tag = "3")]
352    pub next_vector_id: u64,
353    #[prost(message, optional, tag = "4")]
354    pub graph_file: ::core::option::Option<HnswGraphFileInfo>,
355}
356#[derive(prost_helpers::AnyPB)]
357#[derive(Clone, PartialEq, ::prost::Message)]
358pub struct HnswFlatIndexAdd {
359    #[prost(message, repeated, tag = "1")]
360    pub added_vector_files: ::prost::alloc::vec::Vec<VectorFileInfo>,
361    #[prost(uint64, tag = "2")]
362    pub next_vector_id: u64,
363    #[prost(message, optional, tag = "3")]
364    pub graph_file: ::core::option::Option<HnswGraphFileInfo>,
365}
366#[derive(prost_helpers::AnyPB)]
367#[derive(Clone, PartialEq, ::prost::Message)]
368pub struct VectorIndex {
369    #[prost(uint32, tag = "1")]
370    pub dimension: u32,
371    #[prost(enumeration = "super::common::DistanceType", tag = "2")]
372    pub distance_type: i32,
373    #[prost(oneof = "vector_index::Variant", tags = "65, 66")]
374    pub variant: ::core::option::Option<vector_index::Variant>,
375}
376/// Nested message and enum types in `VectorIndex`.
377pub mod vector_index {
378    #[derive(prost_helpers::AnyPB)]
379    #[derive(Clone, PartialEq, ::prost::Oneof)]
380    pub enum Variant {
381        /// reserve 64 general configs
382        #[prost(message, tag = "65")]
383        Flat(super::FlatIndex),
384        #[prost(message, tag = "66")]
385        HnswFlat(super::HnswFlatIndex),
386    }
387}
388#[derive(prost_helpers::AnyPB)]
389#[derive(Clone, PartialEq, ::prost::Message)]
390pub struct VectorIndexDelta {
391    #[prost(oneof = "vector_index_delta::Delta", tags = "1, 2")]
392    pub delta: ::core::option::Option<vector_index_delta::Delta>,
393}
394/// Nested message and enum types in `VectorIndexDelta`.
395pub mod vector_index_delta {
396    #[derive(prost_helpers::AnyPB)]
397    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
398    pub struct VectorIndexInit {
399        #[prost(message, optional, tag = "1")]
400        pub info: ::core::option::Option<super::super::catalog::VectorIndexInfo>,
401    }
402    #[derive(prost_helpers::AnyPB)]
403    #[derive(Clone, PartialEq, ::prost::Message)]
404    pub struct VectorIndexAdd {
405        #[prost(oneof = "vector_index_add::Add", tags = "65, 66")]
406        pub add: ::core::option::Option<vector_index_add::Add>,
407    }
408    /// Nested message and enum types in `VectorIndexAdd`.
409    pub mod vector_index_add {
410        #[derive(prost_helpers::AnyPB)]
411        #[derive(Clone, PartialEq, ::prost::Oneof)]
412        pub enum Add {
413            /// reserve 64 general configs
414            #[prost(message, tag = "65")]
415            Flat(super::super::FlatIndexAdd),
416            #[prost(message, tag = "66")]
417            HnswFlat(super::super::HnswFlatIndexAdd),
418        }
419    }
420    #[derive(prost_helpers::AnyPB)]
421    #[derive(Clone, PartialEq, ::prost::Message)]
422    pub struct VectorIndexAdds {
423        #[prost(message, repeated, tag = "1")]
424        pub adds: ::prost::alloc::vec::Vec<VectorIndexAdd>,
425    }
426    #[derive(prost_helpers::AnyPB)]
427    #[derive(Clone, PartialEq, ::prost::Oneof)]
428    pub enum Delta {
429        #[prost(message, tag = "1")]
430        Init(VectorIndexInit),
431        #[prost(message, tag = "2")]
432        Adds(VectorIndexAdds),
433    }
434}
435#[derive(prost_helpers::AnyPB)]
436#[derive(Clone, PartialEq, ::prost::Message)]
437pub struct HummockVersion {
438    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockVersionId")]
439    pub id: crate::id::HummockVersionId,
440    /// Levels of each compaction group
441    #[prost(
442        map = "uint64, message",
443        tag = "2",
444        wrapper = "crate::id::CompactionGroupId"
445    )]
446    pub levels: ::std::collections::HashMap<
447        crate::id::CompactionGroupId,
448        hummock_version::Levels,
449    >,
450    #[deprecated]
451    #[prost(uint64, tag = "3")]
452    pub max_committed_epoch: u64,
453    #[prost(map = "uint32, message", tag = "5", wrapper = "crate::id::TableId")]
454    pub table_watermarks: ::std::collections::HashMap<
455        crate::id::TableId,
456        TableWatermarks,
457    >,
458    #[prost(map = "uint32, message", tag = "6", wrapper = "crate::id::TableId")]
459    pub table_change_logs: ::std::collections::HashMap<
460        crate::id::TableId,
461        TableChangeLog,
462    >,
463    #[prost(map = "uint32, message", tag = "7", wrapper = "crate::id::TableId")]
464    pub state_table_info: ::std::collections::HashMap<
465        crate::id::TableId,
466        StateTableInfo,
467    >,
468    #[prost(map = "uint32, message", tag = "8", wrapper = "crate::id::TableId")]
469    pub vector_indexes: ::std::collections::HashMap<crate::id::TableId, VectorIndex>,
470}
471/// Nested message and enum types in `HummockVersion`.
472pub mod hummock_version {
473    #[derive(prost_helpers::AnyPB)]
474    #[derive(Clone, PartialEq, ::prost::Message)]
475    pub struct Levels {
476        #[prost(message, repeated, tag = "1")]
477        pub levels: ::prost::alloc::vec::Vec<super::Level>,
478        #[prost(message, optional, tag = "2")]
479        pub l0: ::core::option::Option<super::OverlappingLevel>,
480        #[prost(uint64, tag = "3", wrapper = "crate::id::CompactionGroupId")]
481        pub group_id: crate::id::CompactionGroupId,
482        #[prost(uint64, tag = "4", wrapper = "crate::id::CompactionGroupId")]
483        pub parent_group_id: crate::id::CompactionGroupId,
484        #[deprecated]
485        #[prost(uint32, repeated, packed = "false", tag = "5")]
486        pub member_table_ids: ::prost::alloc::vec::Vec<u32>,
487        #[prost(uint64, tag = "6")]
488        pub compaction_group_version_id: u64,
489    }
490}
491#[derive(prost_helpers::AnyPB)]
492#[derive(Clone, PartialEq, ::prost::Message)]
493pub struct HummockVersionDelta {
494    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockVersionId")]
495    pub id: crate::id::HummockVersionId,
496    #[prost(uint64, tag = "2", wrapper = "crate::id::HummockVersionId")]
497    pub prev_id: crate::id::HummockVersionId,
498    /// Levels of each compaction group
499    #[prost(
500        map = "uint64, message",
501        tag = "3",
502        wrapper = "crate::id::CompactionGroupId"
503    )]
504    pub group_deltas: ::std::collections::HashMap<
505        crate::id::CompactionGroupId,
506        hummock_version_delta::GroupDeltas,
507    >,
508    #[deprecated]
509    #[prost(uint64, tag = "4")]
510    pub max_committed_epoch: u64,
511    #[prost(bool, tag = "6")]
512    pub trivial_move: bool,
513    #[prost(map = "uint32, message", tag = "8", wrapper = "crate::id::TableId")]
514    pub new_table_watermarks: ::std::collections::HashMap<
515        crate::id::TableId,
516        TableWatermarks,
517    >,
518    #[prost(uint32, repeated, tag = "9", wrapper = "crate::id::TableId")]
519    pub removed_table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
520    #[prost(map = "uint32, message", tag = "10", wrapper = "crate::id::TableId")]
521    pub change_log_delta: ::std::collections::HashMap<
522        crate::id::TableId,
523        hummock_version_delta::ChangeLogDelta,
524    >,
525    #[prost(map = "uint32, message", tag = "11", wrapper = "crate::id::TableId")]
526    pub state_table_info_delta: ::std::collections::HashMap<
527        crate::id::TableId,
528        StateTableInfoDelta,
529    >,
530    #[prost(map = "uint32, message", tag = "12", wrapper = "crate::id::TableId")]
531    pub vector_index_delta: ::std::collections::HashMap<
532        crate::id::TableId,
533        VectorIndexDelta,
534    >,
535}
536/// Nested message and enum types in `HummockVersionDelta`.
537pub mod hummock_version_delta {
538    #[derive(prost_helpers::AnyPB)]
539    #[derive(Clone, PartialEq, ::prost::Message)]
540    pub struct GroupDeltas {
541        #[prost(message, repeated, tag = "1")]
542        pub group_deltas: ::prost::alloc::vec::Vec<super::GroupDelta>,
543    }
544    #[derive(prost_helpers::AnyPB)]
545    #[derive(Clone, PartialEq, ::prost::Message)]
546    pub struct ChangeLogDelta {
547        #[prost(message, optional, tag = "1")]
548        pub new_log: ::core::option::Option<super::EpochNewChangeLog>,
549        /// only logs in epoch later than truncate_epoch will be preserved
550        #[prost(uint64, tag = "2")]
551        pub truncate_epoch: u64,
552    }
553}
554#[derive(prost_helpers::AnyPB)]
555#[derive(Clone, PartialEq, ::prost::Message)]
556pub struct HummockVersionDeltas {
557    #[prost(message, repeated, tag = "1")]
558    pub version_deltas: ::prost::alloc::vec::Vec<HummockVersionDelta>,
559}
560#[derive(prost_helpers::AnyPB)]
561#[derive(Clone, PartialEq, ::prost::Message)]
562pub struct HummockVersionCheckpoint {
563    #[prost(message, optional, tag = "1")]
564    pub version: ::core::option::Option<HummockVersion>,
565    #[prost(map = "uint64, message", tag = "2", wrapper = "crate::id::HummockVersionId")]
566    pub stale_objects: ::std::collections::HashMap<
567        crate::id::HummockVersionId,
568        hummock_version_checkpoint::StaleObjects,
569    >,
570}
571/// Nested message and enum types in `HummockVersionCheckpoint`.
572pub mod hummock_version_checkpoint {
573    #[derive(prost_helpers::AnyPB)]
574    #[derive(Clone, PartialEq, ::prost::Message)]
575    pub struct StaleObjects {
576        #[prost(
577            uint64,
578            repeated,
579            tag = "1",
580            wrapper = "crate::id::HummockSstableObjectId"
581        )]
582        pub id: ::prost::alloc::vec::Vec<crate::id::HummockSstableObjectId>,
583        #[prost(uint64, tag = "2")]
584        pub total_file_size: u64,
585        #[prost(message, repeated, tag = "3")]
586        pub vector_files: ::prost::alloc::vec::Vec<super::VectorIndexObject>,
587    }
588}
589/// Envelope message wrapping a compressed or uncompressed HummockVersionCheckpoint.
590/// When compression_algorithm is NONE (or UNSPECIFIED), payload contains raw PbHummockVersionCheckpoint bytes.
591/// Otherwise, payload contains the compressed PbHummockVersionCheckpoint bytes.
592///
593/// Backward compatibility:
594///
595/// * Old code (unaware of this message) writes raw PbHummockVersionCheckpoint directly.
596/// * New code tries to decode as HummockVersionCheckpointEnvelope first.
597///   If it fails (old format), it falls back to decoding as PbHummockVersionCheckpoint.
598/// * Legacy bytes may occasionally decode as an envelope due to protobuf's unknown-field
599///   skipping, so readers treat `checksum` as the discriminator: all new envelopes set it,
600///   while old raw checkpoints do not have field 3.
601///
602/// Format detection logic:
603///
604/// 1. Try to decode bytes as HummockVersionCheckpointEnvelope
605/// 1. If checksum.is_some(), treat as new envelope format:
606///    a. Verify checksum against payload
607///    b. Decompress payload according to compression_algorithm
608///    c. Decode decompressed bytes as PbHummockVersionCheckpoint
609/// 1. If checksum.is_none() or decode fails, treat as legacy format:
610///    * Decode bytes directly as PbHummockVersionCheckpoint
611#[derive(prost_helpers::AnyPB)]
612#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
613pub struct HummockVersionCheckpointEnvelope {
614    #[prost(enumeration = "CheckpointCompressionAlgorithm", tag = "1")]
615    pub compression_algorithm: i32,
616    /// Compressed (or uncompressed if algorithm is NONE) PbHummockVersionCheckpoint bytes.
617    #[prost(bytes = "vec", tag = "2")]
618    pub payload: ::prost::alloc::vec::Vec<u8>,
619    /// xxhash64 checksum of the payload bytes (compressed data) for integrity verification.
620    /// Presence of this field distinguishes new envelope format from legacy raw checkpoints.
621    #[prost(uint64, optional, tag = "3")]
622    pub checksum: ::core::option::Option<u64>,
623}
624#[derive(prost_helpers::AnyPB)]
625#[derive(Clone, PartialEq, ::prost::Message)]
626pub struct HummockVersionArchive {
627    #[prost(message, optional, tag = "1")]
628    pub version: ::core::option::Option<HummockVersion>,
629    /// some version_deltas since version
630    #[prost(message, repeated, tag = "2")]
631    pub version_deltas: ::prost::alloc::vec::Vec<HummockVersionDelta>,
632}
633#[derive(prost_helpers::AnyPB)]
634#[derive(Clone, PartialEq, ::prost::Message)]
635pub struct VersionUpdatePayload {
636    #[prost(oneof = "version_update_payload::Payload", tags = "1, 2")]
637    pub payload: ::core::option::Option<version_update_payload::Payload>,
638}
639/// Nested message and enum types in `VersionUpdatePayload`.
640pub mod version_update_payload {
641    #[derive(prost_helpers::AnyPB)]
642    #[derive(Clone, PartialEq, ::prost::Oneof)]
643    pub enum Payload {
644        #[prost(message, tag = "1")]
645        VersionDeltas(super::HummockVersionDeltas),
646        #[prost(message, tag = "2")]
647        PinnedVersion(super::HummockVersion),
648    }
649}
650#[derive(prost_helpers::AnyPB)]
651#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
652pub struct UnpinVersionBeforeRequest {
653    #[prost(uint32, tag = "1", wrapper = "crate::id::WorkerId")]
654    pub context_id: crate::id::WorkerId,
655    #[prost(uint64, tag = "2", wrapper = "crate::id::HummockVersionId")]
656    pub unpin_version_before: crate::id::HummockVersionId,
657}
658#[derive(prost_helpers::AnyPB)]
659#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
660pub struct UnpinVersionBeforeResponse {
661    #[prost(message, optional, tag = "1")]
662    pub status: ::core::option::Option<super::common::Status>,
663}
664#[derive(prost_helpers::AnyPB)]
665#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
666pub struct GetCurrentVersionRequest {}
667#[derive(prost_helpers::AnyPB)]
668#[derive(Clone, PartialEq, ::prost::Message)]
669pub struct GetCurrentVersionResponse {
670    #[prost(message, optional, tag = "1")]
671    pub status: ::core::option::Option<super::common::Status>,
672    #[prost(message, optional, tag = "2")]
673    pub current_version: ::core::option::Option<HummockVersion>,
674}
675#[derive(prost_helpers::AnyPB)]
676#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
677pub struct GetTableChangeLogsRequest {
678    /// If true, returns only the epoch without the full log bodies.
679    #[prost(bool, tag = "1")]
680    pub epoch_only: bool,
681    #[prost(bool, tag = "2")]
682    pub exclude_empty: bool,
683    /// Defines the epoch range to fetch.
684    #[prost(uint64, optional, tag = "3")]
685    pub start_epoch_inclusive: ::core::option::Option<u64>,
686    #[prost(uint64, optional, tag = "4")]
687    pub end_epoch_inclusive: ::core::option::Option<u64>,
688    /// Defines the tables to fetch.
689    #[prost(message, optional, tag = "5")]
690    pub table_ids: ::core::option::Option<get_table_change_logs_request::TableFilter>,
691    /// Limit the number of `EpochNewChangeLog` returned for each table.
692    #[prost(uint32, optional, tag = "6")]
693    pub limit: ::core::option::Option<u32>,
694}
695/// Nested message and enum types in `GetTableChangeLogsRequest`.
696pub mod get_table_change_logs_request {
697    #[derive(prost_helpers::AnyPB)]
698    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
699    pub struct TableFilter {
700        #[prost(uint32, repeated, tag = "1", wrapper = "crate::id::TableId")]
701        pub table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
702    }
703}
704#[derive(prost_helpers::AnyPB)]
705#[derive(Clone, PartialEq, ::prost::Message)]
706pub struct GetTableChangeLogsResponse {
707    #[prost(map = "uint32, message", tag = "1")]
708    pub table_change_logs: ::std::collections::HashMap<u32, TableChangeLog>,
709}
710#[derive(prost_helpers::AnyPB)]
711#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
712pub struct UnpinVersionRequest {
713    #[prost(uint32, tag = "1", wrapper = "crate::id::WorkerId")]
714    pub context_id: crate::id::WorkerId,
715}
716#[derive(prost_helpers::AnyPB)]
717#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
718pub struct UnpinVersionResponse {
719    #[prost(message, optional, tag = "1")]
720    pub status: ::core::option::Option<super::common::Status>,
721}
722#[derive(prost_helpers::AnyPB)]
723#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
724pub struct GetAssignedCompactTaskNumRequest {}
725#[derive(prost_helpers::AnyPB)]
726#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
727pub struct GetAssignedCompactTaskNumResponse {
728    #[prost(uint32, tag = "1")]
729    pub num_tasks: u32,
730}
731/// When right_exclusive=false, it represents \[left, right\], of which both boundary are open. When right_exclusive=true,
732/// it represents \[left, right), of which right is exclusive.
733#[derive(prost_helpers::AnyPB)]
734#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
735pub struct KeyRange {
736    #[prost(bytes = "vec", tag = "1")]
737    pub left: ::prost::alloc::vec::Vec<u8>,
738    #[prost(bytes = "vec", tag = "2")]
739    pub right: ::prost::alloc::vec::Vec<u8>,
740    #[prost(bool, tag = "3")]
741    pub right_exclusive: bool,
742}
743#[derive(prost_helpers::AnyPB)]
744#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
745pub struct TableOption {
746    #[prost(uint32, optional, tag = "2")]
747    pub retention_seconds: ::core::option::Option<u32>,
748}
749#[derive(prost_helpers::AnyPB)]
750#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
751pub struct TableSchema {
752    #[prost(int32, repeated, tag = "1")]
753    pub column_ids: ::prost::alloc::vec::Vec<i32>,
754}
755#[derive(prost_helpers::AnyPB)]
756#[derive(Clone, PartialEq, ::prost::Message)]
757pub struct CompactTask {
758    /// SSTs to be compacted, which will be removed from LSM after compaction
759    #[prost(message, repeated, tag = "1")]
760    pub input_ssts: ::prost::alloc::vec::Vec<InputLevel>,
761    /// In ideal case, the compaction will generate splits.len() tables which have key range
762    /// corresponding to that in \[splits\], respectively
763    #[prost(message, repeated, tag = "2")]
764    pub splits: ::prost::alloc::vec::Vec<KeyRange>,
765    /// compaction output, which will be added to \[target_level\] of LSM after compaction
766    #[prost(message, repeated, tag = "4")]
767    pub sorted_output_ssts: ::prost::alloc::vec::Vec<SstableInfo>,
768    /// task id assigned by hummock storage service
769    #[prost(uint64, tag = "5")]
770    pub task_id: u64,
771    /// compaction output will be added to \[target_level\] of LSM after compaction
772    #[prost(uint32, tag = "6")]
773    pub target_level: u32,
774    #[prost(bool, tag = "7")]
775    pub gc_delete_keys: bool,
776    /// Lbase in LSM
777    #[prost(uint32, tag = "8")]
778    pub base_level: u32,
779    #[prost(enumeration = "compact_task::TaskStatus", tag = "9")]
780    pub task_status: i32,
781    /// compaction group the task belongs to
782    #[prost(uint64, tag = "12", wrapper = "crate::id::CompactionGroupId")]
783    pub compaction_group_id: crate::id::CompactionGroupId,
784    /// existing_table_ids for compaction drop key
785    #[prost(uint32, repeated, tag = "13", wrapper = "crate::id::TableId")]
786    pub existing_table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
787    #[prost(uint32, tag = "14")]
788    pub compression_algorithm: u32,
789    #[prost(uint64, tag = "15")]
790    pub target_file_size: u64,
791    #[prost(uint32, tag = "16")]
792    pub compaction_filter_mask: u32,
793    #[prost(btree_map = "uint32, message", tag = "17", wrapper = "crate::id::TableId")]
794    pub table_options: ::prost::alloc::collections::BTreeMap<
795        crate::id::TableId,
796        TableOption,
797    >,
798    #[prost(uint64, tag = "18")]
799    pub current_epoch_time: u64,
800    #[prost(uint64, tag = "19")]
801    pub target_sub_level_id: u64,
802    /// Identifies whether the task is space_reclaim, if the compact_task_type increases, it will be refactored to enum
803    #[prost(enumeration = "compact_task::TaskType", tag = "20")]
804    pub task_type: i32,
805    /// Deprecated. use table_vnode_partition instead;
806    #[deprecated]
807    #[prost(bool, tag = "21")]
808    pub split_by_state_table: bool,
809    /// Compaction needs to cut the state table every time 1/weight of vnodes in the table have been processed.
810    /// Deprecated. use table_vnode_partition instead;
811    #[prost(uint32, tag = "22")]
812    pub split_weight_by_vnode: u32,
813    #[prost(btree_map = "uint32, uint32", tag = "23", wrapper = "crate::id::TableId")]
814    pub table_vnode_partition: ::prost::alloc::collections::BTreeMap<
815        crate::id::TableId,
816        u32,
817    >,
818    /// The table watermark of any table id. In compaction we only use the table watermarks on safe epoch,
819    /// so we only need to include the table watermarks on safe epoch to reduce the size of metadata.
820    #[prost(btree_map = "uint32, message", tag = "24", wrapper = "crate::id::TableId")]
821    pub table_watermarks: ::prost::alloc::collections::BTreeMap<
822        crate::id::TableId,
823        TableWatermarks,
824    >,
825    /// The table schemas that are at least as new as the one used to create `input_ssts`.
826    #[prost(btree_map = "uint32, message", tag = "25", wrapper = "crate::id::TableId")]
827    pub table_schemas: ::prost::alloc::collections::BTreeMap<
828        crate::id::TableId,
829        TableSchema,
830    >,
831    /// Max sub compaction task numbers
832    #[prost(uint32, tag = "26")]
833    pub max_sub_compaction: u32,
834    /// The compaction group id when the compaction task is created.
835    #[prost(uint64, tag = "27")]
836    pub compaction_group_version_id: u64,
837    /// The maximum key-value count threshold for using Xor16 filter.
838    /// When the number of keys exceeds this threshold, a BlockedXor16 filter will be used.
839    #[prost(uint64, optional, tag = "28")]
840    pub max_kv_count_for_xor16: ::core::option::Option<u64>,
841    /// Max bytes for vnode-level key range hints to embed into output SSTs.
842    #[prost(uint64, optional, tag = "29")]
843    pub max_vnode_key_range_bytes: ::core::option::Option<u64>,
844}
845/// Nested message and enum types in `CompactTask`.
846pub mod compact_task {
847    #[derive(prost_helpers::AnyPB)]
848    #[derive(
849        Clone,
850        Copy,
851        Debug,
852        PartialEq,
853        Eq,
854        Hash,
855        PartialOrd,
856        Ord,
857        ::prost::Enumeration
858    )]
859    #[repr(i32)]
860    pub enum TaskStatus {
861        Unspecified = 0,
862        Pending = 1,
863        Success = 2,
864        HeartbeatCanceled = 3,
865        NoAvailMemoryResourceCanceled = 4,
866        AssignFailCanceled = 5,
867        SendFailCanceled = 6,
868        ManualCanceled = 7,
869        InvalidGroupCanceled = 8,
870        InputOutdatedCanceled = 9,
871        ExecuteFailed = 10,
872        JoinHandleFailed = 11,
873        TrackSstObjectIdFailed = 12,
874        NoAvailCpuResourceCanceled = 13,
875        HeartbeatProgressCanceled = 14,
876        RetentionTimeRejected = 17,
877        /// for serverless compaction
878        ServerlessSendFailCanceled = 15,
879        ServerlessTableNotFoundCanceled = 16,
880    }
881    impl TaskStatus {
882        /// String value of the enum field names used in the ProtoBuf definition.
883        ///
884        /// The values are not transformed in any way and thus are considered stable
885        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
886        pub fn as_str_name(&self) -> &'static str {
887            match self {
888                Self::Unspecified => "UNSPECIFIED",
889                Self::Pending => "PENDING",
890                Self::Success => "SUCCESS",
891                Self::HeartbeatCanceled => "HEARTBEAT_CANCELED",
892                Self::NoAvailMemoryResourceCanceled => {
893                    "NO_AVAIL_MEMORY_RESOURCE_CANCELED"
894                }
895                Self::AssignFailCanceled => "ASSIGN_FAIL_CANCELED",
896                Self::SendFailCanceled => "SEND_FAIL_CANCELED",
897                Self::ManualCanceled => "MANUAL_CANCELED",
898                Self::InvalidGroupCanceled => "INVALID_GROUP_CANCELED",
899                Self::InputOutdatedCanceled => "INPUT_OUTDATED_CANCELED",
900                Self::ExecuteFailed => "EXECUTE_FAILED",
901                Self::JoinHandleFailed => "JOIN_HANDLE_FAILED",
902                Self::TrackSstObjectIdFailed => "TRACK_SST_OBJECT_ID_FAILED",
903                Self::NoAvailCpuResourceCanceled => "NO_AVAIL_CPU_RESOURCE_CANCELED",
904                Self::HeartbeatProgressCanceled => "HEARTBEAT_PROGRESS_CANCELED",
905                Self::RetentionTimeRejected => "RETENTION_TIME_REJECTED",
906                Self::ServerlessSendFailCanceled => "SERVERLESS_SEND_FAIL_CANCELED",
907                Self::ServerlessTableNotFoundCanceled => {
908                    "SERVERLESS_TABLE_NOT_FOUND_CANCELED"
909                }
910            }
911        }
912        /// Creates an enum from field names used in the ProtoBuf definition.
913        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
914            match value {
915                "UNSPECIFIED" => Some(Self::Unspecified),
916                "PENDING" => Some(Self::Pending),
917                "SUCCESS" => Some(Self::Success),
918                "HEARTBEAT_CANCELED" => Some(Self::HeartbeatCanceled),
919                "NO_AVAIL_MEMORY_RESOURCE_CANCELED" => {
920                    Some(Self::NoAvailMemoryResourceCanceled)
921                }
922                "ASSIGN_FAIL_CANCELED" => Some(Self::AssignFailCanceled),
923                "SEND_FAIL_CANCELED" => Some(Self::SendFailCanceled),
924                "MANUAL_CANCELED" => Some(Self::ManualCanceled),
925                "INVALID_GROUP_CANCELED" => Some(Self::InvalidGroupCanceled),
926                "INPUT_OUTDATED_CANCELED" => Some(Self::InputOutdatedCanceled),
927                "EXECUTE_FAILED" => Some(Self::ExecuteFailed),
928                "JOIN_HANDLE_FAILED" => Some(Self::JoinHandleFailed),
929                "TRACK_SST_OBJECT_ID_FAILED" => Some(Self::TrackSstObjectIdFailed),
930                "NO_AVAIL_CPU_RESOURCE_CANCELED" => {
931                    Some(Self::NoAvailCpuResourceCanceled)
932                }
933                "HEARTBEAT_PROGRESS_CANCELED" => Some(Self::HeartbeatProgressCanceled),
934                "RETENTION_TIME_REJECTED" => Some(Self::RetentionTimeRejected),
935                "SERVERLESS_SEND_FAIL_CANCELED" => Some(Self::ServerlessSendFailCanceled),
936                "SERVERLESS_TABLE_NOT_FOUND_CANCELED" => {
937                    Some(Self::ServerlessTableNotFoundCanceled)
938                }
939                _ => None,
940            }
941        }
942    }
943    #[derive(prost_helpers::AnyPB)]
944    #[derive(
945        Clone,
946        Copy,
947        Debug,
948        PartialEq,
949        Eq,
950        Hash,
951        PartialOrd,
952        Ord,
953        ::prost::Enumeration
954    )]
955    #[repr(i32)]
956    pub enum TaskType {
957        TypeUnspecified = 0,
958        Dynamic = 1,
959        SpaceReclaim = 2,
960        Manual = 3,
961        SharedBuffer = 4,
962        Ttl = 5,
963        Tombstone = 6,
964        Emergency = 7,
965        VnodeWatermark = 8,
966    }
967    impl TaskType {
968        /// String value of the enum field names used in the ProtoBuf definition.
969        ///
970        /// The values are not transformed in any way and thus are considered stable
971        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
972        pub fn as_str_name(&self) -> &'static str {
973            match self {
974                Self::TypeUnspecified => "TYPE_UNSPECIFIED",
975                Self::Dynamic => "DYNAMIC",
976                Self::SpaceReclaim => "SPACE_RECLAIM",
977                Self::Manual => "MANUAL",
978                Self::SharedBuffer => "SHARED_BUFFER",
979                Self::Ttl => "TTL",
980                Self::Tombstone => "TOMBSTONE",
981                Self::Emergency => "EMERGENCY",
982                Self::VnodeWatermark => "VNODE_WATERMARK",
983            }
984        }
985        /// Creates an enum from field names used in the ProtoBuf definition.
986        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
987            match value {
988                "TYPE_UNSPECIFIED" => Some(Self::TypeUnspecified),
989                "DYNAMIC" => Some(Self::Dynamic),
990                "SPACE_RECLAIM" => Some(Self::SpaceReclaim),
991                "MANUAL" => Some(Self::Manual),
992                "SHARED_BUFFER" => Some(Self::SharedBuffer),
993                "TTL" => Some(Self::Ttl),
994                "TOMBSTONE" => Some(Self::Tombstone),
995                "EMERGENCY" => Some(Self::Emergency),
996                "VNODE_WATERMARK" => Some(Self::VnodeWatermark),
997                _ => None,
998            }
999        }
1000    }
1001}
1002#[derive(prost_helpers::AnyPB)]
1003#[derive(Clone, PartialEq, ::prost::Message)]
1004pub struct LevelHandler {
1005    #[prost(uint32, tag = "1")]
1006    pub level: u32,
1007    #[prost(message, repeated, tag = "3")]
1008    pub tasks: ::prost::alloc::vec::Vec<level_handler::RunningCompactTask>,
1009}
1010/// Nested message and enum types in `LevelHandler`.
1011pub mod level_handler {
1012    #[derive(prost_helpers::AnyPB)]
1013    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1014    pub struct RunningCompactTask {
1015        #[prost(uint64, tag = "1")]
1016        pub task_id: u64,
1017        #[prost(uint64, repeated, tag = "2", wrapper = "crate::id::HummockSstableId")]
1018        pub ssts: ::prost::alloc::vec::Vec<crate::id::HummockSstableId>,
1019        #[prost(uint64, tag = "3")]
1020        pub total_file_size: u64,
1021        #[prost(uint32, tag = "4")]
1022        pub target_level: u32,
1023    }
1024}
1025#[derive(prost_helpers::AnyPB)]
1026#[derive(Clone, PartialEq, ::prost::Message)]
1027pub struct CompactStatus {
1028    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1029    pub compaction_group_id: crate::id::CompactionGroupId,
1030    #[prost(message, repeated, tag = "2")]
1031    pub level_handlers: ::prost::alloc::vec::Vec<LevelHandler>,
1032}
1033/// Config info of compaction group.
1034#[derive(prost_helpers::AnyPB)]
1035#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1036pub struct CompactionGroup {
1037    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1038    pub id: crate::id::CompactionGroupId,
1039    #[prost(message, optional, tag = "4")]
1040    pub compaction_config: ::core::option::Option<CompactionConfig>,
1041}
1042/// Complete info of compaction group.
1043/// The info is the aggregate of HummockVersion and CompactionGroupConfig
1044#[derive(prost_helpers::AnyPB)]
1045#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1046pub struct CompactionGroupInfo {
1047    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1048    pub id: crate::id::CompactionGroupId,
1049    #[prost(uint64, tag = "2", wrapper = "crate::id::CompactionGroupId")]
1050    pub parent_id: crate::id::CompactionGroupId,
1051    #[prost(uint32, repeated, tag = "3", wrapper = "crate::id::TableId")]
1052    pub member_table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
1053    #[prost(message, optional, tag = "4")]
1054    pub compaction_config: ::core::option::Option<CompactionConfig>,
1055}
1056#[derive(prost_helpers::AnyPB)]
1057#[derive(Clone, PartialEq, ::prost::Message)]
1058pub struct CompactTaskAssignment {
1059    #[prost(message, optional, tag = "1")]
1060    pub compact_task: ::core::option::Option<CompactTask>,
1061    #[prost(uint32, tag = "2", wrapper = "crate::id::WorkerId")]
1062    pub context_id: crate::id::WorkerId,
1063}
1064#[derive(prost_helpers::AnyPB)]
1065#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1066pub struct HummockPinnedVersion {
1067    #[prost(uint32, tag = "1", wrapper = "crate::id::WorkerId")]
1068    pub context_id: crate::id::WorkerId,
1069    #[prost(uint64, tag = "2", wrapper = "crate::id::HummockVersionId")]
1070    pub min_pinned_id: crate::id::HummockVersionId,
1071}
1072#[derive(prost_helpers::AnyPB)]
1073#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1074pub struct HummockPinnedSnapshot {
1075    #[prost(uint32, tag = "1", wrapper = "crate::id::WorkerId")]
1076    pub context_id: crate::id::WorkerId,
1077    #[prost(uint64, tag = "2")]
1078    pub minimal_pinned_snapshot: u64,
1079}
1080#[derive(prost_helpers::AnyPB)]
1081#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1082pub struct GetNewObjectIdsRequest {
1083    #[prost(uint32, tag = "1")]
1084    pub number: u32,
1085}
1086#[derive(prost_helpers::AnyPB)]
1087#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1088pub struct GetNewObjectIdsResponse {
1089    #[prost(message, optional, tag = "1")]
1090    pub status: ::core::option::Option<super::common::Status>,
1091    /// inclusive
1092    #[prost(uint64, tag = "2", wrapper = "crate::id::HummockRawObjectId")]
1093    pub start_id: crate::id::HummockRawObjectId,
1094    /// exclusive
1095    #[prost(uint64, tag = "3", wrapper = "crate::id::HummockRawObjectId")]
1096    pub end_id: crate::id::HummockRawObjectId,
1097}
1098/// This is a heartbeat message. Task will be considered dead if
1099/// CompactTaskProgress is not received for a timeout
1100/// or num_ssts_sealed/num_ssts_uploaded do not increase for a timeout.
1101#[derive(prost_helpers::AnyPB)]
1102#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1103pub struct CompactTaskProgress {
1104    #[prost(uint64, tag = "1")]
1105    pub task_id: u64,
1106    #[prost(uint32, tag = "2")]
1107    pub num_ssts_sealed: u32,
1108    #[prost(uint32, tag = "3")]
1109    pub num_ssts_uploaded: u32,
1110    #[prost(uint64, tag = "4")]
1111    pub num_progress_key: u64,
1112    #[prost(uint64, tag = "5")]
1113    pub num_pending_read_io: u64,
1114    #[prost(uint64, tag = "6")]
1115    pub num_pending_write_io: u64,
1116    #[prost(uint64, optional, tag = "7", wrapper = "crate::id::CompactionGroupId")]
1117    pub compaction_group_id: ::core::option::Option<crate::id::CompactionGroupId>,
1118}
1119#[derive(prost_helpers::AnyPB)]
1120#[derive(Clone, PartialEq, ::prost::Message)]
1121pub struct SubscribeCompactionEventRequest {
1122    #[prost(uint64, tag = "7")]
1123    pub create_at: u64,
1124    #[prost(oneof = "subscribe_compaction_event_request::Event", tags = "1, 2, 3, 4")]
1125    pub event: ::core::option::Option<subscribe_compaction_event_request::Event>,
1126}
1127/// Nested message and enum types in `SubscribeCompactionEventRequest`.
1128pub mod subscribe_compaction_event_request {
1129    /// Register provides the context_id of the corresponding Compactor.
1130    #[derive(prost_helpers::AnyPB)]
1131    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1132    pub struct Register {
1133        #[prost(uint32, tag = "1", wrapper = "crate::id::WorkerId")]
1134        pub context_id: crate::id::WorkerId,
1135    }
1136    /// PullTask provides the number of tasks needed for the Compactor.
1137    #[derive(prost_helpers::AnyPB)]
1138    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1139    pub struct PullTask {
1140        #[prost(uint32, tag = "4")]
1141        pub pull_task_count: u32,
1142    }
1143    /// ReportTask provides the compact task to report to the meta.
1144    #[derive(prost_helpers::AnyPB)]
1145    #[derive(Clone, PartialEq, ::prost::Message)]
1146    pub struct ReportTask {
1147        #[prost(map = "uint32, message", tag = "3", wrapper = "crate::id::TableId")]
1148        pub table_stats_change: ::std::collections::HashMap<
1149            crate::id::TableId,
1150            super::TableStats,
1151        >,
1152        #[prost(uint64, tag = "4")]
1153        pub task_id: u64,
1154        #[prost(enumeration = "super::compact_task::TaskStatus", tag = "5")]
1155        pub task_status: i32,
1156        #[prost(message, repeated, tag = "6")]
1157        pub sorted_output_ssts: ::prost::alloc::vec::Vec<super::SstableInfo>,
1158        #[prost(
1159            map = "uint64, uint64",
1160            tag = "7",
1161            wrapper = "crate::id::HummockSstableObjectId"
1162        )]
1163        pub object_timestamps: ::std::collections::HashMap<
1164            crate::id::HummockSstableObjectId,
1165            u64,
1166        >,
1167    }
1168    /// HeartBeat provides the progress status of all tasks on the Compactor.
1169    #[derive(prost_helpers::AnyPB)]
1170    #[derive(Clone, PartialEq, ::prost::Message)]
1171    pub struct HeartBeat {
1172        #[prost(message, repeated, tag = "2")]
1173        pub progress: ::prost::alloc::vec::Vec<super::CompactTaskProgress>,
1174    }
1175    #[derive(prost_helpers::AnyPB)]
1176    #[derive(Clone, PartialEq, ::prost::Oneof)]
1177    pub enum Event {
1178        /// Compactor will register its own context_id with Meta via Register and establish a bi-directional streaming rpc.
1179        #[prost(message, tag = "1")]
1180        Register(Register),
1181        /// Compactor will recalculate the number of tasks needed locally after receiving the PullTaskAck and get the next batch of tasks from Meta via PullTask.
1182        #[prost(message, tag = "2")]
1183        PullTask(PullTask),
1184        /// When the execution of each task completes/fails, Compactor returns the task to the meta via ReportTask.
1185        #[prost(message, tag = "3")]
1186        ReportTask(ReportTask),
1187        /// Periodically, HeartBeat carries the progress of all tasks on the Compactor, and the meta will cancel the task when it expires.
1188        #[prost(message, tag = "4")]
1189        HeartBeat(HeartBeat),
1190    }
1191}
1192#[derive(prost_helpers::AnyPB)]
1193#[derive(Clone, PartialEq, ::prost::Message)]
1194pub struct SubscribeCompactionEventResponse {
1195    #[prost(uint64, tag = "7")]
1196    pub create_at: u64,
1197    #[prost(
1198        oneof = "subscribe_compaction_event_response::Event",
1199        tags = "1, 2, 3, 4, 5, 6"
1200    )]
1201    pub event: ::core::option::Option<subscribe_compaction_event_response::Event>,
1202}
1203/// Nested message and enum types in `SubscribeCompactionEventResponse`.
1204pub mod subscribe_compaction_event_response {
1205    /// PullTaskAck is a response, the meta will return a PullTaskAck after distributing the task requested by the PullTask.
1206    /// The Compactor receives the PullTaskAck and remakes its state and tries to initiate the next PullTask.
1207    #[derive(prost_helpers::AnyPB)]
1208    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1209    pub struct PullTaskAck {}
1210    #[derive(prost_helpers::AnyPB)]
1211    #[derive(Clone, PartialEq, ::prost::Oneof)]
1212    pub enum Event {
1213        #[prost(message, tag = "1")]
1214        CompactTask(super::CompactTask),
1215        #[deprecated]
1216        #[prost(message, tag = "2")]
1217        VacuumTask(super::VacuumTask),
1218        #[deprecated]
1219        #[prost(message, tag = "3")]
1220        FullScanTask(super::FullScanTask),
1221        #[deprecated]
1222        #[prost(message, tag = "4")]
1223        ValidationTask(super::ValidationTask),
1224        #[prost(message, tag = "5")]
1225        CancelCompactTask(super::CancelCompactTask),
1226        #[prost(message, tag = "6")]
1227        PullTaskAck(PullTaskAck),
1228    }
1229}
1230#[derive(prost_helpers::AnyPB)]
1231#[derive(Clone, PartialEq, ::prost::Message)]
1232pub struct ReportCompactionTaskRequest {
1233    #[prost(oneof = "report_compaction_task_request::Event", tags = "1, 2")]
1234    pub event: ::core::option::Option<report_compaction_task_request::Event>,
1235}
1236/// Nested message and enum types in `ReportCompactionTaskRequest`.
1237pub mod report_compaction_task_request {
1238    /// ReportTask provides the compact task to report to the meta.
1239    #[derive(prost_helpers::AnyPB)]
1240    #[derive(Clone, PartialEq, ::prost::Message)]
1241    pub struct ReportTask {
1242        #[prost(message, optional, tag = "2")]
1243        pub compact_task: ::core::option::Option<super::CompactTask>,
1244        #[prost(map = "uint32, message", tag = "3", wrapper = "crate::id::TableId")]
1245        pub table_stats_change: ::std::collections::HashMap<
1246            crate::id::TableId,
1247            super::TableStats,
1248        >,
1249        #[prost(
1250            map = "uint64, uint64",
1251            tag = "4",
1252            wrapper = "crate::id::HummockSstableObjectId"
1253        )]
1254        pub object_timestamps: ::std::collections::HashMap<
1255            crate::id::HummockSstableObjectId,
1256            u64,
1257        >,
1258    }
1259    /// HeartBeat provides the progress status of all tasks on the Compactor.
1260    #[derive(prost_helpers::AnyPB)]
1261    #[derive(Clone, PartialEq, ::prost::Message)]
1262    pub struct HeartBeat {
1263        #[prost(message, repeated, tag = "2")]
1264        pub progress: ::prost::alloc::vec::Vec<super::CompactTaskProgress>,
1265    }
1266    #[derive(prost_helpers::AnyPB)]
1267    #[derive(Clone, PartialEq, ::prost::Oneof)]
1268    pub enum Event {
1269        #[prost(message, tag = "1")]
1270        ReportTask(ReportTask),
1271        #[prost(message, tag = "2")]
1272        HeartBeat(HeartBeat),
1273    }
1274}
1275#[derive(prost_helpers::AnyPB)]
1276#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1277pub struct ReportCompactionTaskResponse {
1278    #[prost(message, optional, tag = "1")]
1279    pub status: ::core::option::Option<super::common::Status>,
1280}
1281#[derive(prost_helpers::AnyPB)]
1282#[derive(Clone, PartialEq, ::prost::Message)]
1283pub struct ValidationTask {
1284    #[prost(message, repeated, tag = "1")]
1285    pub sst_infos: ::prost::alloc::vec::Vec<SstableInfo>,
1286    #[prost(
1287        map = "uint64, uint32",
1288        tag = "2",
1289        wrapper = "crate::id::HummockSstableObjectId ->crate::id:: WorkerId"
1290    )]
1291    pub sst_id_to_worker_id: ::std::collections::HashMap<
1292        crate::id::HummockSstableObjectId,
1293        crate::id::WorkerId,
1294    >,
1295}
1296/// Delete SSTs in object store
1297#[derive(prost_helpers::AnyPB)]
1298#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1299pub struct VacuumTask {
1300    #[prost(uint64, repeated, tag = "1", wrapper = "crate::id::HummockSstableObjectId")]
1301    pub sstable_object_ids: ::prost::alloc::vec::Vec<crate::id::HummockSstableObjectId>,
1302}
1303/// Scan object store to get candidate orphan SSTs.
1304#[derive(prost_helpers::AnyPB)]
1305#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1306pub struct FullScanTask {
1307    #[prost(uint64, tag = "1")]
1308    pub sst_retention_watermark: u64,
1309    #[prost(string, optional, tag = "2")]
1310    pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1311    #[prost(string, optional, tag = "3")]
1312    pub start_after: ::core::option::Option<::prost::alloc::string::String>,
1313    #[prost(uint64, optional, tag = "4")]
1314    pub limit: ::core::option::Option<u64>,
1315}
1316/// Cancel compact task
1317#[derive(prost_helpers::AnyPB)]
1318#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1319pub struct CancelCompactTask {
1320    #[prost(uint32, tag = "1", wrapper = "crate::id::WorkerId")]
1321    pub context_id: crate::id::WorkerId,
1322    #[prost(uint64, tag = "2")]
1323    pub task_id: u64,
1324}
1325#[derive(prost_helpers::AnyPB)]
1326#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1327pub struct TriggerManualCompactionRequest {
1328    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1329    pub compaction_group_id: crate::id::CompactionGroupId,
1330    #[prost(message, optional, tag = "2")]
1331    pub key_range: ::core::option::Option<KeyRange>,
1332    #[prost(uint32, tag = "3", wrapper = "crate::id::JobId")]
1333    pub table_id: crate::id::JobId,
1334    #[prost(uint32, tag = "4")]
1335    pub level: u32,
1336    #[prost(uint64, repeated, tag = "5", wrapper = "crate::id::HummockSstableId")]
1337    pub sst_ids: ::prost::alloc::vec::Vec<crate::id::HummockSstableId>,
1338    #[prost(bool, optional, tag = "6")]
1339    pub exclusive: ::core::option::Option<bool>,
1340}
1341#[derive(prost_helpers::AnyPB)]
1342#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1343pub struct TriggerManualCompactionResponse {
1344    #[prost(message, optional, tag = "1")]
1345    pub status: ::core::option::Option<super::common::Status>,
1346    #[prost(bool, optional, tag = "2")]
1347    pub should_retry: ::core::option::Option<bool>,
1348}
1349#[derive(prost_helpers::AnyPB)]
1350#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1351pub struct TriggerFullGcRequest {
1352    #[prost(uint64, tag = "1")]
1353    pub sst_retention_time_sec: u64,
1354    #[prost(string, optional, tag = "2")]
1355    pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1356}
1357#[derive(prost_helpers::AnyPB)]
1358#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1359pub struct TriggerFullGcResponse {
1360    #[prost(message, optional, tag = "1")]
1361    pub status: ::core::option::Option<super::common::Status>,
1362}
1363#[derive(prost_helpers::AnyPB)]
1364#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1365pub struct ListVersionDeltasRequest {
1366    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockVersionId")]
1367    pub start_id: crate::id::HummockVersionId,
1368    #[prost(uint32, tag = "2")]
1369    pub num_limit: u32,
1370    #[prost(uint64, tag = "3")]
1371    pub committed_epoch_limit: u64,
1372}
1373#[derive(prost_helpers::AnyPB)]
1374#[derive(Clone, PartialEq, ::prost::Message)]
1375pub struct ListVersionDeltasResponse {
1376    #[prost(message, optional, tag = "1")]
1377    pub version_deltas: ::core::option::Option<HummockVersionDeltas>,
1378}
1379#[derive(prost_helpers::AnyPB)]
1380#[derive(Clone, PartialEq, ::prost::Message)]
1381pub struct PinnedVersionsSummary {
1382    #[prost(message, repeated, tag = "1")]
1383    pub pinned_versions: ::prost::alloc::vec::Vec<HummockPinnedVersion>,
1384    #[prost(map = "uint32, message", tag = "2", wrapper = "crate::id::WorkerId")]
1385    pub workers: ::std::collections::HashMap<
1386        crate::id::WorkerId,
1387        super::common::WorkerNode,
1388    >,
1389}
1390#[derive(prost_helpers::AnyPB)]
1391#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1392pub struct RiseCtlGetPinnedVersionsSummaryRequest {}
1393#[derive(prost_helpers::AnyPB)]
1394#[derive(Clone, PartialEq, ::prost::Message)]
1395pub struct RiseCtlGetPinnedVersionsSummaryResponse {
1396    #[prost(message, optional, tag = "1")]
1397    pub summary: ::core::option::Option<PinnedVersionsSummary>,
1398}
1399#[derive(prost_helpers::AnyPB)]
1400#[derive(Clone, PartialEq, ::prost::Message)]
1401pub struct InitMetadataForReplayRequest {
1402    #[prost(message, repeated, tag = "1")]
1403    pub tables: ::prost::alloc::vec::Vec<super::catalog::Table>,
1404    #[prost(message, repeated, tag = "2")]
1405    pub compaction_groups: ::prost::alloc::vec::Vec<CompactionGroupInfo>,
1406}
1407#[derive(prost_helpers::AnyPB)]
1408#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1409pub struct InitMetadataForReplayResponse {}
1410#[derive(prost_helpers::AnyPB)]
1411#[derive(Clone, PartialEq, ::prost::Message)]
1412pub struct ReplayVersionDeltaRequest {
1413    #[prost(message, optional, tag = "1")]
1414    pub version_delta: ::core::option::Option<HummockVersionDelta>,
1415}
1416#[derive(prost_helpers::AnyPB)]
1417#[derive(Clone, PartialEq, ::prost::Message)]
1418pub struct ReplayVersionDeltaResponse {
1419    #[prost(message, optional, tag = "1")]
1420    pub version: ::core::option::Option<HummockVersion>,
1421    #[prost(uint64, repeated, tag = "2", wrapper = "crate::id::CompactionGroupId")]
1422    pub modified_compaction_groups: ::prost::alloc::vec::Vec<
1423        crate::id::CompactionGroupId,
1424    >,
1425}
1426#[derive(prost_helpers::AnyPB)]
1427#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1428pub struct TriggerCompactionDeterministicRequest {
1429    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockVersionId")]
1430    pub version_id: crate::id::HummockVersionId,
1431    #[prost(uint64, repeated, tag = "2", wrapper = "crate::id::CompactionGroupId")]
1432    pub compaction_groups: ::prost::alloc::vec::Vec<crate::id::CompactionGroupId>,
1433}
1434#[derive(prost_helpers::AnyPB)]
1435#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1436pub struct TriggerCompactionDeterministicResponse {}
1437#[derive(prost_helpers::AnyPB)]
1438#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1439pub struct DisableCommitEpochRequest {}
1440#[derive(prost_helpers::AnyPB)]
1441#[derive(Clone, PartialEq, ::prost::Message)]
1442pub struct DisableCommitEpochResponse {
1443    #[prost(message, optional, tag = "1")]
1444    pub current_version: ::core::option::Option<HummockVersion>,
1445}
1446#[derive(prost_helpers::AnyPB)]
1447#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1448pub struct RiseCtlListCompactionGroupRequest {}
1449#[derive(prost_helpers::AnyPB)]
1450#[derive(Clone, PartialEq, ::prost::Message)]
1451pub struct RiseCtlListCompactionGroupResponse {
1452    #[prost(message, optional, tag = "1")]
1453    pub status: ::core::option::Option<super::common::Status>,
1454    #[prost(message, repeated, tag = "2")]
1455    pub compaction_groups: ::prost::alloc::vec::Vec<CompactionGroupInfo>,
1456}
1457#[derive(prost_helpers::AnyPB)]
1458#[derive(Clone, PartialEq, ::prost::Message)]
1459pub struct RiseCtlUpdateCompactionConfigRequest {
1460    #[prost(uint64, repeated, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1461    pub compaction_group_ids: ::prost::alloc::vec::Vec<crate::id::CompactionGroupId>,
1462    #[prost(message, repeated, tag = "2")]
1463    pub configs: ::prost::alloc::vec::Vec<
1464        rise_ctl_update_compaction_config_request::MutableConfig,
1465    >,
1466}
1467/// Nested message and enum types in `RiseCtlUpdateCompactionConfigRequest`.
1468pub mod rise_ctl_update_compaction_config_request {
1469    #[derive(prost_helpers::AnyPB)]
1470    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1471    pub struct CompressionAlgorithm {
1472        #[prost(uint32, tag = "1")]
1473        pub level: u32,
1474        #[prost(string, tag = "2")]
1475        pub compression_algorithm: ::prost::alloc::string::String,
1476    }
1477    #[derive(prost_helpers::AnyPB)]
1478    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1479    pub struct MutableConfig {
1480        #[prost(
1481            oneof = "mutable_config::MutableConfig",
1482            tags = "1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34"
1483        )]
1484        pub mutable_config: ::core::option::Option<mutable_config::MutableConfig>,
1485    }
1486    /// Nested message and enum types in `MutableConfig`.
1487    pub mod mutable_config {
1488        #[derive(prost_helpers::AnyPB)]
1489        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1490        pub enum MutableConfig {
1491            #[prost(uint64, tag = "1")]
1492            MaxBytesForLevelBase(u64),
1493            #[prost(uint64, tag = "2")]
1494            MaxBytesForLevelMultiplier(u64),
1495            #[prost(uint64, tag = "3")]
1496            MaxCompactionBytes(u64),
1497            #[prost(uint64, tag = "4")]
1498            SubLevelMaxCompactionBytes(u64),
1499            #[prost(uint64, tag = "6")]
1500            Level0TierCompactFileNumber(u64),
1501            #[prost(uint64, tag = "7")]
1502            TargetFileSizeBase(u64),
1503            #[prost(uint32, tag = "8")]
1504            CompactionFilterMask(u32),
1505            #[prost(uint32, tag = "9")]
1506            MaxSubCompaction(u32),
1507            #[prost(uint64, tag = "10")]
1508            Level0StopWriteThresholdSubLevelNumber(u64),
1509            #[prost(uint32, tag = "11")]
1510            Level0SubLevelCompactLevelCount(u32),
1511            #[prost(uint32, tag = "12")]
1512            Level0OverlappingSubLevelCompactLevelCount(u32),
1513            #[prost(uint64, tag = "13")]
1514            MaxSpaceReclaimBytes(u64),
1515            #[prost(uint64, tag = "14")]
1516            Level0MaxCompactFileNumber(u64),
1517            #[prost(bool, tag = "15")]
1518            EnableEmergencyPicker(bool),
1519            #[prost(uint32, tag = "16")]
1520            TombstoneReclaimRatio(u32),
1521            #[prost(message, tag = "17")]
1522            CompressionAlgorithm(super::CompressionAlgorithm),
1523            #[prost(uint32, tag = "18")]
1524            MaxL0CompactLevelCount(u32),
1525            #[prost(uint64, tag = "19")]
1526            SstAllowedTrivialMoveMinSize(u64),
1527            #[prost(uint32, tag = "20")]
1528            SplitWeightByVnode(u32),
1529            #[prost(bool, tag = "21")]
1530            DisableAutoGroupScheduling(bool),
1531            #[prost(uint64, tag = "22")]
1532            MaxOverlappingLevelSize(u64),
1533            /// The emergency compaction limitations for the level0 sstables file count
1534            #[prost(uint32, tag = "25")]
1535            EmergencyLevel0SstFileCount(u32),
1536            /// The emergency compaction limitations for the level0 sub level partition
1537            #[prost(uint32, tag = "26")]
1538            EmergencyLevel0SubLevelPartition(u32),
1539            /// The limitation of the max sst size of the level0 to trigger the write stop
1540            #[prost(uint32, tag = "27")]
1541            Level0StopWriteThresholdMaxSstCount(u32),
1542            /// The limitation of the max sst size of the level0 to trigger the write stop
1543            #[prost(uint64, tag = "28")]
1544            Level0StopWriteThresholdMaxSize(u64),
1545            /// The limitation of the max sst count of the trivial move task
1546            #[prost(uint32, tag = "29")]
1547            SstAllowedTrivialMoveMaxCount(u32),
1548            /// Enable the optimization of the interval selection for the level0 compaction
1549            #[prost(bool, tag = "30")]
1550            EnableOptimizeL0IntervalSelection(bool),
1551            /// Deprecated. Kept for backward compatibility and ignored by meta.
1552            #[deprecated]
1553            #[prost(uint64, tag = "31")]
1554            VnodeAlignedLevelSizeThreshold(u64),
1555            /// The maximum key-value count threshold for using Xor16 filter
1556            #[prost(uint64, tag = "32")]
1557            MaxKvCountForXor16(u64),
1558            /// Max bytes for vnode key-range hints recorded into each SST.
1559            #[prost(uint64, tag = "33")]
1560            MaxVnodeKeyRangeBytes(u64),
1561            /// Reset compression algorithm for all levels to defaults according to group max_level.
1562            #[prost(bool, tag = "34")]
1563            ResetCompressionAlgorithm(bool),
1564        }
1565    }
1566}
1567#[derive(prost_helpers::AnyPB)]
1568#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1569pub struct RiseCtlUpdateCompactionConfigResponse {
1570    #[prost(message, optional, tag = "1")]
1571    pub status: ::core::option::Option<super::common::Status>,
1572}
1573#[derive(prost_helpers::AnyPB)]
1574#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1575pub struct PinVersionRequest {
1576    #[prost(uint32, tag = "1", wrapper = "crate::id::WorkerId")]
1577    pub context_id: crate::id::WorkerId,
1578}
1579#[derive(prost_helpers::AnyPB)]
1580#[derive(Clone, PartialEq, ::prost::Message)]
1581pub struct PinVersionResponse {
1582    #[prost(message, optional, tag = "1")]
1583    pub pinned_version: ::core::option::Option<HummockVersion>,
1584}
1585#[derive(prost_helpers::AnyPB)]
1586#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1587pub struct SplitCompactionGroupRequest {
1588    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1589    pub group_id: crate::id::CompactionGroupId,
1590    #[prost(uint32, repeated, tag = "2", wrapper = "crate::id::TableId")]
1591    pub table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
1592    #[prost(uint32, tag = "3")]
1593    pub partition_vnode_count: u32,
1594}
1595#[derive(prost_helpers::AnyPB)]
1596#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1597pub struct SplitCompactionGroupResponse {
1598    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1599    pub new_group_id: crate::id::CompactionGroupId,
1600}
1601#[derive(prost_helpers::AnyPB)]
1602#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1603pub struct RiseCtlPauseVersionCheckpointRequest {}
1604#[derive(prost_helpers::AnyPB)]
1605#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1606pub struct RiseCtlPauseVersionCheckpointResponse {}
1607#[derive(prost_helpers::AnyPB)]
1608#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1609pub struct RiseCtlResumeVersionCheckpointRequest {}
1610#[derive(prost_helpers::AnyPB)]
1611#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1612pub struct RiseCtlResumeVersionCheckpointResponse {}
1613#[derive(prost_helpers::AnyPB)]
1614#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1615pub struct RiseCtlGetCheckpointVersionRequest {}
1616#[derive(prost_helpers::AnyPB)]
1617#[derive(Clone, PartialEq, ::prost::Message)]
1618pub struct RiseCtlGetCheckpointVersionResponse {
1619    #[prost(message, optional, tag = "1")]
1620    pub checkpoint_version: ::core::option::Option<HummockVersion>,
1621}
1622#[derive(prost_helpers::AnyPB)]
1623#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1624pub struct RiseCtlListCompactionStatusRequest {}
1625#[derive(prost_helpers::AnyPB)]
1626#[derive(Clone, PartialEq, ::prost::Message)]
1627pub struct RiseCtlListCompactionStatusResponse {
1628    #[prost(message, repeated, tag = "1")]
1629    pub compaction_statuses: ::prost::alloc::vec::Vec<CompactStatus>,
1630    #[prost(message, repeated, tag = "2")]
1631    pub task_assignment: ::prost::alloc::vec::Vec<CompactTaskAssignment>,
1632    #[prost(message, repeated, tag = "3")]
1633    pub task_progress: ::prost::alloc::vec::Vec<CompactTaskProgress>,
1634}
1635#[derive(prost_helpers::AnyPB)]
1636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1637pub struct ListBranchedObjectRequest {}
1638#[derive(prost_helpers::AnyPB)]
1639#[derive(Clone, PartialEq, ::prost::Message)]
1640pub struct ListBranchedObjectResponse {
1641    #[prost(message, repeated, tag = "1")]
1642    pub branched_objects: ::prost::alloc::vec::Vec<BranchedObject>,
1643}
1644#[derive(prost_helpers::AnyPB)]
1645#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1646pub struct ListActiveWriteLimitRequest {}
1647#[derive(prost_helpers::AnyPB)]
1648#[derive(Clone, PartialEq, ::prost::Message)]
1649pub struct ListActiveWriteLimitResponse {
1650    /// \< compaction group id, write limit info >
1651    #[prost(
1652        map = "uint64, message",
1653        tag = "1",
1654        wrapper = "crate::id::CompactionGroupId"
1655    )]
1656    pub write_limits: ::std::collections::HashMap<
1657        crate::id::CompactionGroupId,
1658        write_limits::WriteLimit,
1659    >,
1660}
1661#[derive(prost_helpers::AnyPB)]
1662#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1663pub struct ListHummockMetaConfigRequest {}
1664#[derive(prost_helpers::AnyPB)]
1665#[derive(Clone, PartialEq, ::prost::Message)]
1666pub struct ListHummockMetaConfigResponse {
1667    #[prost(map = "string, string", tag = "1")]
1668    pub configs: ::std::collections::HashMap<
1669        ::prost::alloc::string::String,
1670        ::prost::alloc::string::String,
1671    >,
1672}
1673#[derive(prost_helpers::AnyPB)]
1674#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1675pub struct RiseCtlRebuildTableStatsRequest {}
1676#[derive(prost_helpers::AnyPB)]
1677#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1678pub struct RiseCtlRebuildTableStatsResponse {}
1679#[derive(prost_helpers::AnyPB)]
1680#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1681pub struct GetCompactionScoreRequest {
1682    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1683    pub compaction_group_id: crate::id::CompactionGroupId,
1684}
1685#[derive(prost_helpers::AnyPB)]
1686#[derive(Clone, PartialEq, ::prost::Message)]
1687pub struct GetCompactionScoreResponse {
1688    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1689    pub compaction_group_id: crate::id::CompactionGroupId,
1690    #[prost(message, repeated, tag = "2")]
1691    pub scores: ::prost::alloc::vec::Vec<get_compaction_score_response::PickerInfo>,
1692}
1693/// Nested message and enum types in `GetCompactionScoreResponse`.
1694pub mod get_compaction_score_response {
1695    #[derive(prost_helpers::AnyPB)]
1696    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1697    pub struct PickerInfo {
1698        #[prost(uint64, tag = "1")]
1699        pub score: u64,
1700        #[prost(uint64, tag = "2")]
1701        pub select_level: u64,
1702        #[prost(uint64, tag = "3")]
1703        pub target_level: u64,
1704        #[prost(string, tag = "4")]
1705        pub picker_type: ::prost::alloc::string::String,
1706    }
1707}
1708#[derive(prost_helpers::AnyPB)]
1709#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1710pub struct ListCompactTaskAssignmentRequest {}
1711#[derive(prost_helpers::AnyPB)]
1712#[derive(Clone, PartialEq, ::prost::Message)]
1713pub struct ListCompactTaskAssignmentResponse {
1714    #[prost(message, repeated, tag = "1")]
1715    pub task_assignment: ::prost::alloc::vec::Vec<CompactTaskAssignment>,
1716}
1717#[derive(prost_helpers::AnyPB)]
1718#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1719pub struct ListCompactTaskProgressRequest {}
1720#[derive(prost_helpers::AnyPB)]
1721#[derive(Clone, PartialEq, ::prost::Message)]
1722pub struct ListCompactTaskProgressResponse {
1723    #[prost(message, repeated, tag = "1")]
1724    pub task_progress: ::prost::alloc::vec::Vec<CompactTaskProgress>,
1725}
1726#[derive(prost_helpers::AnyPB)]
1727#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1728pub struct CancelCompactTaskRequest {
1729    #[prost(uint64, tag = "1")]
1730    pub task_id: u64,
1731    #[prost(enumeration = "compact_task::TaskStatus", tag = "2")]
1732    pub task_status: i32,
1733}
1734#[derive(prost_helpers::AnyPB)]
1735#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1736pub struct CancelCompactTaskResponse {
1737    #[prost(bool, tag = "1")]
1738    pub ret: bool,
1739}
1740#[derive(prost_helpers::AnyPB)]
1741#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1742pub struct GetVersionByEpochRequest {
1743    #[prost(uint64, tag = "1")]
1744    pub epoch: u64,
1745    #[prost(uint32, tag = "2", wrapper = "crate::id::TableId")]
1746    pub table_id: crate::id::TableId,
1747}
1748#[derive(prost_helpers::AnyPB)]
1749#[derive(Clone, PartialEq, ::prost::Message)]
1750pub struct GetVersionByEpochResponse {
1751    #[prost(message, optional, tag = "1")]
1752    pub version: ::core::option::Option<HummockVersion>,
1753}
1754#[derive(prost_helpers::AnyPB)]
1755#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1756pub struct MergeCompactionGroupRequest {
1757    #[prost(uint64, tag = "1", wrapper = "crate::id::CompactionGroupId")]
1758    pub left_group_id: crate::id::CompactionGroupId,
1759    #[prost(uint64, tag = "2", wrapper = "crate::id::CompactionGroupId")]
1760    pub right_group_id: crate::id::CompactionGroupId,
1761}
1762#[derive(prost_helpers::AnyPB)]
1763#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1764pub struct MergeCompactionGroupResponse {}
1765#[derive(prost_helpers::AnyPB)]
1766#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1767pub struct CompactionConfig {
1768    #[prost(uint64, tag = "1")]
1769    pub max_bytes_for_level_base: u64,
1770    #[prost(uint64, tag = "2")]
1771    pub max_level: u64,
1772    #[prost(uint64, tag = "3")]
1773    pub max_bytes_for_level_multiplier: u64,
1774    #[prost(uint64, tag = "4")]
1775    pub max_compaction_bytes: u64,
1776    #[prost(uint64, tag = "5")]
1777    pub sub_level_max_compaction_bytes: u64,
1778    #[prost(uint64, tag = "7")]
1779    pub level0_tier_compact_file_number: u64,
1780    #[prost(enumeration = "compaction_config::CompactionMode", tag = "8")]
1781    pub compaction_mode: i32,
1782    #[prost(string, repeated, tag = "9")]
1783    pub compression_algorithm: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1784    #[prost(uint64, tag = "10")]
1785    pub target_file_size_base: u64,
1786    #[prost(uint32, tag = "11")]
1787    pub compaction_filter_mask: u32,
1788    #[prost(uint32, tag = "12")]
1789    pub max_sub_compaction: u32,
1790    #[prost(uint64, tag = "13")]
1791    pub max_space_reclaim_bytes: u64,
1792    #[prost(bool, tag = "14")]
1793    pub split_by_state_table: bool,
1794    /// Compaction needs to cut the state table every time 1/weight of vnodes in the table have been processed.
1795    #[prost(uint32, tag = "6")]
1796    pub split_weight_by_vnode: u32,
1797    /// soft limit for max number of sub level number
1798    #[prost(uint64, tag = "15")]
1799    pub level0_stop_write_threshold_sub_level_number: u64,
1800    #[prost(uint64, tag = "16")]
1801    pub level0_max_compact_file_number: u64,
1802    #[prost(uint32, tag = "17")]
1803    pub level0_sub_level_compact_level_count: u32,
1804    /// for tier compaction pick overlapping level
1805    #[prost(uint32, tag = "18")]
1806    pub level0_overlapping_sub_level_compact_level_count: u32,
1807    #[prost(uint32, tag = "19")]
1808    pub tombstone_reclaim_ratio: u32,
1809    #[prost(bool, tag = "20")]
1810    pub enable_emergency_picker: bool,
1811    /// The limitation of the level count of l0 compaction
1812    #[prost(uint32, optional, tag = "21")]
1813    pub max_l0_compact_level_count: ::core::option::Option<u32>,
1814    /// The limitation of base level trivial move sst size
1815    #[prost(uint64, optional, tag = "22")]
1816    pub sst_allowed_trivial_move_min_size: ::core::option::Option<u64>,
1817    /// The limitation of auto group scheduling
1818    #[prost(bool, optional, tag = "23")]
1819    pub disable_auto_group_scheduling: ::core::option::Option<bool>,
1820    /// The limitation of the max size of the overlapping-level for the compaction
1821    /// hummock will reorg the commit-sstables to the multi overlapping-level if the size of the commit-sstables is larger than `max_overlapping_level_size`
1822    #[prost(uint64, optional, tag = "24")]
1823    pub max_overlapping_level_size: ::core::option::Option<u64>,
1824    /// The emergency compaction limitations for the level0 sstables file count
1825    #[prost(uint32, optional, tag = "25")]
1826    pub emergency_level0_sst_file_count: ::core::option::Option<u32>,
1827    /// The emergency compaction limitations for the level0 sub level partition
1828    #[prost(uint32, optional, tag = "26")]
1829    pub emergency_level0_sub_level_partition: ::core::option::Option<u32>,
1830    /// The limitation of the max sst count of the level0 to trigger the write stop
1831    #[prost(uint32, optional, tag = "27")]
1832    pub level0_stop_write_threshold_max_sst_count: ::core::option::Option<u32>,
1833    /// The limitation of the max sst size of the level0 to trigger the write stop
1834    #[prost(uint64, optional, tag = "28")]
1835    pub level0_stop_write_threshold_max_size: ::core::option::Option<u64>,
1836    /// The limitation of the max sst count of the trivial move task
1837    #[prost(uint32, optional, tag = "29")]
1838    pub sst_allowed_trivial_move_max_count: ::core::option::Option<u32>,
1839    /// Enable the optimization of the interval selection for the level0 compaction
1840    #[prost(bool, optional, tag = "30")]
1841    pub enable_optimize_l0_interval_selection: ::core::option::Option<bool>,
1842    /// Deprecated. Kept for backward compatibility and ignored by meta.
1843    #[deprecated]
1844    #[prost(uint64, optional, tag = "31")]
1845    pub vnode_aligned_level_size_threshold: ::core::option::Option<u64>,
1846    /// The maximum key-value count threshold for using Xor16 filter instead of BlockedXor16 filter.
1847    /// When the number of keys in a compaction task or SST exceeds this threshold,
1848    /// a BlockedXor16 filter will be used instead of a single Xor16 filter.
1849    ///
1850    /// Typical value: 256 * 1024 (256K keys).
1851    #[prost(uint64, optional, tag = "32")]
1852    pub max_kv_count_for_xor16: ::core::option::Option<u64>,
1853    /// Max bytes for vnode key-range hints recorded into each SST.
1854    #[prost(uint64, optional, tag = "33")]
1855    pub max_vnode_key_range_bytes: ::core::option::Option<u64>,
1856}
1857/// Nested message and enum types in `CompactionConfig`.
1858pub mod compaction_config {
1859    #[derive(prost_helpers::AnyPB)]
1860    #[derive(
1861        Clone,
1862        Copy,
1863        Debug,
1864        PartialEq,
1865        Eq,
1866        Hash,
1867        PartialOrd,
1868        Ord,
1869        ::prost::Enumeration
1870    )]
1871    #[repr(i32)]
1872    pub enum CompactionMode {
1873        Unspecified = 0,
1874        Range = 1,
1875    }
1876    impl CompactionMode {
1877        /// String value of the enum field names used in the ProtoBuf definition.
1878        ///
1879        /// The values are not transformed in any way and thus are considered stable
1880        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1881        pub fn as_str_name(&self) -> &'static str {
1882            match self {
1883                Self::Unspecified => "UNSPECIFIED",
1884                Self::Range => "RANGE",
1885            }
1886        }
1887        /// Creates an enum from field names used in the ProtoBuf definition.
1888        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1889            match value {
1890                "UNSPECIFIED" => Some(Self::Unspecified),
1891                "RANGE" => Some(Self::Range),
1892                _ => None,
1893            }
1894        }
1895    }
1896}
1897#[derive(prost_helpers::AnyPB)]
1898#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1899pub struct TableStats {
1900    #[prost(int64, tag = "1")]
1901    pub total_key_size: i64,
1902    #[prost(int64, tag = "2")]
1903    pub total_value_size: i64,
1904    #[prost(int64, tag = "3")]
1905    pub total_key_count: i64,
1906    /// \`total_compressed_size\`` represents the size that the table takes up in the output sst
1907    /// and this field is only filled and used by CN flushes, not compactor compaction
1908    #[prost(uint64, tag = "4")]
1909    pub total_compressed_size: u64,
1910}
1911#[derive(prost_helpers::AnyPB)]
1912#[derive(Clone, PartialEq, ::prost::Message)]
1913pub struct HummockVersionStats {
1914    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockVersionId")]
1915    pub hummock_version_id: crate::id::HummockVersionId,
1916    #[prost(map = "uint32, message", tag = "2", wrapper = "crate::id::TableId")]
1917    pub table_stats: ::std::collections::HashMap<crate::id::TableId, TableStats>,
1918}
1919#[derive(prost_helpers::AnyPB)]
1920#[derive(Clone, PartialEq, ::prost::Message)]
1921pub struct WriteLimits {
1922    /// \< compaction group id, write limit info >
1923    #[prost(
1924        map = "uint64, message",
1925        tag = "1",
1926        wrapper = "crate::id::CompactionGroupId"
1927    )]
1928    pub write_limits: ::std::collections::HashMap<
1929        crate::id::CompactionGroupId,
1930        write_limits::WriteLimit,
1931    >,
1932}
1933/// Nested message and enum types in `WriteLimits`.
1934pub mod write_limits {
1935    #[derive(prost_helpers::AnyPB)]
1936    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1937    pub struct WriteLimit {
1938        #[prost(uint32, repeated, tag = "1", wrapper = "crate::id::TableId")]
1939        pub table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
1940        #[prost(string, tag = "2")]
1941        pub reason: ::prost::alloc::string::String,
1942    }
1943}
1944#[derive(prost_helpers::AnyPB)]
1945#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1946pub struct BranchedObject {
1947    #[prost(uint64, tag = "1", wrapper = "crate::id::HummockSstableObjectId")]
1948    pub object_id: crate::id::HummockSstableObjectId,
1949    #[prost(uint64, repeated, tag = "2", wrapper = "crate::id::HummockSstableId")]
1950    pub sst_id: ::prost::alloc::vec::Vec<crate::id::HummockSstableId>,
1951    /// Compaction group id the SST belongs to.
1952    #[prost(uint64, tag = "3", wrapper = "crate::id::CompactionGroupId")]
1953    pub compaction_group_id: crate::id::CompactionGroupId,
1954}
1955#[derive(prost_helpers::AnyPB)]
1956#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1957#[repr(i32)]
1958pub enum BloomFilterType {
1959    BloomFilterUnspecified = 0,
1960    Sstable = 1,
1961    Blocked = 2,
1962}
1963impl BloomFilterType {
1964    /// String value of the enum field names used in the ProtoBuf definition.
1965    ///
1966    /// The values are not transformed in any way and thus are considered stable
1967    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1968    pub fn as_str_name(&self) -> &'static str {
1969        match self {
1970            Self::BloomFilterUnspecified => "BLOOM_FILTER_UNSPECIFIED",
1971            Self::Sstable => "SSTABLE",
1972            Self::Blocked => "BLOCKED",
1973        }
1974    }
1975    /// Creates an enum from field names used in the ProtoBuf definition.
1976    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1977        match value {
1978            "BLOOM_FILTER_UNSPECIFIED" => Some(Self::BloomFilterUnspecified),
1979            "SSTABLE" => Some(Self::Sstable),
1980            "BLOCKED" => Some(Self::Blocked),
1981            _ => None,
1982        }
1983    }
1984}
1985#[derive(prost_helpers::AnyPB)]
1986#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1987#[repr(i32)]
1988pub enum LevelType {
1989    Unspecified = 0,
1990    Nonoverlapping = 1,
1991    Overlapping = 2,
1992}
1993impl LevelType {
1994    /// String value of the enum field names used in the ProtoBuf definition.
1995    ///
1996    /// The values are not transformed in any way and thus are considered stable
1997    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1998    pub fn as_str_name(&self) -> &'static str {
1999        match self {
2000            Self::Unspecified => "LEVEL_TYPE_UNSPECIFIED",
2001            Self::Nonoverlapping => "LEVEL_TYPE_NONOVERLAPPING",
2002            Self::Overlapping => "LEVEL_TYPE_OVERLAPPING",
2003        }
2004    }
2005    /// Creates an enum from field names used in the ProtoBuf definition.
2006    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2007        match value {
2008            "LEVEL_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2009            "LEVEL_TYPE_NONOVERLAPPING" => Some(Self::Nonoverlapping),
2010            "LEVEL_TYPE_OVERLAPPING" => Some(Self::Overlapping),
2011            _ => None,
2012        }
2013    }
2014}
2015#[derive(prost_helpers::AnyPB)]
2016#[derive(prost_helpers::Version)]
2017#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2018#[repr(i32)]
2019pub enum CompatibilityVersion {
2020    VersionUnspecified = 0,
2021    NoTrivialSplit = 1,
2022    NoMemberTableIds = 2,
2023    SplitGroupByTableId = 3,
2024}
2025impl CompatibilityVersion {
2026    /// String value of the enum field names used in the ProtoBuf definition.
2027    ///
2028    /// The values are not transformed in any way and thus are considered stable
2029    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2030    pub fn as_str_name(&self) -> &'static str {
2031        match self {
2032            Self::VersionUnspecified => "VERSION_UNSPECIFIED",
2033            Self::NoTrivialSplit => "NO_TRIVIAL_SPLIT",
2034            Self::NoMemberTableIds => "NO_MEMBER_TABLE_IDS",
2035            Self::SplitGroupByTableId => "SPLIT_GROUP_BY_TABLE_ID",
2036        }
2037    }
2038    /// Creates an enum from field names used in the ProtoBuf definition.
2039    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2040        match value {
2041            "VERSION_UNSPECIFIED" => Some(Self::VersionUnspecified),
2042            "NO_TRIVIAL_SPLIT" => Some(Self::NoTrivialSplit),
2043            "NO_MEMBER_TABLE_IDS" => Some(Self::NoMemberTableIds),
2044            "SPLIT_GROUP_BY_TABLE_ID" => Some(Self::SplitGroupByTableId),
2045            _ => None,
2046        }
2047    }
2048}
2049#[derive(prost_helpers::AnyPB)]
2050#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2051#[repr(i32)]
2052pub enum WatermarkSerdeType {
2053    TypeUnspecified = 0,
2054    PkPrefix = 1,
2055    NonPkPrefix = 2,
2056    Value = 3,
2057}
2058impl WatermarkSerdeType {
2059    /// String value of the enum field names used in the ProtoBuf definition.
2060    ///
2061    /// The values are not transformed in any way and thus are considered stable
2062    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2063    pub fn as_str_name(&self) -> &'static str {
2064        match self {
2065            Self::TypeUnspecified => "TYPE_UNSPECIFIED",
2066            Self::PkPrefix => "PK_PREFIX",
2067            Self::NonPkPrefix => "NON_PK_PREFIX",
2068            Self::Value => "VALUE",
2069        }
2070    }
2071    /// Creates an enum from field names used in the ProtoBuf definition.
2072    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2073        match value {
2074            "TYPE_UNSPECIFIED" => Some(Self::TypeUnspecified),
2075            "PK_PREFIX" => Some(Self::PkPrefix),
2076            "NON_PK_PREFIX" => Some(Self::NonPkPrefix),
2077            "VALUE" => Some(Self::Value),
2078            _ => None,
2079        }
2080    }
2081}
2082#[derive(prost_helpers::AnyPB)]
2083#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2084#[repr(i32)]
2085pub enum VectorIndexObjectType {
2086    VectorIndexObjectUnspecified = 0,
2087    VectorIndexObjectVector = 1,
2088    VectorIndexObjectHnswGraph = 2,
2089}
2090impl VectorIndexObjectType {
2091    /// String value of the enum field names used in the ProtoBuf definition.
2092    ///
2093    /// The values are not transformed in any way and thus are considered stable
2094    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2095    pub fn as_str_name(&self) -> &'static str {
2096        match self {
2097            Self::VectorIndexObjectUnspecified => "VECTOR_INDEX_OBJECT_UNSPECIFIED",
2098            Self::VectorIndexObjectVector => "VECTOR_INDEX_OBJECT_VECTOR",
2099            Self::VectorIndexObjectHnswGraph => "VECTOR_INDEX_OBJECT_HNSW_GRAPH",
2100        }
2101    }
2102    /// Creates an enum from field names used in the ProtoBuf definition.
2103    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2104        match value {
2105            "VECTOR_INDEX_OBJECT_UNSPECIFIED" => Some(Self::VectorIndexObjectUnspecified),
2106            "VECTOR_INDEX_OBJECT_VECTOR" => Some(Self::VectorIndexObjectVector),
2107            "VECTOR_INDEX_OBJECT_HNSW_GRAPH" => Some(Self::VectorIndexObjectHnswGraph),
2108            _ => None,
2109        }
2110    }
2111}
2112/// Compression algorithm used for checkpoint data serialization.
2113#[derive(prost_helpers::AnyPB)]
2114#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2115#[repr(i32)]
2116pub enum CheckpointCompressionAlgorithm {
2117    /// No compression (uncompressed).
2118    CheckpointCompressionUnspecified = 0,
2119    /// Zstd compression (default, good balance between ratio and speed).
2120    CheckpointCompressionZstd = 1,
2121    /// Lz4 compression (faster but lower compression ratio).
2122    CheckpointCompressionLz4 = 2,
2123}
2124impl CheckpointCompressionAlgorithm {
2125    /// String value of the enum field names used in the ProtoBuf definition.
2126    ///
2127    /// The values are not transformed in any way and thus are considered stable
2128    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2129    pub fn as_str_name(&self) -> &'static str {
2130        match self {
2131            Self::CheckpointCompressionUnspecified => {
2132                "CHECKPOINT_COMPRESSION_UNSPECIFIED"
2133            }
2134            Self::CheckpointCompressionZstd => "CHECKPOINT_COMPRESSION_ZSTD",
2135            Self::CheckpointCompressionLz4 => "CHECKPOINT_COMPRESSION_LZ4",
2136        }
2137    }
2138    /// Creates an enum from field names used in the ProtoBuf definition.
2139    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2140        match value {
2141            "CHECKPOINT_COMPRESSION_UNSPECIFIED" => {
2142                Some(Self::CheckpointCompressionUnspecified)
2143            }
2144            "CHECKPOINT_COMPRESSION_ZSTD" => Some(Self::CheckpointCompressionZstd),
2145            "CHECKPOINT_COMPRESSION_LZ4" => Some(Self::CheckpointCompressionLz4),
2146            _ => None,
2147        }
2148    }
2149}
2150/// Generated client implementations.
2151pub mod hummock_manager_service_client {
2152    #![allow(
2153        unused_variables,
2154        dead_code,
2155        missing_docs,
2156        clippy::wildcard_imports,
2157        clippy::let_unit_value,
2158    )]
2159    use tonic::codegen::*;
2160    use tonic::codegen::http::Uri;
2161    #[derive(Debug, Clone)]
2162    pub struct HummockManagerServiceClient<T> {
2163        inner: tonic::client::Grpc<T>,
2164    }
2165    impl HummockManagerServiceClient<tonic::transport::Channel> {
2166        /// Attempt to create a new client by connecting to a given endpoint.
2167        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2168        where
2169            D: TryInto<tonic::transport::Endpoint>,
2170            D::Error: Into<StdError>,
2171        {
2172            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2173            Ok(Self::new(conn))
2174        }
2175    }
2176    impl<T> HummockManagerServiceClient<T>
2177    where
2178        T: tonic::client::GrpcService<tonic::body::Body>,
2179        T::Error: Into<StdError>,
2180        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2181        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2182    {
2183        pub fn new(inner: T) -> Self {
2184            let inner = tonic::client::Grpc::new(inner);
2185            Self { inner }
2186        }
2187        pub fn with_origin(inner: T, origin: Uri) -> Self {
2188            let inner = tonic::client::Grpc::with_origin(inner, origin);
2189            Self { inner }
2190        }
2191        pub fn with_interceptor<F>(
2192            inner: T,
2193            interceptor: F,
2194        ) -> HummockManagerServiceClient<InterceptedService<T, F>>
2195        where
2196            F: tonic::service::Interceptor,
2197            T::ResponseBody: Default,
2198            T: tonic::codegen::Service<
2199                http::Request<tonic::body::Body>,
2200                Response = http::Response<
2201                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2202                >,
2203            >,
2204            <T as tonic::codegen::Service<
2205                http::Request<tonic::body::Body>,
2206            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2207        {
2208            HummockManagerServiceClient::new(InterceptedService::new(inner, interceptor))
2209        }
2210        /// Compress requests with the given encoding.
2211        ///
2212        /// This requires the server to support it otherwise it might respond with an
2213        /// error.
2214        #[must_use]
2215        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2216            self.inner = self.inner.send_compressed(encoding);
2217            self
2218        }
2219        /// Enable decompressing responses.
2220        #[must_use]
2221        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2222            self.inner = self.inner.accept_compressed(encoding);
2223            self
2224        }
2225        /// Limits the maximum size of a decoded message.
2226        ///
2227        /// Default: `4MB`
2228        #[must_use]
2229        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2230            self.inner = self.inner.max_decoding_message_size(limit);
2231            self
2232        }
2233        /// Limits the maximum size of an encoded message.
2234        ///
2235        /// Default: `usize::MAX`
2236        #[must_use]
2237        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2238            self.inner = self.inner.max_encoding_message_size(limit);
2239            self
2240        }
2241        pub async fn unpin_version_before(
2242            &mut self,
2243            request: impl tonic::IntoRequest<super::UnpinVersionBeforeRequest>,
2244        ) -> std::result::Result<
2245            tonic::Response<super::UnpinVersionBeforeResponse>,
2246            tonic::Status,
2247        > {
2248            self.inner
2249                .ready()
2250                .await
2251                .map_err(|e| {
2252                    tonic::Status::unknown(
2253                        format!("Service was not ready: {}", e.into()),
2254                    )
2255                })?;
2256            let codec = tonic_prost::ProstCodec::default();
2257            let path = http::uri::PathAndQuery::from_static(
2258                "/hummock.HummockManagerService/UnpinVersionBefore",
2259            );
2260            let mut req = request.into_request();
2261            req.extensions_mut()
2262                .insert(
2263                    GrpcMethod::new(
2264                        "hummock.HummockManagerService",
2265                        "UnpinVersionBefore",
2266                    ),
2267                );
2268            self.inner.unary(req, path, codec).await
2269        }
2270        pub async fn get_current_version(
2271            &mut self,
2272            request: impl tonic::IntoRequest<super::GetCurrentVersionRequest>,
2273        ) -> std::result::Result<
2274            tonic::Response<super::GetCurrentVersionResponse>,
2275            tonic::Status,
2276        > {
2277            self.inner
2278                .ready()
2279                .await
2280                .map_err(|e| {
2281                    tonic::Status::unknown(
2282                        format!("Service was not ready: {}", e.into()),
2283                    )
2284                })?;
2285            let codec = tonic_prost::ProstCodec::default();
2286            let path = http::uri::PathAndQuery::from_static(
2287                "/hummock.HummockManagerService/GetCurrentVersion",
2288            );
2289            let mut req = request.into_request();
2290            req.extensions_mut()
2291                .insert(
2292                    GrpcMethod::new("hummock.HummockManagerService", "GetCurrentVersion"),
2293                );
2294            self.inner.unary(req, path, codec).await
2295        }
2296        pub async fn list_version_deltas(
2297            &mut self,
2298            request: impl tonic::IntoRequest<super::ListVersionDeltasRequest>,
2299        ) -> std::result::Result<
2300            tonic::Response<super::ListVersionDeltasResponse>,
2301            tonic::Status,
2302        > {
2303            self.inner
2304                .ready()
2305                .await
2306                .map_err(|e| {
2307                    tonic::Status::unknown(
2308                        format!("Service was not ready: {}", e.into()),
2309                    )
2310                })?;
2311            let codec = tonic_prost::ProstCodec::default();
2312            let path = http::uri::PathAndQuery::from_static(
2313                "/hummock.HummockManagerService/ListVersionDeltas",
2314            );
2315            let mut req = request.into_request();
2316            req.extensions_mut()
2317                .insert(
2318                    GrpcMethod::new("hummock.HummockManagerService", "ListVersionDeltas"),
2319                );
2320            self.inner.unary(req, path, codec).await
2321        }
2322        pub async fn replay_version_delta(
2323            &mut self,
2324            request: impl tonic::IntoRequest<super::ReplayVersionDeltaRequest>,
2325        ) -> std::result::Result<
2326            tonic::Response<super::ReplayVersionDeltaResponse>,
2327            tonic::Status,
2328        > {
2329            self.inner
2330                .ready()
2331                .await
2332                .map_err(|e| {
2333                    tonic::Status::unknown(
2334                        format!("Service was not ready: {}", e.into()),
2335                    )
2336                })?;
2337            let codec = tonic_prost::ProstCodec::default();
2338            let path = http::uri::PathAndQuery::from_static(
2339                "/hummock.HummockManagerService/ReplayVersionDelta",
2340            );
2341            let mut req = request.into_request();
2342            req.extensions_mut()
2343                .insert(
2344                    GrpcMethod::new(
2345                        "hummock.HummockManagerService",
2346                        "ReplayVersionDelta",
2347                    ),
2348                );
2349            self.inner.unary(req, path, codec).await
2350        }
2351        pub async fn get_assigned_compact_task_num(
2352            &mut self,
2353            request: impl tonic::IntoRequest<super::GetAssignedCompactTaskNumRequest>,
2354        ) -> std::result::Result<
2355            tonic::Response<super::GetAssignedCompactTaskNumResponse>,
2356            tonic::Status,
2357        > {
2358            self.inner
2359                .ready()
2360                .await
2361                .map_err(|e| {
2362                    tonic::Status::unknown(
2363                        format!("Service was not ready: {}", e.into()),
2364                    )
2365                })?;
2366            let codec = tonic_prost::ProstCodec::default();
2367            let path = http::uri::PathAndQuery::from_static(
2368                "/hummock.HummockManagerService/GetAssignedCompactTaskNum",
2369            );
2370            let mut req = request.into_request();
2371            req.extensions_mut()
2372                .insert(
2373                    GrpcMethod::new(
2374                        "hummock.HummockManagerService",
2375                        "GetAssignedCompactTaskNum",
2376                    ),
2377                );
2378            self.inner.unary(req, path, codec).await
2379        }
2380        pub async fn trigger_compaction_deterministic(
2381            &mut self,
2382            request: impl tonic::IntoRequest<
2383                super::TriggerCompactionDeterministicRequest,
2384            >,
2385        ) -> std::result::Result<
2386            tonic::Response<super::TriggerCompactionDeterministicResponse>,
2387            tonic::Status,
2388        > {
2389            self.inner
2390                .ready()
2391                .await
2392                .map_err(|e| {
2393                    tonic::Status::unknown(
2394                        format!("Service was not ready: {}", e.into()),
2395                    )
2396                })?;
2397            let codec = tonic_prost::ProstCodec::default();
2398            let path = http::uri::PathAndQuery::from_static(
2399                "/hummock.HummockManagerService/TriggerCompactionDeterministic",
2400            );
2401            let mut req = request.into_request();
2402            req.extensions_mut()
2403                .insert(
2404                    GrpcMethod::new(
2405                        "hummock.HummockManagerService",
2406                        "TriggerCompactionDeterministic",
2407                    ),
2408                );
2409            self.inner.unary(req, path, codec).await
2410        }
2411        pub async fn disable_commit_epoch(
2412            &mut self,
2413            request: impl tonic::IntoRequest<super::DisableCommitEpochRequest>,
2414        ) -> std::result::Result<
2415            tonic::Response<super::DisableCommitEpochResponse>,
2416            tonic::Status,
2417        > {
2418            self.inner
2419                .ready()
2420                .await
2421                .map_err(|e| {
2422                    tonic::Status::unknown(
2423                        format!("Service was not ready: {}", e.into()),
2424                    )
2425                })?;
2426            let codec = tonic_prost::ProstCodec::default();
2427            let path = http::uri::PathAndQuery::from_static(
2428                "/hummock.HummockManagerService/DisableCommitEpoch",
2429            );
2430            let mut req = request.into_request();
2431            req.extensions_mut()
2432                .insert(
2433                    GrpcMethod::new(
2434                        "hummock.HummockManagerService",
2435                        "DisableCommitEpoch",
2436                    ),
2437                );
2438            self.inner.unary(req, path, codec).await
2439        }
2440        pub async fn get_new_object_ids(
2441            &mut self,
2442            request: impl tonic::IntoRequest<super::GetNewObjectIdsRequest>,
2443        ) -> std::result::Result<
2444            tonic::Response<super::GetNewObjectIdsResponse>,
2445            tonic::Status,
2446        > {
2447            self.inner
2448                .ready()
2449                .await
2450                .map_err(|e| {
2451                    tonic::Status::unknown(
2452                        format!("Service was not ready: {}", e.into()),
2453                    )
2454                })?;
2455            let codec = tonic_prost::ProstCodec::default();
2456            let path = http::uri::PathAndQuery::from_static(
2457                "/hummock.HummockManagerService/GetNewObjectIds",
2458            );
2459            let mut req = request.into_request();
2460            req.extensions_mut()
2461                .insert(
2462                    GrpcMethod::new("hummock.HummockManagerService", "GetNewObjectIds"),
2463                );
2464            self.inner.unary(req, path, codec).await
2465        }
2466        pub async fn trigger_manual_compaction(
2467            &mut self,
2468            request: impl tonic::IntoRequest<super::TriggerManualCompactionRequest>,
2469        ) -> std::result::Result<
2470            tonic::Response<super::TriggerManualCompactionResponse>,
2471            tonic::Status,
2472        > {
2473            self.inner
2474                .ready()
2475                .await
2476                .map_err(|e| {
2477                    tonic::Status::unknown(
2478                        format!("Service was not ready: {}", e.into()),
2479                    )
2480                })?;
2481            let codec = tonic_prost::ProstCodec::default();
2482            let path = http::uri::PathAndQuery::from_static(
2483                "/hummock.HummockManagerService/TriggerManualCompaction",
2484            );
2485            let mut req = request.into_request();
2486            req.extensions_mut()
2487                .insert(
2488                    GrpcMethod::new(
2489                        "hummock.HummockManagerService",
2490                        "TriggerManualCompaction",
2491                    ),
2492                );
2493            self.inner.unary(req, path, codec).await
2494        }
2495        pub async fn trigger_full_gc(
2496            &mut self,
2497            request: impl tonic::IntoRequest<super::TriggerFullGcRequest>,
2498        ) -> std::result::Result<
2499            tonic::Response<super::TriggerFullGcResponse>,
2500            tonic::Status,
2501        > {
2502            self.inner
2503                .ready()
2504                .await
2505                .map_err(|e| {
2506                    tonic::Status::unknown(
2507                        format!("Service was not ready: {}", e.into()),
2508                    )
2509                })?;
2510            let codec = tonic_prost::ProstCodec::default();
2511            let path = http::uri::PathAndQuery::from_static(
2512                "/hummock.HummockManagerService/TriggerFullGC",
2513            );
2514            let mut req = request.into_request();
2515            req.extensions_mut()
2516                .insert(
2517                    GrpcMethod::new("hummock.HummockManagerService", "TriggerFullGC"),
2518                );
2519            self.inner.unary(req, path, codec).await
2520        }
2521        pub async fn rise_ctl_get_pinned_versions_summary(
2522            &mut self,
2523            request: impl tonic::IntoRequest<
2524                super::RiseCtlGetPinnedVersionsSummaryRequest,
2525            >,
2526        ) -> std::result::Result<
2527            tonic::Response<super::RiseCtlGetPinnedVersionsSummaryResponse>,
2528            tonic::Status,
2529        > {
2530            self.inner
2531                .ready()
2532                .await
2533                .map_err(|e| {
2534                    tonic::Status::unknown(
2535                        format!("Service was not ready: {}", e.into()),
2536                    )
2537                })?;
2538            let codec = tonic_prost::ProstCodec::default();
2539            let path = http::uri::PathAndQuery::from_static(
2540                "/hummock.HummockManagerService/RiseCtlGetPinnedVersionsSummary",
2541            );
2542            let mut req = request.into_request();
2543            req.extensions_mut()
2544                .insert(
2545                    GrpcMethod::new(
2546                        "hummock.HummockManagerService",
2547                        "RiseCtlGetPinnedVersionsSummary",
2548                    ),
2549                );
2550            self.inner.unary(req, path, codec).await
2551        }
2552        pub async fn rise_ctl_list_compaction_group(
2553            &mut self,
2554            request: impl tonic::IntoRequest<super::RiseCtlListCompactionGroupRequest>,
2555        ) -> std::result::Result<
2556            tonic::Response<super::RiseCtlListCompactionGroupResponse>,
2557            tonic::Status,
2558        > {
2559            self.inner
2560                .ready()
2561                .await
2562                .map_err(|e| {
2563                    tonic::Status::unknown(
2564                        format!("Service was not ready: {}", e.into()),
2565                    )
2566                })?;
2567            let codec = tonic_prost::ProstCodec::default();
2568            let path = http::uri::PathAndQuery::from_static(
2569                "/hummock.HummockManagerService/RiseCtlListCompactionGroup",
2570            );
2571            let mut req = request.into_request();
2572            req.extensions_mut()
2573                .insert(
2574                    GrpcMethod::new(
2575                        "hummock.HummockManagerService",
2576                        "RiseCtlListCompactionGroup",
2577                    ),
2578                );
2579            self.inner.unary(req, path, codec).await
2580        }
2581        pub async fn rise_ctl_update_compaction_config(
2582            &mut self,
2583            request: impl tonic::IntoRequest<super::RiseCtlUpdateCompactionConfigRequest>,
2584        ) -> std::result::Result<
2585            tonic::Response<super::RiseCtlUpdateCompactionConfigResponse>,
2586            tonic::Status,
2587        > {
2588            self.inner
2589                .ready()
2590                .await
2591                .map_err(|e| {
2592                    tonic::Status::unknown(
2593                        format!("Service was not ready: {}", e.into()),
2594                    )
2595                })?;
2596            let codec = tonic_prost::ProstCodec::default();
2597            let path = http::uri::PathAndQuery::from_static(
2598                "/hummock.HummockManagerService/RiseCtlUpdateCompactionConfig",
2599            );
2600            let mut req = request.into_request();
2601            req.extensions_mut()
2602                .insert(
2603                    GrpcMethod::new(
2604                        "hummock.HummockManagerService",
2605                        "RiseCtlUpdateCompactionConfig",
2606                    ),
2607                );
2608            self.inner.unary(req, path, codec).await
2609        }
2610        pub async fn rise_ctl_pause_version_checkpoint(
2611            &mut self,
2612            request: impl tonic::IntoRequest<super::RiseCtlPauseVersionCheckpointRequest>,
2613        ) -> std::result::Result<
2614            tonic::Response<super::RiseCtlPauseVersionCheckpointResponse>,
2615            tonic::Status,
2616        > {
2617            self.inner
2618                .ready()
2619                .await
2620                .map_err(|e| {
2621                    tonic::Status::unknown(
2622                        format!("Service was not ready: {}", e.into()),
2623                    )
2624                })?;
2625            let codec = tonic_prost::ProstCodec::default();
2626            let path = http::uri::PathAndQuery::from_static(
2627                "/hummock.HummockManagerService/RiseCtlPauseVersionCheckpoint",
2628            );
2629            let mut req = request.into_request();
2630            req.extensions_mut()
2631                .insert(
2632                    GrpcMethod::new(
2633                        "hummock.HummockManagerService",
2634                        "RiseCtlPauseVersionCheckpoint",
2635                    ),
2636                );
2637            self.inner.unary(req, path, codec).await
2638        }
2639        pub async fn rise_ctl_resume_version_checkpoint(
2640            &mut self,
2641            request: impl tonic::IntoRequest<
2642                super::RiseCtlResumeVersionCheckpointRequest,
2643            >,
2644        ) -> std::result::Result<
2645            tonic::Response<super::RiseCtlResumeVersionCheckpointResponse>,
2646            tonic::Status,
2647        > {
2648            self.inner
2649                .ready()
2650                .await
2651                .map_err(|e| {
2652                    tonic::Status::unknown(
2653                        format!("Service was not ready: {}", e.into()),
2654                    )
2655                })?;
2656            let codec = tonic_prost::ProstCodec::default();
2657            let path = http::uri::PathAndQuery::from_static(
2658                "/hummock.HummockManagerService/RiseCtlResumeVersionCheckpoint",
2659            );
2660            let mut req = request.into_request();
2661            req.extensions_mut()
2662                .insert(
2663                    GrpcMethod::new(
2664                        "hummock.HummockManagerService",
2665                        "RiseCtlResumeVersionCheckpoint",
2666                    ),
2667                );
2668            self.inner.unary(req, path, codec).await
2669        }
2670        pub async fn rise_ctl_get_checkpoint_version(
2671            &mut self,
2672            request: impl tonic::IntoRequest<super::RiseCtlGetCheckpointVersionRequest>,
2673        ) -> std::result::Result<
2674            tonic::Response<super::RiseCtlGetCheckpointVersionResponse>,
2675            tonic::Status,
2676        > {
2677            self.inner
2678                .ready()
2679                .await
2680                .map_err(|e| {
2681                    tonic::Status::unknown(
2682                        format!("Service was not ready: {}", e.into()),
2683                    )
2684                })?;
2685            let codec = tonic_prost::ProstCodec::default();
2686            let path = http::uri::PathAndQuery::from_static(
2687                "/hummock.HummockManagerService/RiseCtlGetCheckpointVersion",
2688            );
2689            let mut req = request.into_request();
2690            req.extensions_mut()
2691                .insert(
2692                    GrpcMethod::new(
2693                        "hummock.HummockManagerService",
2694                        "RiseCtlGetCheckpointVersion",
2695                    ),
2696                );
2697            self.inner.unary(req, path, codec).await
2698        }
2699        pub async fn rise_ctl_rebuild_table_stats(
2700            &mut self,
2701            request: impl tonic::IntoRequest<super::RiseCtlRebuildTableStatsRequest>,
2702        ) -> std::result::Result<
2703            tonic::Response<super::RiseCtlRebuildTableStatsResponse>,
2704            tonic::Status,
2705        > {
2706            self.inner
2707                .ready()
2708                .await
2709                .map_err(|e| {
2710                    tonic::Status::unknown(
2711                        format!("Service was not ready: {}", e.into()),
2712                    )
2713                })?;
2714            let codec = tonic_prost::ProstCodec::default();
2715            let path = http::uri::PathAndQuery::from_static(
2716                "/hummock.HummockManagerService/RiseCtlRebuildTableStats",
2717            );
2718            let mut req = request.into_request();
2719            req.extensions_mut()
2720                .insert(
2721                    GrpcMethod::new(
2722                        "hummock.HummockManagerService",
2723                        "RiseCtlRebuildTableStats",
2724                    ),
2725                );
2726            self.inner.unary(req, path, codec).await
2727        }
2728        pub async fn init_metadata_for_replay(
2729            &mut self,
2730            request: impl tonic::IntoRequest<super::InitMetadataForReplayRequest>,
2731        ) -> std::result::Result<
2732            tonic::Response<super::InitMetadataForReplayResponse>,
2733            tonic::Status,
2734        > {
2735            self.inner
2736                .ready()
2737                .await
2738                .map_err(|e| {
2739                    tonic::Status::unknown(
2740                        format!("Service was not ready: {}", e.into()),
2741                    )
2742                })?;
2743            let codec = tonic_prost::ProstCodec::default();
2744            let path = http::uri::PathAndQuery::from_static(
2745                "/hummock.HummockManagerService/InitMetadataForReplay",
2746            );
2747            let mut req = request.into_request();
2748            req.extensions_mut()
2749                .insert(
2750                    GrpcMethod::new(
2751                        "hummock.HummockManagerService",
2752                        "InitMetadataForReplay",
2753                    ),
2754                );
2755            self.inner.unary(req, path, codec).await
2756        }
2757        pub async fn pin_version(
2758            &mut self,
2759            request: impl tonic::IntoRequest<super::PinVersionRequest>,
2760        ) -> std::result::Result<
2761            tonic::Response<super::PinVersionResponse>,
2762            tonic::Status,
2763        > {
2764            self.inner
2765                .ready()
2766                .await
2767                .map_err(|e| {
2768                    tonic::Status::unknown(
2769                        format!("Service was not ready: {}", e.into()),
2770                    )
2771                })?;
2772            let codec = tonic_prost::ProstCodec::default();
2773            let path = http::uri::PathAndQuery::from_static(
2774                "/hummock.HummockManagerService/PinVersion",
2775            );
2776            let mut req = request.into_request();
2777            req.extensions_mut()
2778                .insert(GrpcMethod::new("hummock.HummockManagerService", "PinVersion"));
2779            self.inner.unary(req, path, codec).await
2780        }
2781        pub async fn split_compaction_group(
2782            &mut self,
2783            request: impl tonic::IntoRequest<super::SplitCompactionGroupRequest>,
2784        ) -> std::result::Result<
2785            tonic::Response<super::SplitCompactionGroupResponse>,
2786            tonic::Status,
2787        > {
2788            self.inner
2789                .ready()
2790                .await
2791                .map_err(|e| {
2792                    tonic::Status::unknown(
2793                        format!("Service was not ready: {}", e.into()),
2794                    )
2795                })?;
2796            let codec = tonic_prost::ProstCodec::default();
2797            let path = http::uri::PathAndQuery::from_static(
2798                "/hummock.HummockManagerService/SplitCompactionGroup",
2799            );
2800            let mut req = request.into_request();
2801            req.extensions_mut()
2802                .insert(
2803                    GrpcMethod::new(
2804                        "hummock.HummockManagerService",
2805                        "SplitCompactionGroup",
2806                    ),
2807                );
2808            self.inner.unary(req, path, codec).await
2809        }
2810        pub async fn rise_ctl_list_compaction_status(
2811            &mut self,
2812            request: impl tonic::IntoRequest<super::RiseCtlListCompactionStatusRequest>,
2813        ) -> std::result::Result<
2814            tonic::Response<super::RiseCtlListCompactionStatusResponse>,
2815            tonic::Status,
2816        > {
2817            self.inner
2818                .ready()
2819                .await
2820                .map_err(|e| {
2821                    tonic::Status::unknown(
2822                        format!("Service was not ready: {}", e.into()),
2823                    )
2824                })?;
2825            let codec = tonic_prost::ProstCodec::default();
2826            let path = http::uri::PathAndQuery::from_static(
2827                "/hummock.HummockManagerService/RiseCtlListCompactionStatus",
2828            );
2829            let mut req = request.into_request();
2830            req.extensions_mut()
2831                .insert(
2832                    GrpcMethod::new(
2833                        "hummock.HummockManagerService",
2834                        "RiseCtlListCompactionStatus",
2835                    ),
2836                );
2837            self.inner.unary(req, path, codec).await
2838        }
2839        pub async fn subscribe_compaction_event(
2840            &mut self,
2841            request: impl tonic::IntoStreamingRequest<
2842                Message = super::SubscribeCompactionEventRequest,
2843            >,
2844        ) -> std::result::Result<
2845            tonic::Response<
2846                tonic::codec::Streaming<super::SubscribeCompactionEventResponse>,
2847            >,
2848            tonic::Status,
2849        > {
2850            self.inner
2851                .ready()
2852                .await
2853                .map_err(|e| {
2854                    tonic::Status::unknown(
2855                        format!("Service was not ready: {}", e.into()),
2856                    )
2857                })?;
2858            let codec = tonic_prost::ProstCodec::default();
2859            let path = http::uri::PathAndQuery::from_static(
2860                "/hummock.HummockManagerService/SubscribeCompactionEvent",
2861            );
2862            let mut req = request.into_streaming_request();
2863            req.extensions_mut()
2864                .insert(
2865                    GrpcMethod::new(
2866                        "hummock.HummockManagerService",
2867                        "SubscribeCompactionEvent",
2868                    ),
2869                );
2870            self.inner.streaming(req, path, codec).await
2871        }
2872        pub async fn report_compaction_task(
2873            &mut self,
2874            request: impl tonic::IntoRequest<super::ReportCompactionTaskRequest>,
2875        ) -> std::result::Result<
2876            tonic::Response<super::ReportCompactionTaskResponse>,
2877            tonic::Status,
2878        > {
2879            self.inner
2880                .ready()
2881                .await
2882                .map_err(|e| {
2883                    tonic::Status::unknown(
2884                        format!("Service was not ready: {}", e.into()),
2885                    )
2886                })?;
2887            let codec = tonic_prost::ProstCodec::default();
2888            let path = http::uri::PathAndQuery::from_static(
2889                "/hummock.HummockManagerService/ReportCompactionTask",
2890            );
2891            let mut req = request.into_request();
2892            req.extensions_mut()
2893                .insert(
2894                    GrpcMethod::new(
2895                        "hummock.HummockManagerService",
2896                        "ReportCompactionTask",
2897                    ),
2898                );
2899            self.inner.unary(req, path, codec).await
2900        }
2901        pub async fn list_branched_object(
2902            &mut self,
2903            request: impl tonic::IntoRequest<super::ListBranchedObjectRequest>,
2904        ) -> std::result::Result<
2905            tonic::Response<super::ListBranchedObjectResponse>,
2906            tonic::Status,
2907        > {
2908            self.inner
2909                .ready()
2910                .await
2911                .map_err(|e| {
2912                    tonic::Status::unknown(
2913                        format!("Service was not ready: {}", e.into()),
2914                    )
2915                })?;
2916            let codec = tonic_prost::ProstCodec::default();
2917            let path = http::uri::PathAndQuery::from_static(
2918                "/hummock.HummockManagerService/ListBranchedObject",
2919            );
2920            let mut req = request.into_request();
2921            req.extensions_mut()
2922                .insert(
2923                    GrpcMethod::new(
2924                        "hummock.HummockManagerService",
2925                        "ListBranchedObject",
2926                    ),
2927                );
2928            self.inner.unary(req, path, codec).await
2929        }
2930        pub async fn list_active_write_limit(
2931            &mut self,
2932            request: impl tonic::IntoRequest<super::ListActiveWriteLimitRequest>,
2933        ) -> std::result::Result<
2934            tonic::Response<super::ListActiveWriteLimitResponse>,
2935            tonic::Status,
2936        > {
2937            self.inner
2938                .ready()
2939                .await
2940                .map_err(|e| {
2941                    tonic::Status::unknown(
2942                        format!("Service was not ready: {}", e.into()),
2943                    )
2944                })?;
2945            let codec = tonic_prost::ProstCodec::default();
2946            let path = http::uri::PathAndQuery::from_static(
2947                "/hummock.HummockManagerService/ListActiveWriteLimit",
2948            );
2949            let mut req = request.into_request();
2950            req.extensions_mut()
2951                .insert(
2952                    GrpcMethod::new(
2953                        "hummock.HummockManagerService",
2954                        "ListActiveWriteLimit",
2955                    ),
2956                );
2957            self.inner.unary(req, path, codec).await
2958        }
2959        pub async fn list_hummock_meta_config(
2960            &mut self,
2961            request: impl tonic::IntoRequest<super::ListHummockMetaConfigRequest>,
2962        ) -> std::result::Result<
2963            tonic::Response<super::ListHummockMetaConfigResponse>,
2964            tonic::Status,
2965        > {
2966            self.inner
2967                .ready()
2968                .await
2969                .map_err(|e| {
2970                    tonic::Status::unknown(
2971                        format!("Service was not ready: {}", e.into()),
2972                    )
2973                })?;
2974            let codec = tonic_prost::ProstCodec::default();
2975            let path = http::uri::PathAndQuery::from_static(
2976                "/hummock.HummockManagerService/ListHummockMetaConfig",
2977            );
2978            let mut req = request.into_request();
2979            req.extensions_mut()
2980                .insert(
2981                    GrpcMethod::new(
2982                        "hummock.HummockManagerService",
2983                        "ListHummockMetaConfig",
2984                    ),
2985                );
2986            self.inner.unary(req, path, codec).await
2987        }
2988        pub async fn get_compaction_score(
2989            &mut self,
2990            request: impl tonic::IntoRequest<super::GetCompactionScoreRequest>,
2991        ) -> std::result::Result<
2992            tonic::Response<super::GetCompactionScoreResponse>,
2993            tonic::Status,
2994        > {
2995            self.inner
2996                .ready()
2997                .await
2998                .map_err(|e| {
2999                    tonic::Status::unknown(
3000                        format!("Service was not ready: {}", e.into()),
3001                    )
3002                })?;
3003            let codec = tonic_prost::ProstCodec::default();
3004            let path = http::uri::PathAndQuery::from_static(
3005                "/hummock.HummockManagerService/GetCompactionScore",
3006            );
3007            let mut req = request.into_request();
3008            req.extensions_mut()
3009                .insert(
3010                    GrpcMethod::new(
3011                        "hummock.HummockManagerService",
3012                        "GetCompactionScore",
3013                    ),
3014                );
3015            self.inner.unary(req, path, codec).await
3016        }
3017        pub async fn list_compact_task_assignment(
3018            &mut self,
3019            request: impl tonic::IntoRequest<super::ListCompactTaskAssignmentRequest>,
3020        ) -> std::result::Result<
3021            tonic::Response<super::ListCompactTaskAssignmentResponse>,
3022            tonic::Status,
3023        > {
3024            self.inner
3025                .ready()
3026                .await
3027                .map_err(|e| {
3028                    tonic::Status::unknown(
3029                        format!("Service was not ready: {}", e.into()),
3030                    )
3031                })?;
3032            let codec = tonic_prost::ProstCodec::default();
3033            let path = http::uri::PathAndQuery::from_static(
3034                "/hummock.HummockManagerService/ListCompactTaskAssignment",
3035            );
3036            let mut req = request.into_request();
3037            req.extensions_mut()
3038                .insert(
3039                    GrpcMethod::new(
3040                        "hummock.HummockManagerService",
3041                        "ListCompactTaskAssignment",
3042                    ),
3043                );
3044            self.inner.unary(req, path, codec).await
3045        }
3046        pub async fn list_compact_task_progress(
3047            &mut self,
3048            request: impl tonic::IntoRequest<super::ListCompactTaskProgressRequest>,
3049        ) -> std::result::Result<
3050            tonic::Response<super::ListCompactTaskProgressResponse>,
3051            tonic::Status,
3052        > {
3053            self.inner
3054                .ready()
3055                .await
3056                .map_err(|e| {
3057                    tonic::Status::unknown(
3058                        format!("Service was not ready: {}", e.into()),
3059                    )
3060                })?;
3061            let codec = tonic_prost::ProstCodec::default();
3062            let path = http::uri::PathAndQuery::from_static(
3063                "/hummock.HummockManagerService/ListCompactTaskProgress",
3064            );
3065            let mut req = request.into_request();
3066            req.extensions_mut()
3067                .insert(
3068                    GrpcMethod::new(
3069                        "hummock.HummockManagerService",
3070                        "ListCompactTaskProgress",
3071                    ),
3072                );
3073            self.inner.unary(req, path, codec).await
3074        }
3075        pub async fn cancel_compact_task(
3076            &mut self,
3077            request: impl tonic::IntoRequest<super::CancelCompactTaskRequest>,
3078        ) -> std::result::Result<
3079            tonic::Response<super::CancelCompactTaskResponse>,
3080            tonic::Status,
3081        > {
3082            self.inner
3083                .ready()
3084                .await
3085                .map_err(|e| {
3086                    tonic::Status::unknown(
3087                        format!("Service was not ready: {}", e.into()),
3088                    )
3089                })?;
3090            let codec = tonic_prost::ProstCodec::default();
3091            let path = http::uri::PathAndQuery::from_static(
3092                "/hummock.HummockManagerService/CancelCompactTask",
3093            );
3094            let mut req = request.into_request();
3095            req.extensions_mut()
3096                .insert(
3097                    GrpcMethod::new("hummock.HummockManagerService", "CancelCompactTask"),
3098                );
3099            self.inner.unary(req, path, codec).await
3100        }
3101        pub async fn get_version_by_epoch(
3102            &mut self,
3103            request: impl tonic::IntoRequest<super::GetVersionByEpochRequest>,
3104        ) -> std::result::Result<
3105            tonic::Response<super::GetVersionByEpochResponse>,
3106            tonic::Status,
3107        > {
3108            self.inner
3109                .ready()
3110                .await
3111                .map_err(|e| {
3112                    tonic::Status::unknown(
3113                        format!("Service was not ready: {}", e.into()),
3114                    )
3115                })?;
3116            let codec = tonic_prost::ProstCodec::default();
3117            let path = http::uri::PathAndQuery::from_static(
3118                "/hummock.HummockManagerService/GetVersionByEpoch",
3119            );
3120            let mut req = request.into_request();
3121            req.extensions_mut()
3122                .insert(
3123                    GrpcMethod::new("hummock.HummockManagerService", "GetVersionByEpoch"),
3124                );
3125            self.inner.unary(req, path, codec).await
3126        }
3127        pub async fn merge_compaction_group(
3128            &mut self,
3129            request: impl tonic::IntoRequest<super::MergeCompactionGroupRequest>,
3130        ) -> std::result::Result<
3131            tonic::Response<super::MergeCompactionGroupResponse>,
3132            tonic::Status,
3133        > {
3134            self.inner
3135                .ready()
3136                .await
3137                .map_err(|e| {
3138                    tonic::Status::unknown(
3139                        format!("Service was not ready: {}", e.into()),
3140                    )
3141                })?;
3142            let codec = tonic_prost::ProstCodec::default();
3143            let path = http::uri::PathAndQuery::from_static(
3144                "/hummock.HummockManagerService/MergeCompactionGroup",
3145            );
3146            let mut req = request.into_request();
3147            req.extensions_mut()
3148                .insert(
3149                    GrpcMethod::new(
3150                        "hummock.HummockManagerService",
3151                        "MergeCompactionGroup",
3152                    ),
3153                );
3154            self.inner.unary(req, path, codec).await
3155        }
3156        pub async fn get_table_change_logs(
3157            &mut self,
3158            request: impl tonic::IntoRequest<super::GetTableChangeLogsRequest>,
3159        ) -> std::result::Result<
3160            tonic::Response<super::GetTableChangeLogsResponse>,
3161            tonic::Status,
3162        > {
3163            self.inner
3164                .ready()
3165                .await
3166                .map_err(|e| {
3167                    tonic::Status::unknown(
3168                        format!("Service was not ready: {}", e.into()),
3169                    )
3170                })?;
3171            let codec = tonic_prost::ProstCodec::default();
3172            let path = http::uri::PathAndQuery::from_static(
3173                "/hummock.HummockManagerService/GetTableChangeLogs",
3174            );
3175            let mut req = request.into_request();
3176            req.extensions_mut()
3177                .insert(
3178                    GrpcMethod::new(
3179                        "hummock.HummockManagerService",
3180                        "GetTableChangeLogs",
3181                    ),
3182                );
3183            self.inner.unary(req, path, codec).await
3184        }
3185        /// iceberg
3186        pub async fn subscribe_iceberg_compaction_event(
3187            &mut self,
3188            request: impl tonic::IntoStreamingRequest<
3189                Message = super::super::iceberg_compaction::SubscribeIcebergCompactionEventRequest,
3190            >,
3191        ) -> std::result::Result<
3192            tonic::Response<
3193                tonic::codec::Streaming<
3194                    super::super::iceberg_compaction::SubscribeIcebergCompactionEventResponse,
3195                >,
3196            >,
3197            tonic::Status,
3198        > {
3199            self.inner
3200                .ready()
3201                .await
3202                .map_err(|e| {
3203                    tonic::Status::unknown(
3204                        format!("Service was not ready: {}", e.into()),
3205                    )
3206                })?;
3207            let codec = tonic_prost::ProstCodec::default();
3208            let path = http::uri::PathAndQuery::from_static(
3209                "/hummock.HummockManagerService/SubscribeIcebergCompactionEvent",
3210            );
3211            let mut req = request.into_streaming_request();
3212            req.extensions_mut()
3213                .insert(
3214                    GrpcMethod::new(
3215                        "hummock.HummockManagerService",
3216                        "SubscribeIcebergCompactionEvent",
3217                    ),
3218                );
3219            self.inner.streaming(req, path, codec).await
3220        }
3221    }
3222}
3223/// Generated server implementations.
3224pub mod hummock_manager_service_server {
3225    #![allow(
3226        unused_variables,
3227        dead_code,
3228        missing_docs,
3229        clippy::wildcard_imports,
3230        clippy::let_unit_value,
3231    )]
3232    use tonic::codegen::*;
3233    /// Generated trait containing gRPC methods that should be implemented for use with HummockManagerServiceServer.
3234    #[async_trait]
3235    pub trait HummockManagerService: std::marker::Send + std::marker::Sync + 'static {
3236        async fn unpin_version_before(
3237            &self,
3238            request: tonic::Request<super::UnpinVersionBeforeRequest>,
3239        ) -> std::result::Result<
3240            tonic::Response<super::UnpinVersionBeforeResponse>,
3241            tonic::Status,
3242        >;
3243        async fn get_current_version(
3244            &self,
3245            request: tonic::Request<super::GetCurrentVersionRequest>,
3246        ) -> std::result::Result<
3247            tonic::Response<super::GetCurrentVersionResponse>,
3248            tonic::Status,
3249        >;
3250        async fn list_version_deltas(
3251            &self,
3252            request: tonic::Request<super::ListVersionDeltasRequest>,
3253        ) -> std::result::Result<
3254            tonic::Response<super::ListVersionDeltasResponse>,
3255            tonic::Status,
3256        >;
3257        async fn replay_version_delta(
3258            &self,
3259            request: tonic::Request<super::ReplayVersionDeltaRequest>,
3260        ) -> std::result::Result<
3261            tonic::Response<super::ReplayVersionDeltaResponse>,
3262            tonic::Status,
3263        >;
3264        async fn get_assigned_compact_task_num(
3265            &self,
3266            request: tonic::Request<super::GetAssignedCompactTaskNumRequest>,
3267        ) -> std::result::Result<
3268            tonic::Response<super::GetAssignedCompactTaskNumResponse>,
3269            tonic::Status,
3270        >;
3271        async fn trigger_compaction_deterministic(
3272            &self,
3273            request: tonic::Request<super::TriggerCompactionDeterministicRequest>,
3274        ) -> std::result::Result<
3275            tonic::Response<super::TriggerCompactionDeterministicResponse>,
3276            tonic::Status,
3277        >;
3278        async fn disable_commit_epoch(
3279            &self,
3280            request: tonic::Request<super::DisableCommitEpochRequest>,
3281        ) -> std::result::Result<
3282            tonic::Response<super::DisableCommitEpochResponse>,
3283            tonic::Status,
3284        >;
3285        async fn get_new_object_ids(
3286            &self,
3287            request: tonic::Request<super::GetNewObjectIdsRequest>,
3288        ) -> std::result::Result<
3289            tonic::Response<super::GetNewObjectIdsResponse>,
3290            tonic::Status,
3291        >;
3292        async fn trigger_manual_compaction(
3293            &self,
3294            request: tonic::Request<super::TriggerManualCompactionRequest>,
3295        ) -> std::result::Result<
3296            tonic::Response<super::TriggerManualCompactionResponse>,
3297            tonic::Status,
3298        >;
3299        async fn trigger_full_gc(
3300            &self,
3301            request: tonic::Request<super::TriggerFullGcRequest>,
3302        ) -> std::result::Result<
3303            tonic::Response<super::TriggerFullGcResponse>,
3304            tonic::Status,
3305        >;
3306        async fn rise_ctl_get_pinned_versions_summary(
3307            &self,
3308            request: tonic::Request<super::RiseCtlGetPinnedVersionsSummaryRequest>,
3309        ) -> std::result::Result<
3310            tonic::Response<super::RiseCtlGetPinnedVersionsSummaryResponse>,
3311            tonic::Status,
3312        >;
3313        async fn rise_ctl_list_compaction_group(
3314            &self,
3315            request: tonic::Request<super::RiseCtlListCompactionGroupRequest>,
3316        ) -> std::result::Result<
3317            tonic::Response<super::RiseCtlListCompactionGroupResponse>,
3318            tonic::Status,
3319        >;
3320        async fn rise_ctl_update_compaction_config(
3321            &self,
3322            request: tonic::Request<super::RiseCtlUpdateCompactionConfigRequest>,
3323        ) -> std::result::Result<
3324            tonic::Response<super::RiseCtlUpdateCompactionConfigResponse>,
3325            tonic::Status,
3326        >;
3327        async fn rise_ctl_pause_version_checkpoint(
3328            &self,
3329            request: tonic::Request<super::RiseCtlPauseVersionCheckpointRequest>,
3330        ) -> std::result::Result<
3331            tonic::Response<super::RiseCtlPauseVersionCheckpointResponse>,
3332            tonic::Status,
3333        >;
3334        async fn rise_ctl_resume_version_checkpoint(
3335            &self,
3336            request: tonic::Request<super::RiseCtlResumeVersionCheckpointRequest>,
3337        ) -> std::result::Result<
3338            tonic::Response<super::RiseCtlResumeVersionCheckpointResponse>,
3339            tonic::Status,
3340        >;
3341        async fn rise_ctl_get_checkpoint_version(
3342            &self,
3343            request: tonic::Request<super::RiseCtlGetCheckpointVersionRequest>,
3344        ) -> std::result::Result<
3345            tonic::Response<super::RiseCtlGetCheckpointVersionResponse>,
3346            tonic::Status,
3347        >;
3348        async fn rise_ctl_rebuild_table_stats(
3349            &self,
3350            request: tonic::Request<super::RiseCtlRebuildTableStatsRequest>,
3351        ) -> std::result::Result<
3352            tonic::Response<super::RiseCtlRebuildTableStatsResponse>,
3353            tonic::Status,
3354        >;
3355        async fn init_metadata_for_replay(
3356            &self,
3357            request: tonic::Request<super::InitMetadataForReplayRequest>,
3358        ) -> std::result::Result<
3359            tonic::Response<super::InitMetadataForReplayResponse>,
3360            tonic::Status,
3361        >;
3362        async fn pin_version(
3363            &self,
3364            request: tonic::Request<super::PinVersionRequest>,
3365        ) -> std::result::Result<
3366            tonic::Response<super::PinVersionResponse>,
3367            tonic::Status,
3368        >;
3369        async fn split_compaction_group(
3370            &self,
3371            request: tonic::Request<super::SplitCompactionGroupRequest>,
3372        ) -> std::result::Result<
3373            tonic::Response<super::SplitCompactionGroupResponse>,
3374            tonic::Status,
3375        >;
3376        async fn rise_ctl_list_compaction_status(
3377            &self,
3378            request: tonic::Request<super::RiseCtlListCompactionStatusRequest>,
3379        ) -> std::result::Result<
3380            tonic::Response<super::RiseCtlListCompactionStatusResponse>,
3381            tonic::Status,
3382        >;
3383        /// Server streaming response type for the SubscribeCompactionEvent method.
3384        type SubscribeCompactionEventStream: tonic::codegen::tokio_stream::Stream<
3385                Item = std::result::Result<
3386                    super::SubscribeCompactionEventResponse,
3387                    tonic::Status,
3388                >,
3389            >
3390            + std::marker::Send
3391            + 'static;
3392        async fn subscribe_compaction_event(
3393            &self,
3394            request: tonic::Request<
3395                tonic::Streaming<super::SubscribeCompactionEventRequest>,
3396            >,
3397        ) -> std::result::Result<
3398            tonic::Response<Self::SubscribeCompactionEventStream>,
3399            tonic::Status,
3400        >;
3401        async fn report_compaction_task(
3402            &self,
3403            request: tonic::Request<super::ReportCompactionTaskRequest>,
3404        ) -> std::result::Result<
3405            tonic::Response<super::ReportCompactionTaskResponse>,
3406            tonic::Status,
3407        >;
3408        async fn list_branched_object(
3409            &self,
3410            request: tonic::Request<super::ListBranchedObjectRequest>,
3411        ) -> std::result::Result<
3412            tonic::Response<super::ListBranchedObjectResponse>,
3413            tonic::Status,
3414        >;
3415        async fn list_active_write_limit(
3416            &self,
3417            request: tonic::Request<super::ListActiveWriteLimitRequest>,
3418        ) -> std::result::Result<
3419            tonic::Response<super::ListActiveWriteLimitResponse>,
3420            tonic::Status,
3421        >;
3422        async fn list_hummock_meta_config(
3423            &self,
3424            request: tonic::Request<super::ListHummockMetaConfigRequest>,
3425        ) -> std::result::Result<
3426            tonic::Response<super::ListHummockMetaConfigResponse>,
3427            tonic::Status,
3428        >;
3429        async fn get_compaction_score(
3430            &self,
3431            request: tonic::Request<super::GetCompactionScoreRequest>,
3432        ) -> std::result::Result<
3433            tonic::Response<super::GetCompactionScoreResponse>,
3434            tonic::Status,
3435        >;
3436        async fn list_compact_task_assignment(
3437            &self,
3438            request: tonic::Request<super::ListCompactTaskAssignmentRequest>,
3439        ) -> std::result::Result<
3440            tonic::Response<super::ListCompactTaskAssignmentResponse>,
3441            tonic::Status,
3442        >;
3443        async fn list_compact_task_progress(
3444            &self,
3445            request: tonic::Request<super::ListCompactTaskProgressRequest>,
3446        ) -> std::result::Result<
3447            tonic::Response<super::ListCompactTaskProgressResponse>,
3448            tonic::Status,
3449        >;
3450        async fn cancel_compact_task(
3451            &self,
3452            request: tonic::Request<super::CancelCompactTaskRequest>,
3453        ) -> std::result::Result<
3454            tonic::Response<super::CancelCompactTaskResponse>,
3455            tonic::Status,
3456        >;
3457        async fn get_version_by_epoch(
3458            &self,
3459            request: tonic::Request<super::GetVersionByEpochRequest>,
3460        ) -> std::result::Result<
3461            tonic::Response<super::GetVersionByEpochResponse>,
3462            tonic::Status,
3463        >;
3464        async fn merge_compaction_group(
3465            &self,
3466            request: tonic::Request<super::MergeCompactionGroupRequest>,
3467        ) -> std::result::Result<
3468            tonic::Response<super::MergeCompactionGroupResponse>,
3469            tonic::Status,
3470        >;
3471        async fn get_table_change_logs(
3472            &self,
3473            request: tonic::Request<super::GetTableChangeLogsRequest>,
3474        ) -> std::result::Result<
3475            tonic::Response<super::GetTableChangeLogsResponse>,
3476            tonic::Status,
3477        >;
3478        /// Server streaming response type for the SubscribeIcebergCompactionEvent method.
3479        type SubscribeIcebergCompactionEventStream: tonic::codegen::tokio_stream::Stream<
3480                Item = std::result::Result<
3481                    super::super::iceberg_compaction::SubscribeIcebergCompactionEventResponse,
3482                    tonic::Status,
3483                >,
3484            >
3485            + std::marker::Send
3486            + 'static;
3487        /// iceberg
3488        async fn subscribe_iceberg_compaction_event(
3489            &self,
3490            request: tonic::Request<
3491                tonic::Streaming<
3492                    super::super::iceberg_compaction::SubscribeIcebergCompactionEventRequest,
3493                >,
3494            >,
3495        ) -> std::result::Result<
3496            tonic::Response<Self::SubscribeIcebergCompactionEventStream>,
3497            tonic::Status,
3498        >;
3499    }
3500    #[derive(Debug)]
3501    pub struct HummockManagerServiceServer<T> {
3502        inner: Arc<T>,
3503        accept_compression_encodings: EnabledCompressionEncodings,
3504        send_compression_encodings: EnabledCompressionEncodings,
3505        max_decoding_message_size: Option<usize>,
3506        max_encoding_message_size: Option<usize>,
3507    }
3508    impl<T> HummockManagerServiceServer<T> {
3509        pub fn new(inner: T) -> Self {
3510            Self::from_arc(Arc::new(inner))
3511        }
3512        pub fn from_arc(inner: Arc<T>) -> Self {
3513            Self {
3514                inner,
3515                accept_compression_encodings: Default::default(),
3516                send_compression_encodings: Default::default(),
3517                max_decoding_message_size: None,
3518                max_encoding_message_size: None,
3519            }
3520        }
3521        pub fn with_interceptor<F>(
3522            inner: T,
3523            interceptor: F,
3524        ) -> InterceptedService<Self, F>
3525        where
3526            F: tonic::service::Interceptor,
3527        {
3528            InterceptedService::new(Self::new(inner), interceptor)
3529        }
3530        /// Enable decompressing requests with the given encoding.
3531        #[must_use]
3532        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
3533            self.accept_compression_encodings.enable(encoding);
3534            self
3535        }
3536        /// Compress responses with the given encoding, if the client supports it.
3537        #[must_use]
3538        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
3539            self.send_compression_encodings.enable(encoding);
3540            self
3541        }
3542        /// Limits the maximum size of a decoded message.
3543        ///
3544        /// Default: `4MB`
3545        #[must_use]
3546        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
3547            self.max_decoding_message_size = Some(limit);
3548            self
3549        }
3550        /// Limits the maximum size of an encoded message.
3551        ///
3552        /// Default: `usize::MAX`
3553        #[must_use]
3554        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
3555            self.max_encoding_message_size = Some(limit);
3556            self
3557        }
3558    }
3559    impl<T, B> tonic::codegen::Service<http::Request<B>>
3560    for HummockManagerServiceServer<T>
3561    where
3562        T: HummockManagerService,
3563        B: Body + std::marker::Send + 'static,
3564        B::Error: Into<StdError> + std::marker::Send + 'static,
3565    {
3566        type Response = http::Response<tonic::body::Body>;
3567        type Error = std::convert::Infallible;
3568        type Future = BoxFuture<Self::Response, Self::Error>;
3569        fn poll_ready(
3570            &mut self,
3571            _cx: &mut Context<'_>,
3572        ) -> Poll<std::result::Result<(), Self::Error>> {
3573            Poll::Ready(Ok(()))
3574        }
3575        fn call(&mut self, req: http::Request<B>) -> Self::Future {
3576            match req.uri().path() {
3577                "/hummock.HummockManagerService/UnpinVersionBefore" => {
3578                    #[allow(non_camel_case_types)]
3579                    struct UnpinVersionBeforeSvc<T: HummockManagerService>(pub Arc<T>);
3580                    impl<
3581                        T: HummockManagerService,
3582                    > tonic::server::UnaryService<super::UnpinVersionBeforeRequest>
3583                    for UnpinVersionBeforeSvc<T> {
3584                        type Response = super::UnpinVersionBeforeResponse;
3585                        type Future = BoxFuture<
3586                            tonic::Response<Self::Response>,
3587                            tonic::Status,
3588                        >;
3589                        fn call(
3590                            &mut self,
3591                            request: tonic::Request<super::UnpinVersionBeforeRequest>,
3592                        ) -> Self::Future {
3593                            let inner = Arc::clone(&self.0);
3594                            let fut = async move {
3595                                <T as HummockManagerService>::unpin_version_before(
3596                                        &inner,
3597                                        request,
3598                                    )
3599                                    .await
3600                            };
3601                            Box::pin(fut)
3602                        }
3603                    }
3604                    let accept_compression_encodings = self.accept_compression_encodings;
3605                    let send_compression_encodings = self.send_compression_encodings;
3606                    let max_decoding_message_size = self.max_decoding_message_size;
3607                    let max_encoding_message_size = self.max_encoding_message_size;
3608                    let inner = self.inner.clone();
3609                    let fut = async move {
3610                        let method = UnpinVersionBeforeSvc(inner);
3611                        let codec = tonic_prost::ProstCodec::default();
3612                        let mut grpc = tonic::server::Grpc::new(codec)
3613                            .apply_compression_config(
3614                                accept_compression_encodings,
3615                                send_compression_encodings,
3616                            )
3617                            .apply_max_message_size_config(
3618                                max_decoding_message_size,
3619                                max_encoding_message_size,
3620                            );
3621                        let res = grpc.unary(method, req).await;
3622                        Ok(res)
3623                    };
3624                    Box::pin(fut)
3625                }
3626                "/hummock.HummockManagerService/GetCurrentVersion" => {
3627                    #[allow(non_camel_case_types)]
3628                    struct GetCurrentVersionSvc<T: HummockManagerService>(pub Arc<T>);
3629                    impl<
3630                        T: HummockManagerService,
3631                    > tonic::server::UnaryService<super::GetCurrentVersionRequest>
3632                    for GetCurrentVersionSvc<T> {
3633                        type Response = super::GetCurrentVersionResponse;
3634                        type Future = BoxFuture<
3635                            tonic::Response<Self::Response>,
3636                            tonic::Status,
3637                        >;
3638                        fn call(
3639                            &mut self,
3640                            request: tonic::Request<super::GetCurrentVersionRequest>,
3641                        ) -> Self::Future {
3642                            let inner = Arc::clone(&self.0);
3643                            let fut = async move {
3644                                <T as HummockManagerService>::get_current_version(
3645                                        &inner,
3646                                        request,
3647                                    )
3648                                    .await
3649                            };
3650                            Box::pin(fut)
3651                        }
3652                    }
3653                    let accept_compression_encodings = self.accept_compression_encodings;
3654                    let send_compression_encodings = self.send_compression_encodings;
3655                    let max_decoding_message_size = self.max_decoding_message_size;
3656                    let max_encoding_message_size = self.max_encoding_message_size;
3657                    let inner = self.inner.clone();
3658                    let fut = async move {
3659                        let method = GetCurrentVersionSvc(inner);
3660                        let codec = tonic_prost::ProstCodec::default();
3661                        let mut grpc = tonic::server::Grpc::new(codec)
3662                            .apply_compression_config(
3663                                accept_compression_encodings,
3664                                send_compression_encodings,
3665                            )
3666                            .apply_max_message_size_config(
3667                                max_decoding_message_size,
3668                                max_encoding_message_size,
3669                            );
3670                        let res = grpc.unary(method, req).await;
3671                        Ok(res)
3672                    };
3673                    Box::pin(fut)
3674                }
3675                "/hummock.HummockManagerService/ListVersionDeltas" => {
3676                    #[allow(non_camel_case_types)]
3677                    struct ListVersionDeltasSvc<T: HummockManagerService>(pub Arc<T>);
3678                    impl<
3679                        T: HummockManagerService,
3680                    > tonic::server::UnaryService<super::ListVersionDeltasRequest>
3681                    for ListVersionDeltasSvc<T> {
3682                        type Response = super::ListVersionDeltasResponse;
3683                        type Future = BoxFuture<
3684                            tonic::Response<Self::Response>,
3685                            tonic::Status,
3686                        >;
3687                        fn call(
3688                            &mut self,
3689                            request: tonic::Request<super::ListVersionDeltasRequest>,
3690                        ) -> Self::Future {
3691                            let inner = Arc::clone(&self.0);
3692                            let fut = async move {
3693                                <T as HummockManagerService>::list_version_deltas(
3694                                        &inner,
3695                                        request,
3696                                    )
3697                                    .await
3698                            };
3699                            Box::pin(fut)
3700                        }
3701                    }
3702                    let accept_compression_encodings = self.accept_compression_encodings;
3703                    let send_compression_encodings = self.send_compression_encodings;
3704                    let max_decoding_message_size = self.max_decoding_message_size;
3705                    let max_encoding_message_size = self.max_encoding_message_size;
3706                    let inner = self.inner.clone();
3707                    let fut = async move {
3708                        let method = ListVersionDeltasSvc(inner);
3709                        let codec = tonic_prost::ProstCodec::default();
3710                        let mut grpc = tonic::server::Grpc::new(codec)
3711                            .apply_compression_config(
3712                                accept_compression_encodings,
3713                                send_compression_encodings,
3714                            )
3715                            .apply_max_message_size_config(
3716                                max_decoding_message_size,
3717                                max_encoding_message_size,
3718                            );
3719                        let res = grpc.unary(method, req).await;
3720                        Ok(res)
3721                    };
3722                    Box::pin(fut)
3723                }
3724                "/hummock.HummockManagerService/ReplayVersionDelta" => {
3725                    #[allow(non_camel_case_types)]
3726                    struct ReplayVersionDeltaSvc<T: HummockManagerService>(pub Arc<T>);
3727                    impl<
3728                        T: HummockManagerService,
3729                    > tonic::server::UnaryService<super::ReplayVersionDeltaRequest>
3730                    for ReplayVersionDeltaSvc<T> {
3731                        type Response = super::ReplayVersionDeltaResponse;
3732                        type Future = BoxFuture<
3733                            tonic::Response<Self::Response>,
3734                            tonic::Status,
3735                        >;
3736                        fn call(
3737                            &mut self,
3738                            request: tonic::Request<super::ReplayVersionDeltaRequest>,
3739                        ) -> Self::Future {
3740                            let inner = Arc::clone(&self.0);
3741                            let fut = async move {
3742                                <T as HummockManagerService>::replay_version_delta(
3743                                        &inner,
3744                                        request,
3745                                    )
3746                                    .await
3747                            };
3748                            Box::pin(fut)
3749                        }
3750                    }
3751                    let accept_compression_encodings = self.accept_compression_encodings;
3752                    let send_compression_encodings = self.send_compression_encodings;
3753                    let max_decoding_message_size = self.max_decoding_message_size;
3754                    let max_encoding_message_size = self.max_encoding_message_size;
3755                    let inner = self.inner.clone();
3756                    let fut = async move {
3757                        let method = ReplayVersionDeltaSvc(inner);
3758                        let codec = tonic_prost::ProstCodec::default();
3759                        let mut grpc = tonic::server::Grpc::new(codec)
3760                            .apply_compression_config(
3761                                accept_compression_encodings,
3762                                send_compression_encodings,
3763                            )
3764                            .apply_max_message_size_config(
3765                                max_decoding_message_size,
3766                                max_encoding_message_size,
3767                            );
3768                        let res = grpc.unary(method, req).await;
3769                        Ok(res)
3770                    };
3771                    Box::pin(fut)
3772                }
3773                "/hummock.HummockManagerService/GetAssignedCompactTaskNum" => {
3774                    #[allow(non_camel_case_types)]
3775                    struct GetAssignedCompactTaskNumSvc<T: HummockManagerService>(
3776                        pub Arc<T>,
3777                    );
3778                    impl<
3779                        T: HummockManagerService,
3780                    > tonic::server::UnaryService<
3781                        super::GetAssignedCompactTaskNumRequest,
3782                    > for GetAssignedCompactTaskNumSvc<T> {
3783                        type Response = super::GetAssignedCompactTaskNumResponse;
3784                        type Future = BoxFuture<
3785                            tonic::Response<Self::Response>,
3786                            tonic::Status,
3787                        >;
3788                        fn call(
3789                            &mut self,
3790                            request: tonic::Request<
3791                                super::GetAssignedCompactTaskNumRequest,
3792                            >,
3793                        ) -> Self::Future {
3794                            let inner = Arc::clone(&self.0);
3795                            let fut = async move {
3796                                <T as HummockManagerService>::get_assigned_compact_task_num(
3797                                        &inner,
3798                                        request,
3799                                    )
3800                                    .await
3801                            };
3802                            Box::pin(fut)
3803                        }
3804                    }
3805                    let accept_compression_encodings = self.accept_compression_encodings;
3806                    let send_compression_encodings = self.send_compression_encodings;
3807                    let max_decoding_message_size = self.max_decoding_message_size;
3808                    let max_encoding_message_size = self.max_encoding_message_size;
3809                    let inner = self.inner.clone();
3810                    let fut = async move {
3811                        let method = GetAssignedCompactTaskNumSvc(inner);
3812                        let codec = tonic_prost::ProstCodec::default();
3813                        let mut grpc = tonic::server::Grpc::new(codec)
3814                            .apply_compression_config(
3815                                accept_compression_encodings,
3816                                send_compression_encodings,
3817                            )
3818                            .apply_max_message_size_config(
3819                                max_decoding_message_size,
3820                                max_encoding_message_size,
3821                            );
3822                        let res = grpc.unary(method, req).await;
3823                        Ok(res)
3824                    };
3825                    Box::pin(fut)
3826                }
3827                "/hummock.HummockManagerService/TriggerCompactionDeterministic" => {
3828                    #[allow(non_camel_case_types)]
3829                    struct TriggerCompactionDeterministicSvc<T: HummockManagerService>(
3830                        pub Arc<T>,
3831                    );
3832                    impl<
3833                        T: HummockManagerService,
3834                    > tonic::server::UnaryService<
3835                        super::TriggerCompactionDeterministicRequest,
3836                    > for TriggerCompactionDeterministicSvc<T> {
3837                        type Response = super::TriggerCompactionDeterministicResponse;
3838                        type Future = BoxFuture<
3839                            tonic::Response<Self::Response>,
3840                            tonic::Status,
3841                        >;
3842                        fn call(
3843                            &mut self,
3844                            request: tonic::Request<
3845                                super::TriggerCompactionDeterministicRequest,
3846                            >,
3847                        ) -> Self::Future {
3848                            let inner = Arc::clone(&self.0);
3849                            let fut = async move {
3850                                <T as HummockManagerService>::trigger_compaction_deterministic(
3851                                        &inner,
3852                                        request,
3853                                    )
3854                                    .await
3855                            };
3856                            Box::pin(fut)
3857                        }
3858                    }
3859                    let accept_compression_encodings = self.accept_compression_encodings;
3860                    let send_compression_encodings = self.send_compression_encodings;
3861                    let max_decoding_message_size = self.max_decoding_message_size;
3862                    let max_encoding_message_size = self.max_encoding_message_size;
3863                    let inner = self.inner.clone();
3864                    let fut = async move {
3865                        let method = TriggerCompactionDeterministicSvc(inner);
3866                        let codec = tonic_prost::ProstCodec::default();
3867                        let mut grpc = tonic::server::Grpc::new(codec)
3868                            .apply_compression_config(
3869                                accept_compression_encodings,
3870                                send_compression_encodings,
3871                            )
3872                            .apply_max_message_size_config(
3873                                max_decoding_message_size,
3874                                max_encoding_message_size,
3875                            );
3876                        let res = grpc.unary(method, req).await;
3877                        Ok(res)
3878                    };
3879                    Box::pin(fut)
3880                }
3881                "/hummock.HummockManagerService/DisableCommitEpoch" => {
3882                    #[allow(non_camel_case_types)]
3883                    struct DisableCommitEpochSvc<T: HummockManagerService>(pub Arc<T>);
3884                    impl<
3885                        T: HummockManagerService,
3886                    > tonic::server::UnaryService<super::DisableCommitEpochRequest>
3887                    for DisableCommitEpochSvc<T> {
3888                        type Response = super::DisableCommitEpochResponse;
3889                        type Future = BoxFuture<
3890                            tonic::Response<Self::Response>,
3891                            tonic::Status,
3892                        >;
3893                        fn call(
3894                            &mut self,
3895                            request: tonic::Request<super::DisableCommitEpochRequest>,
3896                        ) -> Self::Future {
3897                            let inner = Arc::clone(&self.0);
3898                            let fut = async move {
3899                                <T as HummockManagerService>::disable_commit_epoch(
3900                                        &inner,
3901                                        request,
3902                                    )
3903                                    .await
3904                            };
3905                            Box::pin(fut)
3906                        }
3907                    }
3908                    let accept_compression_encodings = self.accept_compression_encodings;
3909                    let send_compression_encodings = self.send_compression_encodings;
3910                    let max_decoding_message_size = self.max_decoding_message_size;
3911                    let max_encoding_message_size = self.max_encoding_message_size;
3912                    let inner = self.inner.clone();
3913                    let fut = async move {
3914                        let method = DisableCommitEpochSvc(inner);
3915                        let codec = tonic_prost::ProstCodec::default();
3916                        let mut grpc = tonic::server::Grpc::new(codec)
3917                            .apply_compression_config(
3918                                accept_compression_encodings,
3919                                send_compression_encodings,
3920                            )
3921                            .apply_max_message_size_config(
3922                                max_decoding_message_size,
3923                                max_encoding_message_size,
3924                            );
3925                        let res = grpc.unary(method, req).await;
3926                        Ok(res)
3927                    };
3928                    Box::pin(fut)
3929                }
3930                "/hummock.HummockManagerService/GetNewObjectIds" => {
3931                    #[allow(non_camel_case_types)]
3932                    struct GetNewObjectIdsSvc<T: HummockManagerService>(pub Arc<T>);
3933                    impl<
3934                        T: HummockManagerService,
3935                    > tonic::server::UnaryService<super::GetNewObjectIdsRequest>
3936                    for GetNewObjectIdsSvc<T> {
3937                        type Response = super::GetNewObjectIdsResponse;
3938                        type Future = BoxFuture<
3939                            tonic::Response<Self::Response>,
3940                            tonic::Status,
3941                        >;
3942                        fn call(
3943                            &mut self,
3944                            request: tonic::Request<super::GetNewObjectIdsRequest>,
3945                        ) -> Self::Future {
3946                            let inner = Arc::clone(&self.0);
3947                            let fut = async move {
3948                                <T as HummockManagerService>::get_new_object_ids(
3949                                        &inner,
3950                                        request,
3951                                    )
3952                                    .await
3953                            };
3954                            Box::pin(fut)
3955                        }
3956                    }
3957                    let accept_compression_encodings = self.accept_compression_encodings;
3958                    let send_compression_encodings = self.send_compression_encodings;
3959                    let max_decoding_message_size = self.max_decoding_message_size;
3960                    let max_encoding_message_size = self.max_encoding_message_size;
3961                    let inner = self.inner.clone();
3962                    let fut = async move {
3963                        let method = GetNewObjectIdsSvc(inner);
3964                        let codec = tonic_prost::ProstCodec::default();
3965                        let mut grpc = tonic::server::Grpc::new(codec)
3966                            .apply_compression_config(
3967                                accept_compression_encodings,
3968                                send_compression_encodings,
3969                            )
3970                            .apply_max_message_size_config(
3971                                max_decoding_message_size,
3972                                max_encoding_message_size,
3973                            );
3974                        let res = grpc.unary(method, req).await;
3975                        Ok(res)
3976                    };
3977                    Box::pin(fut)
3978                }
3979                "/hummock.HummockManagerService/TriggerManualCompaction" => {
3980                    #[allow(non_camel_case_types)]
3981                    struct TriggerManualCompactionSvc<T: HummockManagerService>(
3982                        pub Arc<T>,
3983                    );
3984                    impl<
3985                        T: HummockManagerService,
3986                    > tonic::server::UnaryService<super::TriggerManualCompactionRequest>
3987                    for TriggerManualCompactionSvc<T> {
3988                        type Response = super::TriggerManualCompactionResponse;
3989                        type Future = BoxFuture<
3990                            tonic::Response<Self::Response>,
3991                            tonic::Status,
3992                        >;
3993                        fn call(
3994                            &mut self,
3995                            request: tonic::Request<
3996                                super::TriggerManualCompactionRequest,
3997                            >,
3998                        ) -> Self::Future {
3999                            let inner = Arc::clone(&self.0);
4000                            let fut = async move {
4001                                <T as HummockManagerService>::trigger_manual_compaction(
4002                                        &inner,
4003                                        request,
4004                                    )
4005                                    .await
4006                            };
4007                            Box::pin(fut)
4008                        }
4009                    }
4010                    let accept_compression_encodings = self.accept_compression_encodings;
4011                    let send_compression_encodings = self.send_compression_encodings;
4012                    let max_decoding_message_size = self.max_decoding_message_size;
4013                    let max_encoding_message_size = self.max_encoding_message_size;
4014                    let inner = self.inner.clone();
4015                    let fut = async move {
4016                        let method = TriggerManualCompactionSvc(inner);
4017                        let codec = tonic_prost::ProstCodec::default();
4018                        let mut grpc = tonic::server::Grpc::new(codec)
4019                            .apply_compression_config(
4020                                accept_compression_encodings,
4021                                send_compression_encodings,
4022                            )
4023                            .apply_max_message_size_config(
4024                                max_decoding_message_size,
4025                                max_encoding_message_size,
4026                            );
4027                        let res = grpc.unary(method, req).await;
4028                        Ok(res)
4029                    };
4030                    Box::pin(fut)
4031                }
4032                "/hummock.HummockManagerService/TriggerFullGC" => {
4033                    #[allow(non_camel_case_types)]
4034                    struct TriggerFullGCSvc<T: HummockManagerService>(pub Arc<T>);
4035                    impl<
4036                        T: HummockManagerService,
4037                    > tonic::server::UnaryService<super::TriggerFullGcRequest>
4038                    for TriggerFullGCSvc<T> {
4039                        type Response = super::TriggerFullGcResponse;
4040                        type Future = BoxFuture<
4041                            tonic::Response<Self::Response>,
4042                            tonic::Status,
4043                        >;
4044                        fn call(
4045                            &mut self,
4046                            request: tonic::Request<super::TriggerFullGcRequest>,
4047                        ) -> Self::Future {
4048                            let inner = Arc::clone(&self.0);
4049                            let fut = async move {
4050                                <T as HummockManagerService>::trigger_full_gc(
4051                                        &inner,
4052                                        request,
4053                                    )
4054                                    .await
4055                            };
4056                            Box::pin(fut)
4057                        }
4058                    }
4059                    let accept_compression_encodings = self.accept_compression_encodings;
4060                    let send_compression_encodings = self.send_compression_encodings;
4061                    let max_decoding_message_size = self.max_decoding_message_size;
4062                    let max_encoding_message_size = self.max_encoding_message_size;
4063                    let inner = self.inner.clone();
4064                    let fut = async move {
4065                        let method = TriggerFullGCSvc(inner);
4066                        let codec = tonic_prost::ProstCodec::default();
4067                        let mut grpc = tonic::server::Grpc::new(codec)
4068                            .apply_compression_config(
4069                                accept_compression_encodings,
4070                                send_compression_encodings,
4071                            )
4072                            .apply_max_message_size_config(
4073                                max_decoding_message_size,
4074                                max_encoding_message_size,
4075                            );
4076                        let res = grpc.unary(method, req).await;
4077                        Ok(res)
4078                    };
4079                    Box::pin(fut)
4080                }
4081                "/hummock.HummockManagerService/RiseCtlGetPinnedVersionsSummary" => {
4082                    #[allow(non_camel_case_types)]
4083                    struct RiseCtlGetPinnedVersionsSummarySvc<T: HummockManagerService>(
4084                        pub Arc<T>,
4085                    );
4086                    impl<
4087                        T: HummockManagerService,
4088                    > tonic::server::UnaryService<
4089                        super::RiseCtlGetPinnedVersionsSummaryRequest,
4090                    > for RiseCtlGetPinnedVersionsSummarySvc<T> {
4091                        type Response = super::RiseCtlGetPinnedVersionsSummaryResponse;
4092                        type Future = BoxFuture<
4093                            tonic::Response<Self::Response>,
4094                            tonic::Status,
4095                        >;
4096                        fn call(
4097                            &mut self,
4098                            request: tonic::Request<
4099                                super::RiseCtlGetPinnedVersionsSummaryRequest,
4100                            >,
4101                        ) -> Self::Future {
4102                            let inner = Arc::clone(&self.0);
4103                            let fut = async move {
4104                                <T as HummockManagerService>::rise_ctl_get_pinned_versions_summary(
4105                                        &inner,
4106                                        request,
4107                                    )
4108                                    .await
4109                            };
4110                            Box::pin(fut)
4111                        }
4112                    }
4113                    let accept_compression_encodings = self.accept_compression_encodings;
4114                    let send_compression_encodings = self.send_compression_encodings;
4115                    let max_decoding_message_size = self.max_decoding_message_size;
4116                    let max_encoding_message_size = self.max_encoding_message_size;
4117                    let inner = self.inner.clone();
4118                    let fut = async move {
4119                        let method = RiseCtlGetPinnedVersionsSummarySvc(inner);
4120                        let codec = tonic_prost::ProstCodec::default();
4121                        let mut grpc = tonic::server::Grpc::new(codec)
4122                            .apply_compression_config(
4123                                accept_compression_encodings,
4124                                send_compression_encodings,
4125                            )
4126                            .apply_max_message_size_config(
4127                                max_decoding_message_size,
4128                                max_encoding_message_size,
4129                            );
4130                        let res = grpc.unary(method, req).await;
4131                        Ok(res)
4132                    };
4133                    Box::pin(fut)
4134                }
4135                "/hummock.HummockManagerService/RiseCtlListCompactionGroup" => {
4136                    #[allow(non_camel_case_types)]
4137                    struct RiseCtlListCompactionGroupSvc<T: HummockManagerService>(
4138                        pub Arc<T>,
4139                    );
4140                    impl<
4141                        T: HummockManagerService,
4142                    > tonic::server::UnaryService<
4143                        super::RiseCtlListCompactionGroupRequest,
4144                    > for RiseCtlListCompactionGroupSvc<T> {
4145                        type Response = super::RiseCtlListCompactionGroupResponse;
4146                        type Future = BoxFuture<
4147                            tonic::Response<Self::Response>,
4148                            tonic::Status,
4149                        >;
4150                        fn call(
4151                            &mut self,
4152                            request: tonic::Request<
4153                                super::RiseCtlListCompactionGroupRequest,
4154                            >,
4155                        ) -> Self::Future {
4156                            let inner = Arc::clone(&self.0);
4157                            let fut = async move {
4158                                <T as HummockManagerService>::rise_ctl_list_compaction_group(
4159                                        &inner,
4160                                        request,
4161                                    )
4162                                    .await
4163                            };
4164                            Box::pin(fut)
4165                        }
4166                    }
4167                    let accept_compression_encodings = self.accept_compression_encodings;
4168                    let send_compression_encodings = self.send_compression_encodings;
4169                    let max_decoding_message_size = self.max_decoding_message_size;
4170                    let max_encoding_message_size = self.max_encoding_message_size;
4171                    let inner = self.inner.clone();
4172                    let fut = async move {
4173                        let method = RiseCtlListCompactionGroupSvc(inner);
4174                        let codec = tonic_prost::ProstCodec::default();
4175                        let mut grpc = tonic::server::Grpc::new(codec)
4176                            .apply_compression_config(
4177                                accept_compression_encodings,
4178                                send_compression_encodings,
4179                            )
4180                            .apply_max_message_size_config(
4181                                max_decoding_message_size,
4182                                max_encoding_message_size,
4183                            );
4184                        let res = grpc.unary(method, req).await;
4185                        Ok(res)
4186                    };
4187                    Box::pin(fut)
4188                }
4189                "/hummock.HummockManagerService/RiseCtlUpdateCompactionConfig" => {
4190                    #[allow(non_camel_case_types)]
4191                    struct RiseCtlUpdateCompactionConfigSvc<T: HummockManagerService>(
4192                        pub Arc<T>,
4193                    );
4194                    impl<
4195                        T: HummockManagerService,
4196                    > tonic::server::UnaryService<
4197                        super::RiseCtlUpdateCompactionConfigRequest,
4198                    > for RiseCtlUpdateCompactionConfigSvc<T> {
4199                        type Response = super::RiseCtlUpdateCompactionConfigResponse;
4200                        type Future = BoxFuture<
4201                            tonic::Response<Self::Response>,
4202                            tonic::Status,
4203                        >;
4204                        fn call(
4205                            &mut self,
4206                            request: tonic::Request<
4207                                super::RiseCtlUpdateCompactionConfigRequest,
4208                            >,
4209                        ) -> Self::Future {
4210                            let inner = Arc::clone(&self.0);
4211                            let fut = async move {
4212                                <T as HummockManagerService>::rise_ctl_update_compaction_config(
4213                                        &inner,
4214                                        request,
4215                                    )
4216                                    .await
4217                            };
4218                            Box::pin(fut)
4219                        }
4220                    }
4221                    let accept_compression_encodings = self.accept_compression_encodings;
4222                    let send_compression_encodings = self.send_compression_encodings;
4223                    let max_decoding_message_size = self.max_decoding_message_size;
4224                    let max_encoding_message_size = self.max_encoding_message_size;
4225                    let inner = self.inner.clone();
4226                    let fut = async move {
4227                        let method = RiseCtlUpdateCompactionConfigSvc(inner);
4228                        let codec = tonic_prost::ProstCodec::default();
4229                        let mut grpc = tonic::server::Grpc::new(codec)
4230                            .apply_compression_config(
4231                                accept_compression_encodings,
4232                                send_compression_encodings,
4233                            )
4234                            .apply_max_message_size_config(
4235                                max_decoding_message_size,
4236                                max_encoding_message_size,
4237                            );
4238                        let res = grpc.unary(method, req).await;
4239                        Ok(res)
4240                    };
4241                    Box::pin(fut)
4242                }
4243                "/hummock.HummockManagerService/RiseCtlPauseVersionCheckpoint" => {
4244                    #[allow(non_camel_case_types)]
4245                    struct RiseCtlPauseVersionCheckpointSvc<T: HummockManagerService>(
4246                        pub Arc<T>,
4247                    );
4248                    impl<
4249                        T: HummockManagerService,
4250                    > tonic::server::UnaryService<
4251                        super::RiseCtlPauseVersionCheckpointRequest,
4252                    > for RiseCtlPauseVersionCheckpointSvc<T> {
4253                        type Response = super::RiseCtlPauseVersionCheckpointResponse;
4254                        type Future = BoxFuture<
4255                            tonic::Response<Self::Response>,
4256                            tonic::Status,
4257                        >;
4258                        fn call(
4259                            &mut self,
4260                            request: tonic::Request<
4261                                super::RiseCtlPauseVersionCheckpointRequest,
4262                            >,
4263                        ) -> Self::Future {
4264                            let inner = Arc::clone(&self.0);
4265                            let fut = async move {
4266                                <T as HummockManagerService>::rise_ctl_pause_version_checkpoint(
4267                                        &inner,
4268                                        request,
4269                                    )
4270                                    .await
4271                            };
4272                            Box::pin(fut)
4273                        }
4274                    }
4275                    let accept_compression_encodings = self.accept_compression_encodings;
4276                    let send_compression_encodings = self.send_compression_encodings;
4277                    let max_decoding_message_size = self.max_decoding_message_size;
4278                    let max_encoding_message_size = self.max_encoding_message_size;
4279                    let inner = self.inner.clone();
4280                    let fut = async move {
4281                        let method = RiseCtlPauseVersionCheckpointSvc(inner);
4282                        let codec = tonic_prost::ProstCodec::default();
4283                        let mut grpc = tonic::server::Grpc::new(codec)
4284                            .apply_compression_config(
4285                                accept_compression_encodings,
4286                                send_compression_encodings,
4287                            )
4288                            .apply_max_message_size_config(
4289                                max_decoding_message_size,
4290                                max_encoding_message_size,
4291                            );
4292                        let res = grpc.unary(method, req).await;
4293                        Ok(res)
4294                    };
4295                    Box::pin(fut)
4296                }
4297                "/hummock.HummockManagerService/RiseCtlResumeVersionCheckpoint" => {
4298                    #[allow(non_camel_case_types)]
4299                    struct RiseCtlResumeVersionCheckpointSvc<T: HummockManagerService>(
4300                        pub Arc<T>,
4301                    );
4302                    impl<
4303                        T: HummockManagerService,
4304                    > tonic::server::UnaryService<
4305                        super::RiseCtlResumeVersionCheckpointRequest,
4306                    > for RiseCtlResumeVersionCheckpointSvc<T> {
4307                        type Response = super::RiseCtlResumeVersionCheckpointResponse;
4308                        type Future = BoxFuture<
4309                            tonic::Response<Self::Response>,
4310                            tonic::Status,
4311                        >;
4312                        fn call(
4313                            &mut self,
4314                            request: tonic::Request<
4315                                super::RiseCtlResumeVersionCheckpointRequest,
4316                            >,
4317                        ) -> Self::Future {
4318                            let inner = Arc::clone(&self.0);
4319                            let fut = async move {
4320                                <T as HummockManagerService>::rise_ctl_resume_version_checkpoint(
4321                                        &inner,
4322                                        request,
4323                                    )
4324                                    .await
4325                            };
4326                            Box::pin(fut)
4327                        }
4328                    }
4329                    let accept_compression_encodings = self.accept_compression_encodings;
4330                    let send_compression_encodings = self.send_compression_encodings;
4331                    let max_decoding_message_size = self.max_decoding_message_size;
4332                    let max_encoding_message_size = self.max_encoding_message_size;
4333                    let inner = self.inner.clone();
4334                    let fut = async move {
4335                        let method = RiseCtlResumeVersionCheckpointSvc(inner);
4336                        let codec = tonic_prost::ProstCodec::default();
4337                        let mut grpc = tonic::server::Grpc::new(codec)
4338                            .apply_compression_config(
4339                                accept_compression_encodings,
4340                                send_compression_encodings,
4341                            )
4342                            .apply_max_message_size_config(
4343                                max_decoding_message_size,
4344                                max_encoding_message_size,
4345                            );
4346                        let res = grpc.unary(method, req).await;
4347                        Ok(res)
4348                    };
4349                    Box::pin(fut)
4350                }
4351                "/hummock.HummockManagerService/RiseCtlGetCheckpointVersion" => {
4352                    #[allow(non_camel_case_types)]
4353                    struct RiseCtlGetCheckpointVersionSvc<T: HummockManagerService>(
4354                        pub Arc<T>,
4355                    );
4356                    impl<
4357                        T: HummockManagerService,
4358                    > tonic::server::UnaryService<
4359                        super::RiseCtlGetCheckpointVersionRequest,
4360                    > for RiseCtlGetCheckpointVersionSvc<T> {
4361                        type Response = super::RiseCtlGetCheckpointVersionResponse;
4362                        type Future = BoxFuture<
4363                            tonic::Response<Self::Response>,
4364                            tonic::Status,
4365                        >;
4366                        fn call(
4367                            &mut self,
4368                            request: tonic::Request<
4369                                super::RiseCtlGetCheckpointVersionRequest,
4370                            >,
4371                        ) -> Self::Future {
4372                            let inner = Arc::clone(&self.0);
4373                            let fut = async move {
4374                                <T as HummockManagerService>::rise_ctl_get_checkpoint_version(
4375                                        &inner,
4376                                        request,
4377                                    )
4378                                    .await
4379                            };
4380                            Box::pin(fut)
4381                        }
4382                    }
4383                    let accept_compression_encodings = self.accept_compression_encodings;
4384                    let send_compression_encodings = self.send_compression_encodings;
4385                    let max_decoding_message_size = self.max_decoding_message_size;
4386                    let max_encoding_message_size = self.max_encoding_message_size;
4387                    let inner = self.inner.clone();
4388                    let fut = async move {
4389                        let method = RiseCtlGetCheckpointVersionSvc(inner);
4390                        let codec = tonic_prost::ProstCodec::default();
4391                        let mut grpc = tonic::server::Grpc::new(codec)
4392                            .apply_compression_config(
4393                                accept_compression_encodings,
4394                                send_compression_encodings,
4395                            )
4396                            .apply_max_message_size_config(
4397                                max_decoding_message_size,
4398                                max_encoding_message_size,
4399                            );
4400                        let res = grpc.unary(method, req).await;
4401                        Ok(res)
4402                    };
4403                    Box::pin(fut)
4404                }
4405                "/hummock.HummockManagerService/RiseCtlRebuildTableStats" => {
4406                    #[allow(non_camel_case_types)]
4407                    struct RiseCtlRebuildTableStatsSvc<T: HummockManagerService>(
4408                        pub Arc<T>,
4409                    );
4410                    impl<
4411                        T: HummockManagerService,
4412                    > tonic::server::UnaryService<super::RiseCtlRebuildTableStatsRequest>
4413                    for RiseCtlRebuildTableStatsSvc<T> {
4414                        type Response = super::RiseCtlRebuildTableStatsResponse;
4415                        type Future = BoxFuture<
4416                            tonic::Response<Self::Response>,
4417                            tonic::Status,
4418                        >;
4419                        fn call(
4420                            &mut self,
4421                            request: tonic::Request<
4422                                super::RiseCtlRebuildTableStatsRequest,
4423                            >,
4424                        ) -> Self::Future {
4425                            let inner = Arc::clone(&self.0);
4426                            let fut = async move {
4427                                <T as HummockManagerService>::rise_ctl_rebuild_table_stats(
4428                                        &inner,
4429                                        request,
4430                                    )
4431                                    .await
4432                            };
4433                            Box::pin(fut)
4434                        }
4435                    }
4436                    let accept_compression_encodings = self.accept_compression_encodings;
4437                    let send_compression_encodings = self.send_compression_encodings;
4438                    let max_decoding_message_size = self.max_decoding_message_size;
4439                    let max_encoding_message_size = self.max_encoding_message_size;
4440                    let inner = self.inner.clone();
4441                    let fut = async move {
4442                        let method = RiseCtlRebuildTableStatsSvc(inner);
4443                        let codec = tonic_prost::ProstCodec::default();
4444                        let mut grpc = tonic::server::Grpc::new(codec)
4445                            .apply_compression_config(
4446                                accept_compression_encodings,
4447                                send_compression_encodings,
4448                            )
4449                            .apply_max_message_size_config(
4450                                max_decoding_message_size,
4451                                max_encoding_message_size,
4452                            );
4453                        let res = grpc.unary(method, req).await;
4454                        Ok(res)
4455                    };
4456                    Box::pin(fut)
4457                }
4458                "/hummock.HummockManagerService/InitMetadataForReplay" => {
4459                    #[allow(non_camel_case_types)]
4460                    struct InitMetadataForReplaySvc<T: HummockManagerService>(
4461                        pub Arc<T>,
4462                    );
4463                    impl<
4464                        T: HummockManagerService,
4465                    > tonic::server::UnaryService<super::InitMetadataForReplayRequest>
4466                    for InitMetadataForReplaySvc<T> {
4467                        type Response = super::InitMetadataForReplayResponse;
4468                        type Future = BoxFuture<
4469                            tonic::Response<Self::Response>,
4470                            tonic::Status,
4471                        >;
4472                        fn call(
4473                            &mut self,
4474                            request: tonic::Request<super::InitMetadataForReplayRequest>,
4475                        ) -> Self::Future {
4476                            let inner = Arc::clone(&self.0);
4477                            let fut = async move {
4478                                <T as HummockManagerService>::init_metadata_for_replay(
4479                                        &inner,
4480                                        request,
4481                                    )
4482                                    .await
4483                            };
4484                            Box::pin(fut)
4485                        }
4486                    }
4487                    let accept_compression_encodings = self.accept_compression_encodings;
4488                    let send_compression_encodings = self.send_compression_encodings;
4489                    let max_decoding_message_size = self.max_decoding_message_size;
4490                    let max_encoding_message_size = self.max_encoding_message_size;
4491                    let inner = self.inner.clone();
4492                    let fut = async move {
4493                        let method = InitMetadataForReplaySvc(inner);
4494                        let codec = tonic_prost::ProstCodec::default();
4495                        let mut grpc = tonic::server::Grpc::new(codec)
4496                            .apply_compression_config(
4497                                accept_compression_encodings,
4498                                send_compression_encodings,
4499                            )
4500                            .apply_max_message_size_config(
4501                                max_decoding_message_size,
4502                                max_encoding_message_size,
4503                            );
4504                        let res = grpc.unary(method, req).await;
4505                        Ok(res)
4506                    };
4507                    Box::pin(fut)
4508                }
4509                "/hummock.HummockManagerService/PinVersion" => {
4510                    #[allow(non_camel_case_types)]
4511                    struct PinVersionSvc<T: HummockManagerService>(pub Arc<T>);
4512                    impl<
4513                        T: HummockManagerService,
4514                    > tonic::server::UnaryService<super::PinVersionRequest>
4515                    for PinVersionSvc<T> {
4516                        type Response = super::PinVersionResponse;
4517                        type Future = BoxFuture<
4518                            tonic::Response<Self::Response>,
4519                            tonic::Status,
4520                        >;
4521                        fn call(
4522                            &mut self,
4523                            request: tonic::Request<super::PinVersionRequest>,
4524                        ) -> Self::Future {
4525                            let inner = Arc::clone(&self.0);
4526                            let fut = async move {
4527                                <T as HummockManagerService>::pin_version(&inner, request)
4528                                    .await
4529                            };
4530                            Box::pin(fut)
4531                        }
4532                    }
4533                    let accept_compression_encodings = self.accept_compression_encodings;
4534                    let send_compression_encodings = self.send_compression_encodings;
4535                    let max_decoding_message_size = self.max_decoding_message_size;
4536                    let max_encoding_message_size = self.max_encoding_message_size;
4537                    let inner = self.inner.clone();
4538                    let fut = async move {
4539                        let method = PinVersionSvc(inner);
4540                        let codec = tonic_prost::ProstCodec::default();
4541                        let mut grpc = tonic::server::Grpc::new(codec)
4542                            .apply_compression_config(
4543                                accept_compression_encodings,
4544                                send_compression_encodings,
4545                            )
4546                            .apply_max_message_size_config(
4547                                max_decoding_message_size,
4548                                max_encoding_message_size,
4549                            );
4550                        let res = grpc.unary(method, req).await;
4551                        Ok(res)
4552                    };
4553                    Box::pin(fut)
4554                }
4555                "/hummock.HummockManagerService/SplitCompactionGroup" => {
4556                    #[allow(non_camel_case_types)]
4557                    struct SplitCompactionGroupSvc<T: HummockManagerService>(pub Arc<T>);
4558                    impl<
4559                        T: HummockManagerService,
4560                    > tonic::server::UnaryService<super::SplitCompactionGroupRequest>
4561                    for SplitCompactionGroupSvc<T> {
4562                        type Response = super::SplitCompactionGroupResponse;
4563                        type Future = BoxFuture<
4564                            tonic::Response<Self::Response>,
4565                            tonic::Status,
4566                        >;
4567                        fn call(
4568                            &mut self,
4569                            request: tonic::Request<super::SplitCompactionGroupRequest>,
4570                        ) -> Self::Future {
4571                            let inner = Arc::clone(&self.0);
4572                            let fut = async move {
4573                                <T as HummockManagerService>::split_compaction_group(
4574                                        &inner,
4575                                        request,
4576                                    )
4577                                    .await
4578                            };
4579                            Box::pin(fut)
4580                        }
4581                    }
4582                    let accept_compression_encodings = self.accept_compression_encodings;
4583                    let send_compression_encodings = self.send_compression_encodings;
4584                    let max_decoding_message_size = self.max_decoding_message_size;
4585                    let max_encoding_message_size = self.max_encoding_message_size;
4586                    let inner = self.inner.clone();
4587                    let fut = async move {
4588                        let method = SplitCompactionGroupSvc(inner);
4589                        let codec = tonic_prost::ProstCodec::default();
4590                        let mut grpc = tonic::server::Grpc::new(codec)
4591                            .apply_compression_config(
4592                                accept_compression_encodings,
4593                                send_compression_encodings,
4594                            )
4595                            .apply_max_message_size_config(
4596                                max_decoding_message_size,
4597                                max_encoding_message_size,
4598                            );
4599                        let res = grpc.unary(method, req).await;
4600                        Ok(res)
4601                    };
4602                    Box::pin(fut)
4603                }
4604                "/hummock.HummockManagerService/RiseCtlListCompactionStatus" => {
4605                    #[allow(non_camel_case_types)]
4606                    struct RiseCtlListCompactionStatusSvc<T: HummockManagerService>(
4607                        pub Arc<T>,
4608                    );
4609                    impl<
4610                        T: HummockManagerService,
4611                    > tonic::server::UnaryService<
4612                        super::RiseCtlListCompactionStatusRequest,
4613                    > for RiseCtlListCompactionStatusSvc<T> {
4614                        type Response = super::RiseCtlListCompactionStatusResponse;
4615                        type Future = BoxFuture<
4616                            tonic::Response<Self::Response>,
4617                            tonic::Status,
4618                        >;
4619                        fn call(
4620                            &mut self,
4621                            request: tonic::Request<
4622                                super::RiseCtlListCompactionStatusRequest,
4623                            >,
4624                        ) -> Self::Future {
4625                            let inner = Arc::clone(&self.0);
4626                            let fut = async move {
4627                                <T as HummockManagerService>::rise_ctl_list_compaction_status(
4628                                        &inner,
4629                                        request,
4630                                    )
4631                                    .await
4632                            };
4633                            Box::pin(fut)
4634                        }
4635                    }
4636                    let accept_compression_encodings = self.accept_compression_encodings;
4637                    let send_compression_encodings = self.send_compression_encodings;
4638                    let max_decoding_message_size = self.max_decoding_message_size;
4639                    let max_encoding_message_size = self.max_encoding_message_size;
4640                    let inner = self.inner.clone();
4641                    let fut = async move {
4642                        let method = RiseCtlListCompactionStatusSvc(inner);
4643                        let codec = tonic_prost::ProstCodec::default();
4644                        let mut grpc = tonic::server::Grpc::new(codec)
4645                            .apply_compression_config(
4646                                accept_compression_encodings,
4647                                send_compression_encodings,
4648                            )
4649                            .apply_max_message_size_config(
4650                                max_decoding_message_size,
4651                                max_encoding_message_size,
4652                            );
4653                        let res = grpc.unary(method, req).await;
4654                        Ok(res)
4655                    };
4656                    Box::pin(fut)
4657                }
4658                "/hummock.HummockManagerService/SubscribeCompactionEvent" => {
4659                    #[allow(non_camel_case_types)]
4660                    struct SubscribeCompactionEventSvc<T: HummockManagerService>(
4661                        pub Arc<T>,
4662                    );
4663                    impl<
4664                        T: HummockManagerService,
4665                    > tonic::server::StreamingService<
4666                        super::SubscribeCompactionEventRequest,
4667                    > for SubscribeCompactionEventSvc<T> {
4668                        type Response = super::SubscribeCompactionEventResponse;
4669                        type ResponseStream = T::SubscribeCompactionEventStream;
4670                        type Future = BoxFuture<
4671                            tonic::Response<Self::ResponseStream>,
4672                            tonic::Status,
4673                        >;
4674                        fn call(
4675                            &mut self,
4676                            request: tonic::Request<
4677                                tonic::Streaming<super::SubscribeCompactionEventRequest>,
4678                            >,
4679                        ) -> Self::Future {
4680                            let inner = Arc::clone(&self.0);
4681                            let fut = async move {
4682                                <T as HummockManagerService>::subscribe_compaction_event(
4683                                        &inner,
4684                                        request,
4685                                    )
4686                                    .await
4687                            };
4688                            Box::pin(fut)
4689                        }
4690                    }
4691                    let accept_compression_encodings = self.accept_compression_encodings;
4692                    let send_compression_encodings = self.send_compression_encodings;
4693                    let max_decoding_message_size = self.max_decoding_message_size;
4694                    let max_encoding_message_size = self.max_encoding_message_size;
4695                    let inner = self.inner.clone();
4696                    let fut = async move {
4697                        let method = SubscribeCompactionEventSvc(inner);
4698                        let codec = tonic_prost::ProstCodec::default();
4699                        let mut grpc = tonic::server::Grpc::new(codec)
4700                            .apply_compression_config(
4701                                accept_compression_encodings,
4702                                send_compression_encodings,
4703                            )
4704                            .apply_max_message_size_config(
4705                                max_decoding_message_size,
4706                                max_encoding_message_size,
4707                            );
4708                        let res = grpc.streaming(method, req).await;
4709                        Ok(res)
4710                    };
4711                    Box::pin(fut)
4712                }
4713                "/hummock.HummockManagerService/ReportCompactionTask" => {
4714                    #[allow(non_camel_case_types)]
4715                    struct ReportCompactionTaskSvc<T: HummockManagerService>(pub Arc<T>);
4716                    impl<
4717                        T: HummockManagerService,
4718                    > tonic::server::UnaryService<super::ReportCompactionTaskRequest>
4719                    for ReportCompactionTaskSvc<T> {
4720                        type Response = super::ReportCompactionTaskResponse;
4721                        type Future = BoxFuture<
4722                            tonic::Response<Self::Response>,
4723                            tonic::Status,
4724                        >;
4725                        fn call(
4726                            &mut self,
4727                            request: tonic::Request<super::ReportCompactionTaskRequest>,
4728                        ) -> Self::Future {
4729                            let inner = Arc::clone(&self.0);
4730                            let fut = async move {
4731                                <T as HummockManagerService>::report_compaction_task(
4732                                        &inner,
4733                                        request,
4734                                    )
4735                                    .await
4736                            };
4737                            Box::pin(fut)
4738                        }
4739                    }
4740                    let accept_compression_encodings = self.accept_compression_encodings;
4741                    let send_compression_encodings = self.send_compression_encodings;
4742                    let max_decoding_message_size = self.max_decoding_message_size;
4743                    let max_encoding_message_size = self.max_encoding_message_size;
4744                    let inner = self.inner.clone();
4745                    let fut = async move {
4746                        let method = ReportCompactionTaskSvc(inner);
4747                        let codec = tonic_prost::ProstCodec::default();
4748                        let mut grpc = tonic::server::Grpc::new(codec)
4749                            .apply_compression_config(
4750                                accept_compression_encodings,
4751                                send_compression_encodings,
4752                            )
4753                            .apply_max_message_size_config(
4754                                max_decoding_message_size,
4755                                max_encoding_message_size,
4756                            );
4757                        let res = grpc.unary(method, req).await;
4758                        Ok(res)
4759                    };
4760                    Box::pin(fut)
4761                }
4762                "/hummock.HummockManagerService/ListBranchedObject" => {
4763                    #[allow(non_camel_case_types)]
4764                    struct ListBranchedObjectSvc<T: HummockManagerService>(pub Arc<T>);
4765                    impl<
4766                        T: HummockManagerService,
4767                    > tonic::server::UnaryService<super::ListBranchedObjectRequest>
4768                    for ListBranchedObjectSvc<T> {
4769                        type Response = super::ListBranchedObjectResponse;
4770                        type Future = BoxFuture<
4771                            tonic::Response<Self::Response>,
4772                            tonic::Status,
4773                        >;
4774                        fn call(
4775                            &mut self,
4776                            request: tonic::Request<super::ListBranchedObjectRequest>,
4777                        ) -> Self::Future {
4778                            let inner = Arc::clone(&self.0);
4779                            let fut = async move {
4780                                <T as HummockManagerService>::list_branched_object(
4781                                        &inner,
4782                                        request,
4783                                    )
4784                                    .await
4785                            };
4786                            Box::pin(fut)
4787                        }
4788                    }
4789                    let accept_compression_encodings = self.accept_compression_encodings;
4790                    let send_compression_encodings = self.send_compression_encodings;
4791                    let max_decoding_message_size = self.max_decoding_message_size;
4792                    let max_encoding_message_size = self.max_encoding_message_size;
4793                    let inner = self.inner.clone();
4794                    let fut = async move {
4795                        let method = ListBranchedObjectSvc(inner);
4796                        let codec = tonic_prost::ProstCodec::default();
4797                        let mut grpc = tonic::server::Grpc::new(codec)
4798                            .apply_compression_config(
4799                                accept_compression_encodings,
4800                                send_compression_encodings,
4801                            )
4802                            .apply_max_message_size_config(
4803                                max_decoding_message_size,
4804                                max_encoding_message_size,
4805                            );
4806                        let res = grpc.unary(method, req).await;
4807                        Ok(res)
4808                    };
4809                    Box::pin(fut)
4810                }
4811                "/hummock.HummockManagerService/ListActiveWriteLimit" => {
4812                    #[allow(non_camel_case_types)]
4813                    struct ListActiveWriteLimitSvc<T: HummockManagerService>(pub Arc<T>);
4814                    impl<
4815                        T: HummockManagerService,
4816                    > tonic::server::UnaryService<super::ListActiveWriteLimitRequest>
4817                    for ListActiveWriteLimitSvc<T> {
4818                        type Response = super::ListActiveWriteLimitResponse;
4819                        type Future = BoxFuture<
4820                            tonic::Response<Self::Response>,
4821                            tonic::Status,
4822                        >;
4823                        fn call(
4824                            &mut self,
4825                            request: tonic::Request<super::ListActiveWriteLimitRequest>,
4826                        ) -> Self::Future {
4827                            let inner = Arc::clone(&self.0);
4828                            let fut = async move {
4829                                <T as HummockManagerService>::list_active_write_limit(
4830                                        &inner,
4831                                        request,
4832                                    )
4833                                    .await
4834                            };
4835                            Box::pin(fut)
4836                        }
4837                    }
4838                    let accept_compression_encodings = self.accept_compression_encodings;
4839                    let send_compression_encodings = self.send_compression_encodings;
4840                    let max_decoding_message_size = self.max_decoding_message_size;
4841                    let max_encoding_message_size = self.max_encoding_message_size;
4842                    let inner = self.inner.clone();
4843                    let fut = async move {
4844                        let method = ListActiveWriteLimitSvc(inner);
4845                        let codec = tonic_prost::ProstCodec::default();
4846                        let mut grpc = tonic::server::Grpc::new(codec)
4847                            .apply_compression_config(
4848                                accept_compression_encodings,
4849                                send_compression_encodings,
4850                            )
4851                            .apply_max_message_size_config(
4852                                max_decoding_message_size,
4853                                max_encoding_message_size,
4854                            );
4855                        let res = grpc.unary(method, req).await;
4856                        Ok(res)
4857                    };
4858                    Box::pin(fut)
4859                }
4860                "/hummock.HummockManagerService/ListHummockMetaConfig" => {
4861                    #[allow(non_camel_case_types)]
4862                    struct ListHummockMetaConfigSvc<T: HummockManagerService>(
4863                        pub Arc<T>,
4864                    );
4865                    impl<
4866                        T: HummockManagerService,
4867                    > tonic::server::UnaryService<super::ListHummockMetaConfigRequest>
4868                    for ListHummockMetaConfigSvc<T> {
4869                        type Response = super::ListHummockMetaConfigResponse;
4870                        type Future = BoxFuture<
4871                            tonic::Response<Self::Response>,
4872                            tonic::Status,
4873                        >;
4874                        fn call(
4875                            &mut self,
4876                            request: tonic::Request<super::ListHummockMetaConfigRequest>,
4877                        ) -> Self::Future {
4878                            let inner = Arc::clone(&self.0);
4879                            let fut = async move {
4880                                <T as HummockManagerService>::list_hummock_meta_config(
4881                                        &inner,
4882                                        request,
4883                                    )
4884                                    .await
4885                            };
4886                            Box::pin(fut)
4887                        }
4888                    }
4889                    let accept_compression_encodings = self.accept_compression_encodings;
4890                    let send_compression_encodings = self.send_compression_encodings;
4891                    let max_decoding_message_size = self.max_decoding_message_size;
4892                    let max_encoding_message_size = self.max_encoding_message_size;
4893                    let inner = self.inner.clone();
4894                    let fut = async move {
4895                        let method = ListHummockMetaConfigSvc(inner);
4896                        let codec = tonic_prost::ProstCodec::default();
4897                        let mut grpc = tonic::server::Grpc::new(codec)
4898                            .apply_compression_config(
4899                                accept_compression_encodings,
4900                                send_compression_encodings,
4901                            )
4902                            .apply_max_message_size_config(
4903                                max_decoding_message_size,
4904                                max_encoding_message_size,
4905                            );
4906                        let res = grpc.unary(method, req).await;
4907                        Ok(res)
4908                    };
4909                    Box::pin(fut)
4910                }
4911                "/hummock.HummockManagerService/GetCompactionScore" => {
4912                    #[allow(non_camel_case_types)]
4913                    struct GetCompactionScoreSvc<T: HummockManagerService>(pub Arc<T>);
4914                    impl<
4915                        T: HummockManagerService,
4916                    > tonic::server::UnaryService<super::GetCompactionScoreRequest>
4917                    for GetCompactionScoreSvc<T> {
4918                        type Response = super::GetCompactionScoreResponse;
4919                        type Future = BoxFuture<
4920                            tonic::Response<Self::Response>,
4921                            tonic::Status,
4922                        >;
4923                        fn call(
4924                            &mut self,
4925                            request: tonic::Request<super::GetCompactionScoreRequest>,
4926                        ) -> Self::Future {
4927                            let inner = Arc::clone(&self.0);
4928                            let fut = async move {
4929                                <T as HummockManagerService>::get_compaction_score(
4930                                        &inner,
4931                                        request,
4932                                    )
4933                                    .await
4934                            };
4935                            Box::pin(fut)
4936                        }
4937                    }
4938                    let accept_compression_encodings = self.accept_compression_encodings;
4939                    let send_compression_encodings = self.send_compression_encodings;
4940                    let max_decoding_message_size = self.max_decoding_message_size;
4941                    let max_encoding_message_size = self.max_encoding_message_size;
4942                    let inner = self.inner.clone();
4943                    let fut = async move {
4944                        let method = GetCompactionScoreSvc(inner);
4945                        let codec = tonic_prost::ProstCodec::default();
4946                        let mut grpc = tonic::server::Grpc::new(codec)
4947                            .apply_compression_config(
4948                                accept_compression_encodings,
4949                                send_compression_encodings,
4950                            )
4951                            .apply_max_message_size_config(
4952                                max_decoding_message_size,
4953                                max_encoding_message_size,
4954                            );
4955                        let res = grpc.unary(method, req).await;
4956                        Ok(res)
4957                    };
4958                    Box::pin(fut)
4959                }
4960                "/hummock.HummockManagerService/ListCompactTaskAssignment" => {
4961                    #[allow(non_camel_case_types)]
4962                    struct ListCompactTaskAssignmentSvc<T: HummockManagerService>(
4963                        pub Arc<T>,
4964                    );
4965                    impl<
4966                        T: HummockManagerService,
4967                    > tonic::server::UnaryService<
4968                        super::ListCompactTaskAssignmentRequest,
4969                    > for ListCompactTaskAssignmentSvc<T> {
4970                        type Response = super::ListCompactTaskAssignmentResponse;
4971                        type Future = BoxFuture<
4972                            tonic::Response<Self::Response>,
4973                            tonic::Status,
4974                        >;
4975                        fn call(
4976                            &mut self,
4977                            request: tonic::Request<
4978                                super::ListCompactTaskAssignmentRequest,
4979                            >,
4980                        ) -> Self::Future {
4981                            let inner = Arc::clone(&self.0);
4982                            let fut = async move {
4983                                <T as HummockManagerService>::list_compact_task_assignment(
4984                                        &inner,
4985                                        request,
4986                                    )
4987                                    .await
4988                            };
4989                            Box::pin(fut)
4990                        }
4991                    }
4992                    let accept_compression_encodings = self.accept_compression_encodings;
4993                    let send_compression_encodings = self.send_compression_encodings;
4994                    let max_decoding_message_size = self.max_decoding_message_size;
4995                    let max_encoding_message_size = self.max_encoding_message_size;
4996                    let inner = self.inner.clone();
4997                    let fut = async move {
4998                        let method = ListCompactTaskAssignmentSvc(inner);
4999                        let codec = tonic_prost::ProstCodec::default();
5000                        let mut grpc = tonic::server::Grpc::new(codec)
5001                            .apply_compression_config(
5002                                accept_compression_encodings,
5003                                send_compression_encodings,
5004                            )
5005                            .apply_max_message_size_config(
5006                                max_decoding_message_size,
5007                                max_encoding_message_size,
5008                            );
5009                        let res = grpc.unary(method, req).await;
5010                        Ok(res)
5011                    };
5012                    Box::pin(fut)
5013                }
5014                "/hummock.HummockManagerService/ListCompactTaskProgress" => {
5015                    #[allow(non_camel_case_types)]
5016                    struct ListCompactTaskProgressSvc<T: HummockManagerService>(
5017                        pub Arc<T>,
5018                    );
5019                    impl<
5020                        T: HummockManagerService,
5021                    > tonic::server::UnaryService<super::ListCompactTaskProgressRequest>
5022                    for ListCompactTaskProgressSvc<T> {
5023                        type Response = super::ListCompactTaskProgressResponse;
5024                        type Future = BoxFuture<
5025                            tonic::Response<Self::Response>,
5026                            tonic::Status,
5027                        >;
5028                        fn call(
5029                            &mut self,
5030                            request: tonic::Request<
5031                                super::ListCompactTaskProgressRequest,
5032                            >,
5033                        ) -> Self::Future {
5034                            let inner = Arc::clone(&self.0);
5035                            let fut = async move {
5036                                <T as HummockManagerService>::list_compact_task_progress(
5037                                        &inner,
5038                                        request,
5039                                    )
5040                                    .await
5041                            };
5042                            Box::pin(fut)
5043                        }
5044                    }
5045                    let accept_compression_encodings = self.accept_compression_encodings;
5046                    let send_compression_encodings = self.send_compression_encodings;
5047                    let max_decoding_message_size = self.max_decoding_message_size;
5048                    let max_encoding_message_size = self.max_encoding_message_size;
5049                    let inner = self.inner.clone();
5050                    let fut = async move {
5051                        let method = ListCompactTaskProgressSvc(inner);
5052                        let codec = tonic_prost::ProstCodec::default();
5053                        let mut grpc = tonic::server::Grpc::new(codec)
5054                            .apply_compression_config(
5055                                accept_compression_encodings,
5056                                send_compression_encodings,
5057                            )
5058                            .apply_max_message_size_config(
5059                                max_decoding_message_size,
5060                                max_encoding_message_size,
5061                            );
5062                        let res = grpc.unary(method, req).await;
5063                        Ok(res)
5064                    };
5065                    Box::pin(fut)
5066                }
5067                "/hummock.HummockManagerService/CancelCompactTask" => {
5068                    #[allow(non_camel_case_types)]
5069                    struct CancelCompactTaskSvc<T: HummockManagerService>(pub Arc<T>);
5070                    impl<
5071                        T: HummockManagerService,
5072                    > tonic::server::UnaryService<super::CancelCompactTaskRequest>
5073                    for CancelCompactTaskSvc<T> {
5074                        type Response = super::CancelCompactTaskResponse;
5075                        type Future = BoxFuture<
5076                            tonic::Response<Self::Response>,
5077                            tonic::Status,
5078                        >;
5079                        fn call(
5080                            &mut self,
5081                            request: tonic::Request<super::CancelCompactTaskRequest>,
5082                        ) -> Self::Future {
5083                            let inner = Arc::clone(&self.0);
5084                            let fut = async move {
5085                                <T as HummockManagerService>::cancel_compact_task(
5086                                        &inner,
5087                                        request,
5088                                    )
5089                                    .await
5090                            };
5091                            Box::pin(fut)
5092                        }
5093                    }
5094                    let accept_compression_encodings = self.accept_compression_encodings;
5095                    let send_compression_encodings = self.send_compression_encodings;
5096                    let max_decoding_message_size = self.max_decoding_message_size;
5097                    let max_encoding_message_size = self.max_encoding_message_size;
5098                    let inner = self.inner.clone();
5099                    let fut = async move {
5100                        let method = CancelCompactTaskSvc(inner);
5101                        let codec = tonic_prost::ProstCodec::default();
5102                        let mut grpc = tonic::server::Grpc::new(codec)
5103                            .apply_compression_config(
5104                                accept_compression_encodings,
5105                                send_compression_encodings,
5106                            )
5107                            .apply_max_message_size_config(
5108                                max_decoding_message_size,
5109                                max_encoding_message_size,
5110                            );
5111                        let res = grpc.unary(method, req).await;
5112                        Ok(res)
5113                    };
5114                    Box::pin(fut)
5115                }
5116                "/hummock.HummockManagerService/GetVersionByEpoch" => {
5117                    #[allow(non_camel_case_types)]
5118                    struct GetVersionByEpochSvc<T: HummockManagerService>(pub Arc<T>);
5119                    impl<
5120                        T: HummockManagerService,
5121                    > tonic::server::UnaryService<super::GetVersionByEpochRequest>
5122                    for GetVersionByEpochSvc<T> {
5123                        type Response = super::GetVersionByEpochResponse;
5124                        type Future = BoxFuture<
5125                            tonic::Response<Self::Response>,
5126                            tonic::Status,
5127                        >;
5128                        fn call(
5129                            &mut self,
5130                            request: tonic::Request<super::GetVersionByEpochRequest>,
5131                        ) -> Self::Future {
5132                            let inner = Arc::clone(&self.0);
5133                            let fut = async move {
5134                                <T as HummockManagerService>::get_version_by_epoch(
5135                                        &inner,
5136                                        request,
5137                                    )
5138                                    .await
5139                            };
5140                            Box::pin(fut)
5141                        }
5142                    }
5143                    let accept_compression_encodings = self.accept_compression_encodings;
5144                    let send_compression_encodings = self.send_compression_encodings;
5145                    let max_decoding_message_size = self.max_decoding_message_size;
5146                    let max_encoding_message_size = self.max_encoding_message_size;
5147                    let inner = self.inner.clone();
5148                    let fut = async move {
5149                        let method = GetVersionByEpochSvc(inner);
5150                        let codec = tonic_prost::ProstCodec::default();
5151                        let mut grpc = tonic::server::Grpc::new(codec)
5152                            .apply_compression_config(
5153                                accept_compression_encodings,
5154                                send_compression_encodings,
5155                            )
5156                            .apply_max_message_size_config(
5157                                max_decoding_message_size,
5158                                max_encoding_message_size,
5159                            );
5160                        let res = grpc.unary(method, req).await;
5161                        Ok(res)
5162                    };
5163                    Box::pin(fut)
5164                }
5165                "/hummock.HummockManagerService/MergeCompactionGroup" => {
5166                    #[allow(non_camel_case_types)]
5167                    struct MergeCompactionGroupSvc<T: HummockManagerService>(pub Arc<T>);
5168                    impl<
5169                        T: HummockManagerService,
5170                    > tonic::server::UnaryService<super::MergeCompactionGroupRequest>
5171                    for MergeCompactionGroupSvc<T> {
5172                        type Response = super::MergeCompactionGroupResponse;
5173                        type Future = BoxFuture<
5174                            tonic::Response<Self::Response>,
5175                            tonic::Status,
5176                        >;
5177                        fn call(
5178                            &mut self,
5179                            request: tonic::Request<super::MergeCompactionGroupRequest>,
5180                        ) -> Self::Future {
5181                            let inner = Arc::clone(&self.0);
5182                            let fut = async move {
5183                                <T as HummockManagerService>::merge_compaction_group(
5184                                        &inner,
5185                                        request,
5186                                    )
5187                                    .await
5188                            };
5189                            Box::pin(fut)
5190                        }
5191                    }
5192                    let accept_compression_encodings = self.accept_compression_encodings;
5193                    let send_compression_encodings = self.send_compression_encodings;
5194                    let max_decoding_message_size = self.max_decoding_message_size;
5195                    let max_encoding_message_size = self.max_encoding_message_size;
5196                    let inner = self.inner.clone();
5197                    let fut = async move {
5198                        let method = MergeCompactionGroupSvc(inner);
5199                        let codec = tonic_prost::ProstCodec::default();
5200                        let mut grpc = tonic::server::Grpc::new(codec)
5201                            .apply_compression_config(
5202                                accept_compression_encodings,
5203                                send_compression_encodings,
5204                            )
5205                            .apply_max_message_size_config(
5206                                max_decoding_message_size,
5207                                max_encoding_message_size,
5208                            );
5209                        let res = grpc.unary(method, req).await;
5210                        Ok(res)
5211                    };
5212                    Box::pin(fut)
5213                }
5214                "/hummock.HummockManagerService/GetTableChangeLogs" => {
5215                    #[allow(non_camel_case_types)]
5216                    struct GetTableChangeLogsSvc<T: HummockManagerService>(pub Arc<T>);
5217                    impl<
5218                        T: HummockManagerService,
5219                    > tonic::server::UnaryService<super::GetTableChangeLogsRequest>
5220                    for GetTableChangeLogsSvc<T> {
5221                        type Response = super::GetTableChangeLogsResponse;
5222                        type Future = BoxFuture<
5223                            tonic::Response<Self::Response>,
5224                            tonic::Status,
5225                        >;
5226                        fn call(
5227                            &mut self,
5228                            request: tonic::Request<super::GetTableChangeLogsRequest>,
5229                        ) -> Self::Future {
5230                            let inner = Arc::clone(&self.0);
5231                            let fut = async move {
5232                                <T as HummockManagerService>::get_table_change_logs(
5233                                        &inner,
5234                                        request,
5235                                    )
5236                                    .await
5237                            };
5238                            Box::pin(fut)
5239                        }
5240                    }
5241                    let accept_compression_encodings = self.accept_compression_encodings;
5242                    let send_compression_encodings = self.send_compression_encodings;
5243                    let max_decoding_message_size = self.max_decoding_message_size;
5244                    let max_encoding_message_size = self.max_encoding_message_size;
5245                    let inner = self.inner.clone();
5246                    let fut = async move {
5247                        let method = GetTableChangeLogsSvc(inner);
5248                        let codec = tonic_prost::ProstCodec::default();
5249                        let mut grpc = tonic::server::Grpc::new(codec)
5250                            .apply_compression_config(
5251                                accept_compression_encodings,
5252                                send_compression_encodings,
5253                            )
5254                            .apply_max_message_size_config(
5255                                max_decoding_message_size,
5256                                max_encoding_message_size,
5257                            );
5258                        let res = grpc.unary(method, req).await;
5259                        Ok(res)
5260                    };
5261                    Box::pin(fut)
5262                }
5263                "/hummock.HummockManagerService/SubscribeIcebergCompactionEvent" => {
5264                    #[allow(non_camel_case_types)]
5265                    struct SubscribeIcebergCompactionEventSvc<T: HummockManagerService>(
5266                        pub Arc<T>,
5267                    );
5268                    impl<
5269                        T: HummockManagerService,
5270                    > tonic::server::StreamingService<
5271                        super::super::iceberg_compaction::SubscribeIcebergCompactionEventRequest,
5272                    > for SubscribeIcebergCompactionEventSvc<T> {
5273                        type Response = super::super::iceberg_compaction::SubscribeIcebergCompactionEventResponse;
5274                        type ResponseStream = T::SubscribeIcebergCompactionEventStream;
5275                        type Future = BoxFuture<
5276                            tonic::Response<Self::ResponseStream>,
5277                            tonic::Status,
5278                        >;
5279                        fn call(
5280                            &mut self,
5281                            request: tonic::Request<
5282                                tonic::Streaming<
5283                                    super::super::iceberg_compaction::SubscribeIcebergCompactionEventRequest,
5284                                >,
5285                            >,
5286                        ) -> Self::Future {
5287                            let inner = Arc::clone(&self.0);
5288                            let fut = async move {
5289                                <T as HummockManagerService>::subscribe_iceberg_compaction_event(
5290                                        &inner,
5291                                        request,
5292                                    )
5293                                    .await
5294                            };
5295                            Box::pin(fut)
5296                        }
5297                    }
5298                    let accept_compression_encodings = self.accept_compression_encodings;
5299                    let send_compression_encodings = self.send_compression_encodings;
5300                    let max_decoding_message_size = self.max_decoding_message_size;
5301                    let max_encoding_message_size = self.max_encoding_message_size;
5302                    let inner = self.inner.clone();
5303                    let fut = async move {
5304                        let method = SubscribeIcebergCompactionEventSvc(inner);
5305                        let codec = tonic_prost::ProstCodec::default();
5306                        let mut grpc = tonic::server::Grpc::new(codec)
5307                            .apply_compression_config(
5308                                accept_compression_encodings,
5309                                send_compression_encodings,
5310                            )
5311                            .apply_max_message_size_config(
5312                                max_decoding_message_size,
5313                                max_encoding_message_size,
5314                            );
5315                        let res = grpc.streaming(method, req).await;
5316                        Ok(res)
5317                    };
5318                    Box::pin(fut)
5319                }
5320                _ => {
5321                    Box::pin(async move {
5322                        let mut response = http::Response::new(
5323                            tonic::body::Body::default(),
5324                        );
5325                        let headers = response.headers_mut();
5326                        headers
5327                            .insert(
5328                                tonic::Status::GRPC_STATUS,
5329                                (tonic::Code::Unimplemented as i32).into(),
5330                            );
5331                        headers
5332                            .insert(
5333                                http::header::CONTENT_TYPE,
5334                                tonic::metadata::GRPC_CONTENT_TYPE,
5335                            );
5336                        Ok(response)
5337                    })
5338                }
5339            }
5340        }
5341    }
5342    impl<T> Clone for HummockManagerServiceServer<T> {
5343        fn clone(&self) -> Self {
5344            let inner = self.inner.clone();
5345            Self {
5346                inner,
5347                accept_compression_encodings: self.accept_compression_encodings,
5348                send_compression_encodings: self.send_compression_encodings,
5349                max_decoding_message_size: self.max_decoding_message_size,
5350                max_encoding_message_size: self.max_encoding_message_size,
5351            }
5352        }
5353    }
5354    /// Generated gRPC service name
5355    pub const SERVICE_NAME: &str = "hummock.HummockManagerService";
5356    impl<T> tonic::server::NamedService for HummockManagerServiceServer<T> {
5357        const NAME: &'static str = SERVICE_NAME;
5358    }
5359}