risingwave_pb/
hummock.rs

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