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