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"
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        }
1422    }
1423}
1424#[derive(prost_helpers::AnyPB)]
1425#[derive(Clone, PartialEq, ::prost::Message)]
1426pub struct RiseCtlUpdateCompactionConfigResponse {
1427    #[prost(message, optional, tag = "1")]
1428    pub status: ::core::option::Option<super::common::Status>,
1429}
1430#[derive(prost_helpers::AnyPB)]
1431#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1432pub struct PinVersionRequest {
1433    #[prost(uint32, tag = "1", wrapper = "crate::id::WorkerId")]
1434    pub context_id: crate::id::WorkerId,
1435}
1436#[derive(prost_helpers::AnyPB)]
1437#[derive(Clone, PartialEq, ::prost::Message)]
1438pub struct PinVersionResponse {
1439    #[prost(message, optional, tag = "1")]
1440    pub pinned_version: ::core::option::Option<HummockVersion>,
1441}
1442#[derive(prost_helpers::AnyPB)]
1443#[derive(Clone, PartialEq, ::prost::Message)]
1444pub struct SplitCompactionGroupRequest {
1445    #[prost(uint64, tag = "1")]
1446    pub group_id: u64,
1447    #[prost(uint32, repeated, tag = "2", wrapper = "crate::id::TableId")]
1448    pub table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
1449    #[prost(uint32, tag = "3")]
1450    pub partition_vnode_count: u32,
1451}
1452#[derive(prost_helpers::AnyPB)]
1453#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1454pub struct SplitCompactionGroupResponse {
1455    #[prost(uint64, tag = "1")]
1456    pub new_group_id: u64,
1457}
1458#[derive(prost_helpers::AnyPB)]
1459#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1460pub struct RiseCtlPauseVersionCheckpointRequest {}
1461#[derive(prost_helpers::AnyPB)]
1462#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1463pub struct RiseCtlPauseVersionCheckpointResponse {}
1464#[derive(prost_helpers::AnyPB)]
1465#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1466pub struct RiseCtlResumeVersionCheckpointRequest {}
1467#[derive(prost_helpers::AnyPB)]
1468#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1469pub struct RiseCtlResumeVersionCheckpointResponse {}
1470#[derive(prost_helpers::AnyPB)]
1471#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1472pub struct RiseCtlGetCheckpointVersionRequest {}
1473#[derive(prost_helpers::AnyPB)]
1474#[derive(Clone, PartialEq, ::prost::Message)]
1475pub struct RiseCtlGetCheckpointVersionResponse {
1476    #[prost(message, optional, tag = "1")]
1477    pub checkpoint_version: ::core::option::Option<HummockVersion>,
1478}
1479#[derive(prost_helpers::AnyPB)]
1480#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1481pub struct RiseCtlListCompactionStatusRequest {}
1482#[derive(prost_helpers::AnyPB)]
1483#[derive(Clone, PartialEq, ::prost::Message)]
1484pub struct RiseCtlListCompactionStatusResponse {
1485    #[prost(message, repeated, tag = "1")]
1486    pub compaction_statuses: ::prost::alloc::vec::Vec<CompactStatus>,
1487    #[prost(message, repeated, tag = "2")]
1488    pub task_assignment: ::prost::alloc::vec::Vec<CompactTaskAssignment>,
1489    #[prost(message, repeated, tag = "3")]
1490    pub task_progress: ::prost::alloc::vec::Vec<CompactTaskProgress>,
1491}
1492#[derive(prost_helpers::AnyPB)]
1493#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1494pub struct ListBranchedObjectRequest {}
1495#[derive(prost_helpers::AnyPB)]
1496#[derive(Clone, PartialEq, ::prost::Message)]
1497pub struct ListBranchedObjectResponse {
1498    #[prost(message, repeated, tag = "1")]
1499    pub branched_objects: ::prost::alloc::vec::Vec<BranchedObject>,
1500}
1501#[derive(prost_helpers::AnyPB)]
1502#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1503pub struct ListActiveWriteLimitRequest {}
1504#[derive(prost_helpers::AnyPB)]
1505#[derive(Clone, PartialEq, ::prost::Message)]
1506pub struct ListActiveWriteLimitResponse {
1507    /// < compaction group id, write limit info >
1508    #[prost(map = "uint64, message", tag = "1")]
1509    pub write_limits: ::std::collections::HashMap<u64, write_limits::WriteLimit>,
1510}
1511#[derive(prost_helpers::AnyPB)]
1512#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1513pub struct ListHummockMetaConfigRequest {}
1514#[derive(prost_helpers::AnyPB)]
1515#[derive(Clone, PartialEq, ::prost::Message)]
1516pub struct ListHummockMetaConfigResponse {
1517    #[prost(map = "string, string", tag = "1")]
1518    pub configs: ::std::collections::HashMap<
1519        ::prost::alloc::string::String,
1520        ::prost::alloc::string::String,
1521    >,
1522}
1523#[derive(prost_helpers::AnyPB)]
1524#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1525pub struct RiseCtlRebuildTableStatsRequest {}
1526#[derive(prost_helpers::AnyPB)]
1527#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1528pub struct RiseCtlRebuildTableStatsResponse {}
1529#[derive(prost_helpers::AnyPB)]
1530#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1531pub struct GetCompactionScoreRequest {
1532    #[prost(uint64, tag = "1")]
1533    pub compaction_group_id: u64,
1534}
1535#[derive(prost_helpers::AnyPB)]
1536#[derive(Clone, PartialEq, ::prost::Message)]
1537pub struct GetCompactionScoreResponse {
1538    #[prost(uint64, tag = "1")]
1539    pub compaction_group_id: u64,
1540    #[prost(message, repeated, tag = "2")]
1541    pub scores: ::prost::alloc::vec::Vec<get_compaction_score_response::PickerInfo>,
1542}
1543/// Nested message and enum types in `GetCompactionScoreResponse`.
1544pub mod get_compaction_score_response {
1545    #[derive(prost_helpers::AnyPB)]
1546    #[derive(Clone, PartialEq, ::prost::Message)]
1547    pub struct PickerInfo {
1548        #[prost(uint64, tag = "1")]
1549        pub score: u64,
1550        #[prost(uint64, tag = "2")]
1551        pub select_level: u64,
1552        #[prost(uint64, tag = "3")]
1553        pub target_level: u64,
1554        #[prost(string, tag = "4")]
1555        pub picker_type: ::prost::alloc::string::String,
1556    }
1557}
1558#[derive(prost_helpers::AnyPB)]
1559#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1560pub struct ListCompactTaskAssignmentRequest {}
1561#[derive(prost_helpers::AnyPB)]
1562#[derive(Clone, PartialEq, ::prost::Message)]
1563pub struct ListCompactTaskAssignmentResponse {
1564    #[prost(message, repeated, tag = "1")]
1565    pub task_assignment: ::prost::alloc::vec::Vec<CompactTaskAssignment>,
1566}
1567#[derive(prost_helpers::AnyPB)]
1568#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1569pub struct ListCompactTaskProgressRequest {}
1570#[derive(prost_helpers::AnyPB)]
1571#[derive(Clone, PartialEq, ::prost::Message)]
1572pub struct ListCompactTaskProgressResponse {
1573    #[prost(message, repeated, tag = "1")]
1574    pub task_progress: ::prost::alloc::vec::Vec<CompactTaskProgress>,
1575}
1576#[derive(prost_helpers::AnyPB)]
1577#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1578pub struct CancelCompactTaskRequest {
1579    #[prost(uint64, tag = "1")]
1580    pub task_id: u64,
1581    #[prost(enumeration = "compact_task::TaskStatus", tag = "2")]
1582    pub task_status: i32,
1583}
1584#[derive(prost_helpers::AnyPB)]
1585#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1586pub struct CancelCompactTaskResponse {
1587    #[prost(bool, tag = "1")]
1588    pub ret: bool,
1589}
1590#[derive(prost_helpers::AnyPB)]
1591#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1592pub struct GetVersionByEpochRequest {
1593    #[prost(uint64, tag = "1")]
1594    pub epoch: u64,
1595    #[prost(uint32, tag = "2", wrapper = "crate::id::TableId")]
1596    pub table_id: crate::id::TableId,
1597}
1598#[derive(prost_helpers::AnyPB)]
1599#[derive(Clone, PartialEq, ::prost::Message)]
1600pub struct GetVersionByEpochResponse {
1601    #[prost(message, optional, tag = "1")]
1602    pub version: ::core::option::Option<HummockVersion>,
1603}
1604#[derive(prost_helpers::AnyPB)]
1605#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1606pub struct MergeCompactionGroupRequest {
1607    #[prost(uint64, tag = "1")]
1608    pub left_group_id: u64,
1609    #[prost(uint64, tag = "2")]
1610    pub right_group_id: u64,
1611}
1612#[derive(prost_helpers::AnyPB)]
1613#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1614pub struct MergeCompactionGroupResponse {}
1615#[derive(prost_helpers::AnyPB)]
1616#[derive(Eq)]
1617#[derive(Clone, PartialEq, ::prost::Message)]
1618pub struct CompactionConfig {
1619    #[prost(uint64, tag = "1")]
1620    pub max_bytes_for_level_base: u64,
1621    #[prost(uint64, tag = "2")]
1622    pub max_level: u64,
1623    #[prost(uint64, tag = "3")]
1624    pub max_bytes_for_level_multiplier: u64,
1625    #[prost(uint64, tag = "4")]
1626    pub max_compaction_bytes: u64,
1627    #[prost(uint64, tag = "5")]
1628    pub sub_level_max_compaction_bytes: u64,
1629    #[prost(uint64, tag = "7")]
1630    pub level0_tier_compact_file_number: u64,
1631    #[prost(enumeration = "compaction_config::CompactionMode", tag = "8")]
1632    pub compaction_mode: i32,
1633    #[prost(string, repeated, tag = "9")]
1634    pub compression_algorithm: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1635    #[prost(uint64, tag = "10")]
1636    pub target_file_size_base: u64,
1637    #[prost(uint32, tag = "11")]
1638    pub compaction_filter_mask: u32,
1639    #[prost(uint32, tag = "12")]
1640    pub max_sub_compaction: u32,
1641    #[prost(uint64, tag = "13")]
1642    pub max_space_reclaim_bytes: u64,
1643    #[prost(bool, tag = "14")]
1644    pub split_by_state_table: bool,
1645    /// Compaction needs to cut the state table every time 1/weight of vnodes in the table have been processed.
1646    #[prost(uint32, tag = "6")]
1647    pub split_weight_by_vnode: u32,
1648    /// soft limit for max number of sub level number
1649    #[prost(uint64, tag = "15")]
1650    pub level0_stop_write_threshold_sub_level_number: u64,
1651    #[prost(uint64, tag = "16")]
1652    pub level0_max_compact_file_number: u64,
1653    #[prost(uint32, tag = "17")]
1654    pub level0_sub_level_compact_level_count: u32,
1655    /// for tier compaction pick overlapping level
1656    #[prost(uint32, tag = "18")]
1657    pub level0_overlapping_sub_level_compact_level_count: u32,
1658    #[prost(uint32, tag = "19")]
1659    pub tombstone_reclaim_ratio: u32,
1660    #[prost(bool, tag = "20")]
1661    pub enable_emergency_picker: bool,
1662    /// The limitation of the level count of l0 compaction
1663    #[prost(uint32, optional, tag = "21")]
1664    pub max_l0_compact_level_count: ::core::option::Option<u32>,
1665    /// The limitation of base level trivial move sst size
1666    #[prost(uint64, optional, tag = "22")]
1667    pub sst_allowed_trivial_move_min_size: ::core::option::Option<u64>,
1668    /// The limitation of auto group scheduling
1669    #[prost(bool, optional, tag = "23")]
1670    pub disable_auto_group_scheduling: ::core::option::Option<bool>,
1671    /// The limitation of the max size of the overlapping-level for the compaction
1672    /// 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`
1673    #[prost(uint64, optional, tag = "24")]
1674    pub max_overlapping_level_size: ::core::option::Option<u64>,
1675    /// The emergency compaction limitations for the level0 sstables file count
1676    #[prost(uint32, optional, tag = "25")]
1677    pub emergency_level0_sst_file_count: ::core::option::Option<u32>,
1678    /// The emergency compaction limitations for the level0 sub level partition
1679    #[prost(uint32, optional, tag = "26")]
1680    pub emergency_level0_sub_level_partition: ::core::option::Option<u32>,
1681    /// The limitation of the max sst count of the level0 to trigger the write stop
1682    #[prost(uint32, optional, tag = "27")]
1683    pub level0_stop_write_threshold_max_sst_count: ::core::option::Option<u32>,
1684    /// The limitation of the max sst size of the level0 to trigger the write stop
1685    #[prost(uint64, optional, tag = "28")]
1686    pub level0_stop_write_threshold_max_size: ::core::option::Option<u64>,
1687    /// The limitation of the max sst count of the trivial move task
1688    #[prost(uint32, optional, tag = "29")]
1689    pub sst_allowed_trivial_move_max_count: ::core::option::Option<u32>,
1690    /// Enable the optimization of the interval selection for the level0 compaction
1691    #[prost(bool, optional, tag = "30")]
1692    pub enable_optimize_l0_interval_selection: ::core::option::Option<bool>,
1693}
1694/// Nested message and enum types in `CompactionConfig`.
1695pub mod compaction_config {
1696    #[derive(prost_helpers::AnyPB)]
1697    #[derive(
1698        Clone,
1699        Copy,
1700        Debug,
1701        PartialEq,
1702        Eq,
1703        Hash,
1704        PartialOrd,
1705        Ord,
1706        ::prost::Enumeration
1707    )]
1708    #[repr(i32)]
1709    pub enum CompactionMode {
1710        Unspecified = 0,
1711        Range = 1,
1712    }
1713    impl CompactionMode {
1714        /// String value of the enum field names used in the ProtoBuf definition.
1715        ///
1716        /// The values are not transformed in any way and thus are considered stable
1717        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1718        pub fn as_str_name(&self) -> &'static str {
1719            match self {
1720                Self::Unspecified => "UNSPECIFIED",
1721                Self::Range => "RANGE",
1722            }
1723        }
1724        /// Creates an enum from field names used in the ProtoBuf definition.
1725        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1726            match value {
1727                "UNSPECIFIED" => Some(Self::Unspecified),
1728                "RANGE" => Some(Self::Range),
1729                _ => None,
1730            }
1731        }
1732    }
1733}
1734#[derive(prost_helpers::AnyPB)]
1735#[derive(Eq)]
1736#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1737pub struct TableStats {
1738    #[prost(int64, tag = "1")]
1739    pub total_key_size: i64,
1740    #[prost(int64, tag = "2")]
1741    pub total_value_size: i64,
1742    #[prost(int64, tag = "3")]
1743    pub total_key_count: i64,
1744    /// `total_compressed_size`` represents the size that the table takes up in the output sst
1745    ///   and this field is only filled and used by CN flushes, not compactor compaction
1746    #[prost(uint64, tag = "4")]
1747    pub total_compressed_size: u64,
1748}
1749#[derive(prost_helpers::AnyPB)]
1750#[derive(Clone, PartialEq, ::prost::Message)]
1751pub struct HummockVersionStats {
1752    #[prost(uint64, tag = "1")]
1753    pub hummock_version_id: u64,
1754    #[prost(map = "uint32, message", tag = "2", wrapper = "crate::id::TableId")]
1755    pub table_stats: ::std::collections::HashMap<crate::id::TableId, TableStats>,
1756}
1757#[derive(prost_helpers::AnyPB)]
1758#[derive(Clone, PartialEq, ::prost::Message)]
1759pub struct WriteLimits {
1760    /// < compaction group id, write limit info >
1761    #[prost(map = "uint64, message", tag = "1")]
1762    pub write_limits: ::std::collections::HashMap<u64, write_limits::WriteLimit>,
1763}
1764/// Nested message and enum types in `WriteLimits`.
1765pub mod write_limits {
1766    #[derive(prost_helpers::AnyPB)]
1767    #[derive(Clone, PartialEq, ::prost::Message)]
1768    pub struct WriteLimit {
1769        #[prost(uint32, repeated, tag = "1", wrapper = "crate::id::TableId")]
1770        pub table_ids: ::prost::alloc::vec::Vec<crate::id::TableId>,
1771        #[prost(string, tag = "2")]
1772        pub reason: ::prost::alloc::string::String,
1773    }
1774}
1775#[derive(prost_helpers::AnyPB)]
1776#[derive(Clone, PartialEq, ::prost::Message)]
1777pub struct BranchedObject {
1778    #[prost(uint64, tag = "1")]
1779    pub object_id: u64,
1780    #[prost(uint64, repeated, tag = "2")]
1781    pub sst_id: ::prost::alloc::vec::Vec<u64>,
1782    /// Compaction group id the SST belongs to.
1783    #[prost(uint64, tag = "3")]
1784    pub compaction_group_id: u64,
1785}
1786#[derive(prost_helpers::AnyPB)]
1787#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1788#[repr(i32)]
1789pub enum BloomFilterType {
1790    BloomFilterUnspecified = 0,
1791    Sstable = 1,
1792    Blocked = 2,
1793}
1794impl BloomFilterType {
1795    /// String value of the enum field names used in the ProtoBuf definition.
1796    ///
1797    /// The values are not transformed in any way and thus are considered stable
1798    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1799    pub fn as_str_name(&self) -> &'static str {
1800        match self {
1801            Self::BloomFilterUnspecified => "BLOOM_FILTER_UNSPECIFIED",
1802            Self::Sstable => "SSTABLE",
1803            Self::Blocked => "BLOCKED",
1804        }
1805    }
1806    /// Creates an enum from field names used in the ProtoBuf definition.
1807    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1808        match value {
1809            "BLOOM_FILTER_UNSPECIFIED" => Some(Self::BloomFilterUnspecified),
1810            "SSTABLE" => Some(Self::Sstable),
1811            "BLOCKED" => Some(Self::Blocked),
1812            _ => None,
1813        }
1814    }
1815}
1816#[derive(prost_helpers::AnyPB)]
1817#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1818#[repr(i32)]
1819pub enum LevelType {
1820    Unspecified = 0,
1821    Nonoverlapping = 1,
1822    Overlapping = 2,
1823}
1824impl LevelType {
1825    /// String value of the enum field names used in the ProtoBuf definition.
1826    ///
1827    /// The values are not transformed in any way and thus are considered stable
1828    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1829    pub fn as_str_name(&self) -> &'static str {
1830        match self {
1831            Self::Unspecified => "LEVEL_TYPE_UNSPECIFIED",
1832            Self::Nonoverlapping => "LEVEL_TYPE_NONOVERLAPPING",
1833            Self::Overlapping => "LEVEL_TYPE_OVERLAPPING",
1834        }
1835    }
1836    /// Creates an enum from field names used in the ProtoBuf definition.
1837    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1838        match value {
1839            "LEVEL_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1840            "LEVEL_TYPE_NONOVERLAPPING" => Some(Self::Nonoverlapping),
1841            "LEVEL_TYPE_OVERLAPPING" => Some(Self::Overlapping),
1842            _ => None,
1843        }
1844    }
1845}
1846#[derive(prost_helpers::AnyPB)]
1847#[derive(prost_helpers::Version)]
1848#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1849#[repr(i32)]
1850pub enum CompatibilityVersion {
1851    VersionUnspecified = 0,
1852    NoTrivialSplit = 1,
1853    NoMemberTableIds = 2,
1854    SplitGroupByTableId = 3,
1855}
1856impl CompatibilityVersion {
1857    /// String value of the enum field names used in the ProtoBuf definition.
1858    ///
1859    /// The values are not transformed in any way and thus are considered stable
1860    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1861    pub fn as_str_name(&self) -> &'static str {
1862        match self {
1863            Self::VersionUnspecified => "VERSION_UNSPECIFIED",
1864            Self::NoTrivialSplit => "NO_TRIVIAL_SPLIT",
1865            Self::NoMemberTableIds => "NO_MEMBER_TABLE_IDS",
1866            Self::SplitGroupByTableId => "SPLIT_GROUP_BY_TABLE_ID",
1867        }
1868    }
1869    /// Creates an enum from field names used in the ProtoBuf definition.
1870    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1871        match value {
1872            "VERSION_UNSPECIFIED" => Some(Self::VersionUnspecified),
1873            "NO_TRIVIAL_SPLIT" => Some(Self::NoTrivialSplit),
1874            "NO_MEMBER_TABLE_IDS" => Some(Self::NoMemberTableIds),
1875            "SPLIT_GROUP_BY_TABLE_ID" => Some(Self::SplitGroupByTableId),
1876            _ => None,
1877        }
1878    }
1879}
1880#[derive(prost_helpers::AnyPB)]
1881#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1882#[repr(i32)]
1883pub enum VectorIndexObjectType {
1884    VectorIndexObjectUnspecified = 0,
1885    VectorIndexObjectVector = 1,
1886    VectorIndexObjectHnswGraph = 2,
1887}
1888impl VectorIndexObjectType {
1889    /// String value of the enum field names used in the ProtoBuf definition.
1890    ///
1891    /// The values are not transformed in any way and thus are considered stable
1892    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1893    pub fn as_str_name(&self) -> &'static str {
1894        match self {
1895            Self::VectorIndexObjectUnspecified => "VECTOR_INDEX_OBJECT_UNSPECIFIED",
1896            Self::VectorIndexObjectVector => "VECTOR_INDEX_OBJECT_VECTOR",
1897            Self::VectorIndexObjectHnswGraph => "VECTOR_INDEX_OBJECT_HNSW_GRAPH",
1898        }
1899    }
1900    /// Creates an enum from field names used in the ProtoBuf definition.
1901    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1902        match value {
1903            "VECTOR_INDEX_OBJECT_UNSPECIFIED" => Some(Self::VectorIndexObjectUnspecified),
1904            "VECTOR_INDEX_OBJECT_VECTOR" => Some(Self::VectorIndexObjectVector),
1905            "VECTOR_INDEX_OBJECT_HNSW_GRAPH" => Some(Self::VectorIndexObjectHnswGraph),
1906            _ => None,
1907        }
1908    }
1909}
1910/// Generated client implementations.
1911pub mod hummock_manager_service_client {
1912    #![allow(
1913        unused_variables,
1914        dead_code,
1915        missing_docs,
1916        clippy::wildcard_imports,
1917        clippy::let_unit_value,
1918    )]
1919    use tonic::codegen::*;
1920    use tonic::codegen::http::Uri;
1921    #[derive(Debug, Clone)]
1922    pub struct HummockManagerServiceClient<T> {
1923        inner: tonic::client::Grpc<T>,
1924    }
1925    impl HummockManagerServiceClient<tonic::transport::Channel> {
1926        /// Attempt to create a new client by connecting to a given endpoint.
1927        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1928        where
1929            D: TryInto<tonic::transport::Endpoint>,
1930            D::Error: Into<StdError>,
1931        {
1932            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1933            Ok(Self::new(conn))
1934        }
1935    }
1936    impl<T> HummockManagerServiceClient<T>
1937    where
1938        T: tonic::client::GrpcService<tonic::body::BoxBody>,
1939        T::Error: Into<StdError>,
1940        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1941        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1942    {
1943        pub fn new(inner: T) -> Self {
1944            let inner = tonic::client::Grpc::new(inner);
1945            Self { inner }
1946        }
1947        pub fn with_origin(inner: T, origin: Uri) -> Self {
1948            let inner = tonic::client::Grpc::with_origin(inner, origin);
1949            Self { inner }
1950        }
1951        pub fn with_interceptor<F>(
1952            inner: T,
1953            interceptor: F,
1954        ) -> HummockManagerServiceClient<InterceptedService<T, F>>
1955        where
1956            F: tonic::service::Interceptor,
1957            T::ResponseBody: Default,
1958            T: tonic::codegen::Service<
1959                http::Request<tonic::body::BoxBody>,
1960                Response = http::Response<
1961                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
1962                >,
1963            >,
1964            <T as tonic::codegen::Service<
1965                http::Request<tonic::body::BoxBody>,
1966            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1967        {
1968            HummockManagerServiceClient::new(InterceptedService::new(inner, interceptor))
1969        }
1970        /// Compress requests with the given encoding.
1971        ///
1972        /// This requires the server to support it otherwise it might respond with an
1973        /// error.
1974        #[must_use]
1975        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1976            self.inner = self.inner.send_compressed(encoding);
1977            self
1978        }
1979        /// Enable decompressing responses.
1980        #[must_use]
1981        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1982            self.inner = self.inner.accept_compressed(encoding);
1983            self
1984        }
1985        /// Limits the maximum size of a decoded message.
1986        ///
1987        /// Default: `4MB`
1988        #[must_use]
1989        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1990            self.inner = self.inner.max_decoding_message_size(limit);
1991            self
1992        }
1993        /// Limits the maximum size of an encoded message.
1994        ///
1995        /// Default: `usize::MAX`
1996        #[must_use]
1997        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1998            self.inner = self.inner.max_encoding_message_size(limit);
1999            self
2000        }
2001        pub async fn unpin_version_before(
2002            &mut self,
2003            request: impl tonic::IntoRequest<super::UnpinVersionBeforeRequest>,
2004        ) -> std::result::Result<
2005            tonic::Response<super::UnpinVersionBeforeResponse>,
2006            tonic::Status,
2007        > {
2008            self.inner
2009                .ready()
2010                .await
2011                .map_err(|e| {
2012                    tonic::Status::unknown(
2013                        format!("Service was not ready: {}", e.into()),
2014                    )
2015                })?;
2016            let codec = tonic::codec::ProstCodec::default();
2017            let path = http::uri::PathAndQuery::from_static(
2018                "/hummock.HummockManagerService/UnpinVersionBefore",
2019            );
2020            let mut req = request.into_request();
2021            req.extensions_mut()
2022                .insert(
2023                    GrpcMethod::new(
2024                        "hummock.HummockManagerService",
2025                        "UnpinVersionBefore",
2026                    ),
2027                );
2028            self.inner.unary(req, path, codec).await
2029        }
2030        pub async fn get_current_version(
2031            &mut self,
2032            request: impl tonic::IntoRequest<super::GetCurrentVersionRequest>,
2033        ) -> std::result::Result<
2034            tonic::Response<super::GetCurrentVersionResponse>,
2035            tonic::Status,
2036        > {
2037            self.inner
2038                .ready()
2039                .await
2040                .map_err(|e| {
2041                    tonic::Status::unknown(
2042                        format!("Service was not ready: {}", e.into()),
2043                    )
2044                })?;
2045            let codec = tonic::codec::ProstCodec::default();
2046            let path = http::uri::PathAndQuery::from_static(
2047                "/hummock.HummockManagerService/GetCurrentVersion",
2048            );
2049            let mut req = request.into_request();
2050            req.extensions_mut()
2051                .insert(
2052                    GrpcMethod::new("hummock.HummockManagerService", "GetCurrentVersion"),
2053                );
2054            self.inner.unary(req, path, codec).await
2055        }
2056        pub async fn list_version_deltas(
2057            &mut self,
2058            request: impl tonic::IntoRequest<super::ListVersionDeltasRequest>,
2059        ) -> std::result::Result<
2060            tonic::Response<super::ListVersionDeltasResponse>,
2061            tonic::Status,
2062        > {
2063            self.inner
2064                .ready()
2065                .await
2066                .map_err(|e| {
2067                    tonic::Status::unknown(
2068                        format!("Service was not ready: {}", e.into()),
2069                    )
2070                })?;
2071            let codec = tonic::codec::ProstCodec::default();
2072            let path = http::uri::PathAndQuery::from_static(
2073                "/hummock.HummockManagerService/ListVersionDeltas",
2074            );
2075            let mut req = request.into_request();
2076            req.extensions_mut()
2077                .insert(
2078                    GrpcMethod::new("hummock.HummockManagerService", "ListVersionDeltas"),
2079                );
2080            self.inner.unary(req, path, codec).await
2081        }
2082        pub async fn replay_version_delta(
2083            &mut self,
2084            request: impl tonic::IntoRequest<super::ReplayVersionDeltaRequest>,
2085        ) -> std::result::Result<
2086            tonic::Response<super::ReplayVersionDeltaResponse>,
2087            tonic::Status,
2088        > {
2089            self.inner
2090                .ready()
2091                .await
2092                .map_err(|e| {
2093                    tonic::Status::unknown(
2094                        format!("Service was not ready: {}", e.into()),
2095                    )
2096                })?;
2097            let codec = tonic::codec::ProstCodec::default();
2098            let path = http::uri::PathAndQuery::from_static(
2099                "/hummock.HummockManagerService/ReplayVersionDelta",
2100            );
2101            let mut req = request.into_request();
2102            req.extensions_mut()
2103                .insert(
2104                    GrpcMethod::new(
2105                        "hummock.HummockManagerService",
2106                        "ReplayVersionDelta",
2107                    ),
2108                );
2109            self.inner.unary(req, path, codec).await
2110        }
2111        pub async fn get_assigned_compact_task_num(
2112            &mut self,
2113            request: impl tonic::IntoRequest<super::GetAssignedCompactTaskNumRequest>,
2114        ) -> std::result::Result<
2115            tonic::Response<super::GetAssignedCompactTaskNumResponse>,
2116            tonic::Status,
2117        > {
2118            self.inner
2119                .ready()
2120                .await
2121                .map_err(|e| {
2122                    tonic::Status::unknown(
2123                        format!("Service was not ready: {}", e.into()),
2124                    )
2125                })?;
2126            let codec = tonic::codec::ProstCodec::default();
2127            let path = http::uri::PathAndQuery::from_static(
2128                "/hummock.HummockManagerService/GetAssignedCompactTaskNum",
2129            );
2130            let mut req = request.into_request();
2131            req.extensions_mut()
2132                .insert(
2133                    GrpcMethod::new(
2134                        "hummock.HummockManagerService",
2135                        "GetAssignedCompactTaskNum",
2136                    ),
2137                );
2138            self.inner.unary(req, path, codec).await
2139        }
2140        pub async fn trigger_compaction_deterministic(
2141            &mut self,
2142            request: impl tonic::IntoRequest<
2143                super::TriggerCompactionDeterministicRequest,
2144            >,
2145        ) -> std::result::Result<
2146            tonic::Response<super::TriggerCompactionDeterministicResponse>,
2147            tonic::Status,
2148        > {
2149            self.inner
2150                .ready()
2151                .await
2152                .map_err(|e| {
2153                    tonic::Status::unknown(
2154                        format!("Service was not ready: {}", e.into()),
2155                    )
2156                })?;
2157            let codec = tonic::codec::ProstCodec::default();
2158            let path = http::uri::PathAndQuery::from_static(
2159                "/hummock.HummockManagerService/TriggerCompactionDeterministic",
2160            );
2161            let mut req = request.into_request();
2162            req.extensions_mut()
2163                .insert(
2164                    GrpcMethod::new(
2165                        "hummock.HummockManagerService",
2166                        "TriggerCompactionDeterministic",
2167                    ),
2168                );
2169            self.inner.unary(req, path, codec).await
2170        }
2171        pub async fn disable_commit_epoch(
2172            &mut self,
2173            request: impl tonic::IntoRequest<super::DisableCommitEpochRequest>,
2174        ) -> std::result::Result<
2175            tonic::Response<super::DisableCommitEpochResponse>,
2176            tonic::Status,
2177        > {
2178            self.inner
2179                .ready()
2180                .await
2181                .map_err(|e| {
2182                    tonic::Status::unknown(
2183                        format!("Service was not ready: {}", e.into()),
2184                    )
2185                })?;
2186            let codec = tonic::codec::ProstCodec::default();
2187            let path = http::uri::PathAndQuery::from_static(
2188                "/hummock.HummockManagerService/DisableCommitEpoch",
2189            );
2190            let mut req = request.into_request();
2191            req.extensions_mut()
2192                .insert(
2193                    GrpcMethod::new(
2194                        "hummock.HummockManagerService",
2195                        "DisableCommitEpoch",
2196                    ),
2197                );
2198            self.inner.unary(req, path, codec).await
2199        }
2200        pub async fn get_new_object_ids(
2201            &mut self,
2202            request: impl tonic::IntoRequest<super::GetNewObjectIdsRequest>,
2203        ) -> std::result::Result<
2204            tonic::Response<super::GetNewObjectIdsResponse>,
2205            tonic::Status,
2206        > {
2207            self.inner
2208                .ready()
2209                .await
2210                .map_err(|e| {
2211                    tonic::Status::unknown(
2212                        format!("Service was not ready: {}", e.into()),
2213                    )
2214                })?;
2215            let codec = tonic::codec::ProstCodec::default();
2216            let path = http::uri::PathAndQuery::from_static(
2217                "/hummock.HummockManagerService/GetNewObjectIds",
2218            );
2219            let mut req = request.into_request();
2220            req.extensions_mut()
2221                .insert(
2222                    GrpcMethod::new("hummock.HummockManagerService", "GetNewObjectIds"),
2223                );
2224            self.inner.unary(req, path, codec).await
2225        }
2226        pub async fn trigger_manual_compaction(
2227            &mut self,
2228            request: impl tonic::IntoRequest<super::TriggerManualCompactionRequest>,
2229        ) -> std::result::Result<
2230            tonic::Response<super::TriggerManualCompactionResponse>,
2231            tonic::Status,
2232        > {
2233            self.inner
2234                .ready()
2235                .await
2236                .map_err(|e| {
2237                    tonic::Status::unknown(
2238                        format!("Service was not ready: {}", e.into()),
2239                    )
2240                })?;
2241            let codec = tonic::codec::ProstCodec::default();
2242            let path = http::uri::PathAndQuery::from_static(
2243                "/hummock.HummockManagerService/TriggerManualCompaction",
2244            );
2245            let mut req = request.into_request();
2246            req.extensions_mut()
2247                .insert(
2248                    GrpcMethod::new(
2249                        "hummock.HummockManagerService",
2250                        "TriggerManualCompaction",
2251                    ),
2252                );
2253            self.inner.unary(req, path, codec).await
2254        }
2255        pub async fn trigger_full_gc(
2256            &mut self,
2257            request: impl tonic::IntoRequest<super::TriggerFullGcRequest>,
2258        ) -> std::result::Result<
2259            tonic::Response<super::TriggerFullGcResponse>,
2260            tonic::Status,
2261        > {
2262            self.inner
2263                .ready()
2264                .await
2265                .map_err(|e| {
2266                    tonic::Status::unknown(
2267                        format!("Service was not ready: {}", e.into()),
2268                    )
2269                })?;
2270            let codec = tonic::codec::ProstCodec::default();
2271            let path = http::uri::PathAndQuery::from_static(
2272                "/hummock.HummockManagerService/TriggerFullGC",
2273            );
2274            let mut req = request.into_request();
2275            req.extensions_mut()
2276                .insert(
2277                    GrpcMethod::new("hummock.HummockManagerService", "TriggerFullGC"),
2278                );
2279            self.inner.unary(req, path, codec).await
2280        }
2281        pub async fn rise_ctl_get_pinned_versions_summary(
2282            &mut self,
2283            request: impl tonic::IntoRequest<
2284                super::RiseCtlGetPinnedVersionsSummaryRequest,
2285            >,
2286        ) -> std::result::Result<
2287            tonic::Response<super::RiseCtlGetPinnedVersionsSummaryResponse>,
2288            tonic::Status,
2289        > {
2290            self.inner
2291                .ready()
2292                .await
2293                .map_err(|e| {
2294                    tonic::Status::unknown(
2295                        format!("Service was not ready: {}", e.into()),
2296                    )
2297                })?;
2298            let codec = tonic::codec::ProstCodec::default();
2299            let path = http::uri::PathAndQuery::from_static(
2300                "/hummock.HummockManagerService/RiseCtlGetPinnedVersionsSummary",
2301            );
2302            let mut req = request.into_request();
2303            req.extensions_mut()
2304                .insert(
2305                    GrpcMethod::new(
2306                        "hummock.HummockManagerService",
2307                        "RiseCtlGetPinnedVersionsSummary",
2308                    ),
2309                );
2310            self.inner.unary(req, path, codec).await
2311        }
2312        pub async fn rise_ctl_list_compaction_group(
2313            &mut self,
2314            request: impl tonic::IntoRequest<super::RiseCtlListCompactionGroupRequest>,
2315        ) -> std::result::Result<
2316            tonic::Response<super::RiseCtlListCompactionGroupResponse>,
2317            tonic::Status,
2318        > {
2319            self.inner
2320                .ready()
2321                .await
2322                .map_err(|e| {
2323                    tonic::Status::unknown(
2324                        format!("Service was not ready: {}", e.into()),
2325                    )
2326                })?;
2327            let codec = tonic::codec::ProstCodec::default();
2328            let path = http::uri::PathAndQuery::from_static(
2329                "/hummock.HummockManagerService/RiseCtlListCompactionGroup",
2330            );
2331            let mut req = request.into_request();
2332            req.extensions_mut()
2333                .insert(
2334                    GrpcMethod::new(
2335                        "hummock.HummockManagerService",
2336                        "RiseCtlListCompactionGroup",
2337                    ),
2338                );
2339            self.inner.unary(req, path, codec).await
2340        }
2341        pub async fn rise_ctl_update_compaction_config(
2342            &mut self,
2343            request: impl tonic::IntoRequest<super::RiseCtlUpdateCompactionConfigRequest>,
2344        ) -> std::result::Result<
2345            tonic::Response<super::RiseCtlUpdateCompactionConfigResponse>,
2346            tonic::Status,
2347        > {
2348            self.inner
2349                .ready()
2350                .await
2351                .map_err(|e| {
2352                    tonic::Status::unknown(
2353                        format!("Service was not ready: {}", e.into()),
2354                    )
2355                })?;
2356            let codec = tonic::codec::ProstCodec::default();
2357            let path = http::uri::PathAndQuery::from_static(
2358                "/hummock.HummockManagerService/RiseCtlUpdateCompactionConfig",
2359            );
2360            let mut req = request.into_request();
2361            req.extensions_mut()
2362                .insert(
2363                    GrpcMethod::new(
2364                        "hummock.HummockManagerService",
2365                        "RiseCtlUpdateCompactionConfig",
2366                    ),
2367                );
2368            self.inner.unary(req, path, codec).await
2369        }
2370        pub async fn rise_ctl_pause_version_checkpoint(
2371            &mut self,
2372            request: impl tonic::IntoRequest<super::RiseCtlPauseVersionCheckpointRequest>,
2373        ) -> std::result::Result<
2374            tonic::Response<super::RiseCtlPauseVersionCheckpointResponse>,
2375            tonic::Status,
2376        > {
2377            self.inner
2378                .ready()
2379                .await
2380                .map_err(|e| {
2381                    tonic::Status::unknown(
2382                        format!("Service was not ready: {}", e.into()),
2383                    )
2384                })?;
2385            let codec = tonic::codec::ProstCodec::default();
2386            let path = http::uri::PathAndQuery::from_static(
2387                "/hummock.HummockManagerService/RiseCtlPauseVersionCheckpoint",
2388            );
2389            let mut req = request.into_request();
2390            req.extensions_mut()
2391                .insert(
2392                    GrpcMethod::new(
2393                        "hummock.HummockManagerService",
2394                        "RiseCtlPauseVersionCheckpoint",
2395                    ),
2396                );
2397            self.inner.unary(req, path, codec).await
2398        }
2399        pub async fn rise_ctl_resume_version_checkpoint(
2400            &mut self,
2401            request: impl tonic::IntoRequest<
2402                super::RiseCtlResumeVersionCheckpointRequest,
2403            >,
2404        ) -> std::result::Result<
2405            tonic::Response<super::RiseCtlResumeVersionCheckpointResponse>,
2406            tonic::Status,
2407        > {
2408            self.inner
2409                .ready()
2410                .await
2411                .map_err(|e| {
2412                    tonic::Status::unknown(
2413                        format!("Service was not ready: {}", e.into()),
2414                    )
2415                })?;
2416            let codec = tonic::codec::ProstCodec::default();
2417            let path = http::uri::PathAndQuery::from_static(
2418                "/hummock.HummockManagerService/RiseCtlResumeVersionCheckpoint",
2419            );
2420            let mut req = request.into_request();
2421            req.extensions_mut()
2422                .insert(
2423                    GrpcMethod::new(
2424                        "hummock.HummockManagerService",
2425                        "RiseCtlResumeVersionCheckpoint",
2426                    ),
2427                );
2428            self.inner.unary(req, path, codec).await
2429        }
2430        pub async fn rise_ctl_get_checkpoint_version(
2431            &mut self,
2432            request: impl tonic::IntoRequest<super::RiseCtlGetCheckpointVersionRequest>,
2433        ) -> std::result::Result<
2434            tonic::Response<super::RiseCtlGetCheckpointVersionResponse>,
2435            tonic::Status,
2436        > {
2437            self.inner
2438                .ready()
2439                .await
2440                .map_err(|e| {
2441                    tonic::Status::unknown(
2442                        format!("Service was not ready: {}", e.into()),
2443                    )
2444                })?;
2445            let codec = tonic::codec::ProstCodec::default();
2446            let path = http::uri::PathAndQuery::from_static(
2447                "/hummock.HummockManagerService/RiseCtlGetCheckpointVersion",
2448            );
2449            let mut req = request.into_request();
2450            req.extensions_mut()
2451                .insert(
2452                    GrpcMethod::new(
2453                        "hummock.HummockManagerService",
2454                        "RiseCtlGetCheckpointVersion",
2455                    ),
2456                );
2457            self.inner.unary(req, path, codec).await
2458        }
2459        pub async fn rise_ctl_rebuild_table_stats(
2460            &mut self,
2461            request: impl tonic::IntoRequest<super::RiseCtlRebuildTableStatsRequest>,
2462        ) -> std::result::Result<
2463            tonic::Response<super::RiseCtlRebuildTableStatsResponse>,
2464            tonic::Status,
2465        > {
2466            self.inner
2467                .ready()
2468                .await
2469                .map_err(|e| {
2470                    tonic::Status::unknown(
2471                        format!("Service was not ready: {}", e.into()),
2472                    )
2473                })?;
2474            let codec = tonic::codec::ProstCodec::default();
2475            let path = http::uri::PathAndQuery::from_static(
2476                "/hummock.HummockManagerService/RiseCtlRebuildTableStats",
2477            );
2478            let mut req = request.into_request();
2479            req.extensions_mut()
2480                .insert(
2481                    GrpcMethod::new(
2482                        "hummock.HummockManagerService",
2483                        "RiseCtlRebuildTableStats",
2484                    ),
2485                );
2486            self.inner.unary(req, path, codec).await
2487        }
2488        pub async fn init_metadata_for_replay(
2489            &mut self,
2490            request: impl tonic::IntoRequest<super::InitMetadataForReplayRequest>,
2491        ) -> std::result::Result<
2492            tonic::Response<super::InitMetadataForReplayResponse>,
2493            tonic::Status,
2494        > {
2495            self.inner
2496                .ready()
2497                .await
2498                .map_err(|e| {
2499                    tonic::Status::unknown(
2500                        format!("Service was not ready: {}", e.into()),
2501                    )
2502                })?;
2503            let codec = tonic::codec::ProstCodec::default();
2504            let path = http::uri::PathAndQuery::from_static(
2505                "/hummock.HummockManagerService/InitMetadataForReplay",
2506            );
2507            let mut req = request.into_request();
2508            req.extensions_mut()
2509                .insert(
2510                    GrpcMethod::new(
2511                        "hummock.HummockManagerService",
2512                        "InitMetadataForReplay",
2513                    ),
2514                );
2515            self.inner.unary(req, path, codec).await
2516        }
2517        pub async fn pin_version(
2518            &mut self,
2519            request: impl tonic::IntoRequest<super::PinVersionRequest>,
2520        ) -> std::result::Result<
2521            tonic::Response<super::PinVersionResponse>,
2522            tonic::Status,
2523        > {
2524            self.inner
2525                .ready()
2526                .await
2527                .map_err(|e| {
2528                    tonic::Status::unknown(
2529                        format!("Service was not ready: {}", e.into()),
2530                    )
2531                })?;
2532            let codec = tonic::codec::ProstCodec::default();
2533            let path = http::uri::PathAndQuery::from_static(
2534                "/hummock.HummockManagerService/PinVersion",
2535            );
2536            let mut req = request.into_request();
2537            req.extensions_mut()
2538                .insert(GrpcMethod::new("hummock.HummockManagerService", "PinVersion"));
2539            self.inner.unary(req, path, codec).await
2540        }
2541        pub async fn split_compaction_group(
2542            &mut self,
2543            request: impl tonic::IntoRequest<super::SplitCompactionGroupRequest>,
2544        ) -> std::result::Result<
2545            tonic::Response<super::SplitCompactionGroupResponse>,
2546            tonic::Status,
2547        > {
2548            self.inner
2549                .ready()
2550                .await
2551                .map_err(|e| {
2552                    tonic::Status::unknown(
2553                        format!("Service was not ready: {}", e.into()),
2554                    )
2555                })?;
2556            let codec = tonic::codec::ProstCodec::default();
2557            let path = http::uri::PathAndQuery::from_static(
2558                "/hummock.HummockManagerService/SplitCompactionGroup",
2559            );
2560            let mut req = request.into_request();
2561            req.extensions_mut()
2562                .insert(
2563                    GrpcMethod::new(
2564                        "hummock.HummockManagerService",
2565                        "SplitCompactionGroup",
2566                    ),
2567                );
2568            self.inner.unary(req, path, codec).await
2569        }
2570        pub async fn rise_ctl_list_compaction_status(
2571            &mut self,
2572            request: impl tonic::IntoRequest<super::RiseCtlListCompactionStatusRequest>,
2573        ) -> std::result::Result<
2574            tonic::Response<super::RiseCtlListCompactionStatusResponse>,
2575            tonic::Status,
2576        > {
2577            self.inner
2578                .ready()
2579                .await
2580                .map_err(|e| {
2581                    tonic::Status::unknown(
2582                        format!("Service was not ready: {}", e.into()),
2583                    )
2584                })?;
2585            let codec = tonic::codec::ProstCodec::default();
2586            let path = http::uri::PathAndQuery::from_static(
2587                "/hummock.HummockManagerService/RiseCtlListCompactionStatus",
2588            );
2589            let mut req = request.into_request();
2590            req.extensions_mut()
2591                .insert(
2592                    GrpcMethod::new(
2593                        "hummock.HummockManagerService",
2594                        "RiseCtlListCompactionStatus",
2595                    ),
2596                );
2597            self.inner.unary(req, path, codec).await
2598        }
2599        pub async fn subscribe_compaction_event(
2600            &mut self,
2601            request: impl tonic::IntoStreamingRequest<
2602                Message = super::SubscribeCompactionEventRequest,
2603            >,
2604        ) -> std::result::Result<
2605            tonic::Response<
2606                tonic::codec::Streaming<super::SubscribeCompactionEventResponse>,
2607            >,
2608            tonic::Status,
2609        > {
2610            self.inner
2611                .ready()
2612                .await
2613                .map_err(|e| {
2614                    tonic::Status::unknown(
2615                        format!("Service was not ready: {}", e.into()),
2616                    )
2617                })?;
2618            let codec = tonic::codec::ProstCodec::default();
2619            let path = http::uri::PathAndQuery::from_static(
2620                "/hummock.HummockManagerService/SubscribeCompactionEvent",
2621            );
2622            let mut req = request.into_streaming_request();
2623            req.extensions_mut()
2624                .insert(
2625                    GrpcMethod::new(
2626                        "hummock.HummockManagerService",
2627                        "SubscribeCompactionEvent",
2628                    ),
2629                );
2630            self.inner.streaming(req, path, codec).await
2631        }
2632        pub async fn report_compaction_task(
2633            &mut self,
2634            request: impl tonic::IntoRequest<super::ReportCompactionTaskRequest>,
2635        ) -> std::result::Result<
2636            tonic::Response<super::ReportCompactionTaskResponse>,
2637            tonic::Status,
2638        > {
2639            self.inner
2640                .ready()
2641                .await
2642                .map_err(|e| {
2643                    tonic::Status::unknown(
2644                        format!("Service was not ready: {}", e.into()),
2645                    )
2646                })?;
2647            let codec = tonic::codec::ProstCodec::default();
2648            let path = http::uri::PathAndQuery::from_static(
2649                "/hummock.HummockManagerService/ReportCompactionTask",
2650            );
2651            let mut req = request.into_request();
2652            req.extensions_mut()
2653                .insert(
2654                    GrpcMethod::new(
2655                        "hummock.HummockManagerService",
2656                        "ReportCompactionTask",
2657                    ),
2658                );
2659            self.inner.unary(req, path, codec).await
2660        }
2661        pub async fn list_branched_object(
2662            &mut self,
2663            request: impl tonic::IntoRequest<super::ListBranchedObjectRequest>,
2664        ) -> std::result::Result<
2665            tonic::Response<super::ListBranchedObjectResponse>,
2666            tonic::Status,
2667        > {
2668            self.inner
2669                .ready()
2670                .await
2671                .map_err(|e| {
2672                    tonic::Status::unknown(
2673                        format!("Service was not ready: {}", e.into()),
2674                    )
2675                })?;
2676            let codec = tonic::codec::ProstCodec::default();
2677            let path = http::uri::PathAndQuery::from_static(
2678                "/hummock.HummockManagerService/ListBranchedObject",
2679            );
2680            let mut req = request.into_request();
2681            req.extensions_mut()
2682                .insert(
2683                    GrpcMethod::new(
2684                        "hummock.HummockManagerService",
2685                        "ListBranchedObject",
2686                    ),
2687                );
2688            self.inner.unary(req, path, codec).await
2689        }
2690        pub async fn list_active_write_limit(
2691            &mut self,
2692            request: impl tonic::IntoRequest<super::ListActiveWriteLimitRequest>,
2693        ) -> std::result::Result<
2694            tonic::Response<super::ListActiveWriteLimitResponse>,
2695            tonic::Status,
2696        > {
2697            self.inner
2698                .ready()
2699                .await
2700                .map_err(|e| {
2701                    tonic::Status::unknown(
2702                        format!("Service was not ready: {}", e.into()),
2703                    )
2704                })?;
2705            let codec = tonic::codec::ProstCodec::default();
2706            let path = http::uri::PathAndQuery::from_static(
2707                "/hummock.HummockManagerService/ListActiveWriteLimit",
2708            );
2709            let mut req = request.into_request();
2710            req.extensions_mut()
2711                .insert(
2712                    GrpcMethod::new(
2713                        "hummock.HummockManagerService",
2714                        "ListActiveWriteLimit",
2715                    ),
2716                );
2717            self.inner.unary(req, path, codec).await
2718        }
2719        pub async fn list_hummock_meta_config(
2720            &mut self,
2721            request: impl tonic::IntoRequest<super::ListHummockMetaConfigRequest>,
2722        ) -> std::result::Result<
2723            tonic::Response<super::ListHummockMetaConfigResponse>,
2724            tonic::Status,
2725        > {
2726            self.inner
2727                .ready()
2728                .await
2729                .map_err(|e| {
2730                    tonic::Status::unknown(
2731                        format!("Service was not ready: {}", e.into()),
2732                    )
2733                })?;
2734            let codec = tonic::codec::ProstCodec::default();
2735            let path = http::uri::PathAndQuery::from_static(
2736                "/hummock.HummockManagerService/ListHummockMetaConfig",
2737            );
2738            let mut req = request.into_request();
2739            req.extensions_mut()
2740                .insert(
2741                    GrpcMethod::new(
2742                        "hummock.HummockManagerService",
2743                        "ListHummockMetaConfig",
2744                    ),
2745                );
2746            self.inner.unary(req, path, codec).await
2747        }
2748        pub async fn get_compaction_score(
2749            &mut self,
2750            request: impl tonic::IntoRequest<super::GetCompactionScoreRequest>,
2751        ) -> std::result::Result<
2752            tonic::Response<super::GetCompactionScoreResponse>,
2753            tonic::Status,
2754        > {
2755            self.inner
2756                .ready()
2757                .await
2758                .map_err(|e| {
2759                    tonic::Status::unknown(
2760                        format!("Service was not ready: {}", e.into()),
2761                    )
2762                })?;
2763            let codec = tonic::codec::ProstCodec::default();
2764            let path = http::uri::PathAndQuery::from_static(
2765                "/hummock.HummockManagerService/GetCompactionScore",
2766            );
2767            let mut req = request.into_request();
2768            req.extensions_mut()
2769                .insert(
2770                    GrpcMethod::new(
2771                        "hummock.HummockManagerService",
2772                        "GetCompactionScore",
2773                    ),
2774                );
2775            self.inner.unary(req, path, codec).await
2776        }
2777        pub async fn list_compact_task_assignment(
2778            &mut self,
2779            request: impl tonic::IntoRequest<super::ListCompactTaskAssignmentRequest>,
2780        ) -> std::result::Result<
2781            tonic::Response<super::ListCompactTaskAssignmentResponse>,
2782            tonic::Status,
2783        > {
2784            self.inner
2785                .ready()
2786                .await
2787                .map_err(|e| {
2788                    tonic::Status::unknown(
2789                        format!("Service was not ready: {}", e.into()),
2790                    )
2791                })?;
2792            let codec = tonic::codec::ProstCodec::default();
2793            let path = http::uri::PathAndQuery::from_static(
2794                "/hummock.HummockManagerService/ListCompactTaskAssignment",
2795            );
2796            let mut req = request.into_request();
2797            req.extensions_mut()
2798                .insert(
2799                    GrpcMethod::new(
2800                        "hummock.HummockManagerService",
2801                        "ListCompactTaskAssignment",
2802                    ),
2803                );
2804            self.inner.unary(req, path, codec).await
2805        }
2806        pub async fn list_compact_task_progress(
2807            &mut self,
2808            request: impl tonic::IntoRequest<super::ListCompactTaskProgressRequest>,
2809        ) -> std::result::Result<
2810            tonic::Response<super::ListCompactTaskProgressResponse>,
2811            tonic::Status,
2812        > {
2813            self.inner
2814                .ready()
2815                .await
2816                .map_err(|e| {
2817                    tonic::Status::unknown(
2818                        format!("Service was not ready: {}", e.into()),
2819                    )
2820                })?;
2821            let codec = tonic::codec::ProstCodec::default();
2822            let path = http::uri::PathAndQuery::from_static(
2823                "/hummock.HummockManagerService/ListCompactTaskProgress",
2824            );
2825            let mut req = request.into_request();
2826            req.extensions_mut()
2827                .insert(
2828                    GrpcMethod::new(
2829                        "hummock.HummockManagerService",
2830                        "ListCompactTaskProgress",
2831                    ),
2832                );
2833            self.inner.unary(req, path, codec).await
2834        }
2835        pub async fn cancel_compact_task(
2836            &mut self,
2837            request: impl tonic::IntoRequest<super::CancelCompactTaskRequest>,
2838        ) -> std::result::Result<
2839            tonic::Response<super::CancelCompactTaskResponse>,
2840            tonic::Status,
2841        > {
2842            self.inner
2843                .ready()
2844                .await
2845                .map_err(|e| {
2846                    tonic::Status::unknown(
2847                        format!("Service was not ready: {}", e.into()),
2848                    )
2849                })?;
2850            let codec = tonic::codec::ProstCodec::default();
2851            let path = http::uri::PathAndQuery::from_static(
2852                "/hummock.HummockManagerService/CancelCompactTask",
2853            );
2854            let mut req = request.into_request();
2855            req.extensions_mut()
2856                .insert(
2857                    GrpcMethod::new("hummock.HummockManagerService", "CancelCompactTask"),
2858                );
2859            self.inner.unary(req, path, codec).await
2860        }
2861        pub async fn get_version_by_epoch(
2862            &mut self,
2863            request: impl tonic::IntoRequest<super::GetVersionByEpochRequest>,
2864        ) -> std::result::Result<
2865            tonic::Response<super::GetVersionByEpochResponse>,
2866            tonic::Status,
2867        > {
2868            self.inner
2869                .ready()
2870                .await
2871                .map_err(|e| {
2872                    tonic::Status::unknown(
2873                        format!("Service was not ready: {}", e.into()),
2874                    )
2875                })?;
2876            let codec = tonic::codec::ProstCodec::default();
2877            let path = http::uri::PathAndQuery::from_static(
2878                "/hummock.HummockManagerService/GetVersionByEpoch",
2879            );
2880            let mut req = request.into_request();
2881            req.extensions_mut()
2882                .insert(
2883                    GrpcMethod::new("hummock.HummockManagerService", "GetVersionByEpoch"),
2884                );
2885            self.inner.unary(req, path, codec).await
2886        }
2887        pub async fn merge_compaction_group(
2888            &mut self,
2889            request: impl tonic::IntoRequest<super::MergeCompactionGroupRequest>,
2890        ) -> std::result::Result<
2891            tonic::Response<super::MergeCompactionGroupResponse>,
2892            tonic::Status,
2893        > {
2894            self.inner
2895                .ready()
2896                .await
2897                .map_err(|e| {
2898                    tonic::Status::unknown(
2899                        format!("Service was not ready: {}", e.into()),
2900                    )
2901                })?;
2902            let codec = tonic::codec::ProstCodec::default();
2903            let path = http::uri::PathAndQuery::from_static(
2904                "/hummock.HummockManagerService/MergeCompactionGroup",
2905            );
2906            let mut req = request.into_request();
2907            req.extensions_mut()
2908                .insert(
2909                    GrpcMethod::new(
2910                        "hummock.HummockManagerService",
2911                        "MergeCompactionGroup",
2912                    ),
2913                );
2914            self.inner.unary(req, path, codec).await
2915        }
2916        /// iceberg
2917        pub async fn subscribe_iceberg_compaction_event(
2918            &mut self,
2919            request: impl tonic::IntoStreamingRequest<
2920                Message = super::super::iceberg_compaction::SubscribeIcebergCompactionEventRequest,
2921            >,
2922        ) -> std::result::Result<
2923            tonic::Response<
2924                tonic::codec::Streaming<
2925                    super::super::iceberg_compaction::SubscribeIcebergCompactionEventResponse,
2926                >,
2927            >,
2928            tonic::Status,
2929        > {
2930            self.inner
2931                .ready()
2932                .await
2933                .map_err(|e| {
2934                    tonic::Status::unknown(
2935                        format!("Service was not ready: {}", e.into()),
2936                    )
2937                })?;
2938            let codec = tonic::codec::ProstCodec::default();
2939            let path = http::uri::PathAndQuery::from_static(
2940                "/hummock.HummockManagerService/SubscribeIcebergCompactionEvent",
2941            );
2942            let mut req = request.into_streaming_request();
2943            req.extensions_mut()
2944                .insert(
2945                    GrpcMethod::new(
2946                        "hummock.HummockManagerService",
2947                        "SubscribeIcebergCompactionEvent",
2948                    ),
2949                );
2950            self.inner.streaming(req, path, codec).await
2951        }
2952    }
2953}
2954/// Generated server implementations.
2955pub mod hummock_manager_service_server {
2956    #![allow(
2957        unused_variables,
2958        dead_code,
2959        missing_docs,
2960        clippy::wildcard_imports,
2961        clippy::let_unit_value,
2962    )]
2963    use tonic::codegen::*;
2964    /// Generated trait containing gRPC methods that should be implemented for use with HummockManagerServiceServer.
2965    #[async_trait]
2966    pub trait HummockManagerService: std::marker::Send + std::marker::Sync + 'static {
2967        async fn unpin_version_before(
2968            &self,
2969            request: tonic::Request<super::UnpinVersionBeforeRequest>,
2970        ) -> std::result::Result<
2971            tonic::Response<super::UnpinVersionBeforeResponse>,
2972            tonic::Status,
2973        >;
2974        async fn get_current_version(
2975            &self,
2976            request: tonic::Request<super::GetCurrentVersionRequest>,
2977        ) -> std::result::Result<
2978            tonic::Response<super::GetCurrentVersionResponse>,
2979            tonic::Status,
2980        >;
2981        async fn list_version_deltas(
2982            &self,
2983            request: tonic::Request<super::ListVersionDeltasRequest>,
2984        ) -> std::result::Result<
2985            tonic::Response<super::ListVersionDeltasResponse>,
2986            tonic::Status,
2987        >;
2988        async fn replay_version_delta(
2989            &self,
2990            request: tonic::Request<super::ReplayVersionDeltaRequest>,
2991        ) -> std::result::Result<
2992            tonic::Response<super::ReplayVersionDeltaResponse>,
2993            tonic::Status,
2994        >;
2995        async fn get_assigned_compact_task_num(
2996            &self,
2997            request: tonic::Request<super::GetAssignedCompactTaskNumRequest>,
2998        ) -> std::result::Result<
2999            tonic::Response<super::GetAssignedCompactTaskNumResponse>,
3000            tonic::Status,
3001        >;
3002        async fn trigger_compaction_deterministic(
3003            &self,
3004            request: tonic::Request<super::TriggerCompactionDeterministicRequest>,
3005        ) -> std::result::Result<
3006            tonic::Response<super::TriggerCompactionDeterministicResponse>,
3007            tonic::Status,
3008        >;
3009        async fn disable_commit_epoch(
3010            &self,
3011            request: tonic::Request<super::DisableCommitEpochRequest>,
3012        ) -> std::result::Result<
3013            tonic::Response<super::DisableCommitEpochResponse>,
3014            tonic::Status,
3015        >;
3016        async fn get_new_object_ids(
3017            &self,
3018            request: tonic::Request<super::GetNewObjectIdsRequest>,
3019        ) -> std::result::Result<
3020            tonic::Response<super::GetNewObjectIdsResponse>,
3021            tonic::Status,
3022        >;
3023        async fn trigger_manual_compaction(
3024            &self,
3025            request: tonic::Request<super::TriggerManualCompactionRequest>,
3026        ) -> std::result::Result<
3027            tonic::Response<super::TriggerManualCompactionResponse>,
3028            tonic::Status,
3029        >;
3030        async fn trigger_full_gc(
3031            &self,
3032            request: tonic::Request<super::TriggerFullGcRequest>,
3033        ) -> std::result::Result<
3034            tonic::Response<super::TriggerFullGcResponse>,
3035            tonic::Status,
3036        >;
3037        async fn rise_ctl_get_pinned_versions_summary(
3038            &self,
3039            request: tonic::Request<super::RiseCtlGetPinnedVersionsSummaryRequest>,
3040        ) -> std::result::Result<
3041            tonic::Response<super::RiseCtlGetPinnedVersionsSummaryResponse>,
3042            tonic::Status,
3043        >;
3044        async fn rise_ctl_list_compaction_group(
3045            &self,
3046            request: tonic::Request<super::RiseCtlListCompactionGroupRequest>,
3047        ) -> std::result::Result<
3048            tonic::Response<super::RiseCtlListCompactionGroupResponse>,
3049            tonic::Status,
3050        >;
3051        async fn rise_ctl_update_compaction_config(
3052            &self,
3053            request: tonic::Request<super::RiseCtlUpdateCompactionConfigRequest>,
3054        ) -> std::result::Result<
3055            tonic::Response<super::RiseCtlUpdateCompactionConfigResponse>,
3056            tonic::Status,
3057        >;
3058        async fn rise_ctl_pause_version_checkpoint(
3059            &self,
3060            request: tonic::Request<super::RiseCtlPauseVersionCheckpointRequest>,
3061        ) -> std::result::Result<
3062            tonic::Response<super::RiseCtlPauseVersionCheckpointResponse>,
3063            tonic::Status,
3064        >;
3065        async fn rise_ctl_resume_version_checkpoint(
3066            &self,
3067            request: tonic::Request<super::RiseCtlResumeVersionCheckpointRequest>,
3068        ) -> std::result::Result<
3069            tonic::Response<super::RiseCtlResumeVersionCheckpointResponse>,
3070            tonic::Status,
3071        >;
3072        async fn rise_ctl_get_checkpoint_version(
3073            &self,
3074            request: tonic::Request<super::RiseCtlGetCheckpointVersionRequest>,
3075        ) -> std::result::Result<
3076            tonic::Response<super::RiseCtlGetCheckpointVersionResponse>,
3077            tonic::Status,
3078        >;
3079        async fn rise_ctl_rebuild_table_stats(
3080            &self,
3081            request: tonic::Request<super::RiseCtlRebuildTableStatsRequest>,
3082        ) -> std::result::Result<
3083            tonic::Response<super::RiseCtlRebuildTableStatsResponse>,
3084            tonic::Status,
3085        >;
3086        async fn init_metadata_for_replay(
3087            &self,
3088            request: tonic::Request<super::InitMetadataForReplayRequest>,
3089        ) -> std::result::Result<
3090            tonic::Response<super::InitMetadataForReplayResponse>,
3091            tonic::Status,
3092        >;
3093        async fn pin_version(
3094            &self,
3095            request: tonic::Request<super::PinVersionRequest>,
3096        ) -> std::result::Result<
3097            tonic::Response<super::PinVersionResponse>,
3098            tonic::Status,
3099        >;
3100        async fn split_compaction_group(
3101            &self,
3102            request: tonic::Request<super::SplitCompactionGroupRequest>,
3103        ) -> std::result::Result<
3104            tonic::Response<super::SplitCompactionGroupResponse>,
3105            tonic::Status,
3106        >;
3107        async fn rise_ctl_list_compaction_status(
3108            &self,
3109            request: tonic::Request<super::RiseCtlListCompactionStatusRequest>,
3110        ) -> std::result::Result<
3111            tonic::Response<super::RiseCtlListCompactionStatusResponse>,
3112            tonic::Status,
3113        >;
3114        /// Server streaming response type for the SubscribeCompactionEvent method.
3115        type SubscribeCompactionEventStream: tonic::codegen::tokio_stream::Stream<
3116                Item = std::result::Result<
3117                    super::SubscribeCompactionEventResponse,
3118                    tonic::Status,
3119                >,
3120            >
3121            + std::marker::Send
3122            + 'static;
3123        async fn subscribe_compaction_event(
3124            &self,
3125            request: tonic::Request<
3126                tonic::Streaming<super::SubscribeCompactionEventRequest>,
3127            >,
3128        ) -> std::result::Result<
3129            tonic::Response<Self::SubscribeCompactionEventStream>,
3130            tonic::Status,
3131        >;
3132        async fn report_compaction_task(
3133            &self,
3134            request: tonic::Request<super::ReportCompactionTaskRequest>,
3135        ) -> std::result::Result<
3136            tonic::Response<super::ReportCompactionTaskResponse>,
3137            tonic::Status,
3138        >;
3139        async fn list_branched_object(
3140            &self,
3141            request: tonic::Request<super::ListBranchedObjectRequest>,
3142        ) -> std::result::Result<
3143            tonic::Response<super::ListBranchedObjectResponse>,
3144            tonic::Status,
3145        >;
3146        async fn list_active_write_limit(
3147            &self,
3148            request: tonic::Request<super::ListActiveWriteLimitRequest>,
3149        ) -> std::result::Result<
3150            tonic::Response<super::ListActiveWriteLimitResponse>,
3151            tonic::Status,
3152        >;
3153        async fn list_hummock_meta_config(
3154            &self,
3155            request: tonic::Request<super::ListHummockMetaConfigRequest>,
3156        ) -> std::result::Result<
3157            tonic::Response<super::ListHummockMetaConfigResponse>,
3158            tonic::Status,
3159        >;
3160        async fn get_compaction_score(
3161            &self,
3162            request: tonic::Request<super::GetCompactionScoreRequest>,
3163        ) -> std::result::Result<
3164            tonic::Response<super::GetCompactionScoreResponse>,
3165            tonic::Status,
3166        >;
3167        async fn list_compact_task_assignment(
3168            &self,
3169            request: tonic::Request<super::ListCompactTaskAssignmentRequest>,
3170        ) -> std::result::Result<
3171            tonic::Response<super::ListCompactTaskAssignmentResponse>,
3172            tonic::Status,
3173        >;
3174        async fn list_compact_task_progress(
3175            &self,
3176            request: tonic::Request<super::ListCompactTaskProgressRequest>,
3177        ) -> std::result::Result<
3178            tonic::Response<super::ListCompactTaskProgressResponse>,
3179            tonic::Status,
3180        >;
3181        async fn cancel_compact_task(
3182            &self,
3183            request: tonic::Request<super::CancelCompactTaskRequest>,
3184        ) -> std::result::Result<
3185            tonic::Response<super::CancelCompactTaskResponse>,
3186            tonic::Status,
3187        >;
3188        async fn get_version_by_epoch(
3189            &self,
3190            request: tonic::Request<super::GetVersionByEpochRequest>,
3191        ) -> std::result::Result<
3192            tonic::Response<super::GetVersionByEpochResponse>,
3193            tonic::Status,
3194        >;
3195        async fn merge_compaction_group(
3196            &self,
3197            request: tonic::Request<super::MergeCompactionGroupRequest>,
3198        ) -> std::result::Result<
3199            tonic::Response<super::MergeCompactionGroupResponse>,
3200            tonic::Status,
3201        >;
3202        /// Server streaming response type for the SubscribeIcebergCompactionEvent method.
3203        type SubscribeIcebergCompactionEventStream: tonic::codegen::tokio_stream::Stream<
3204                Item = std::result::Result<
3205                    super::super::iceberg_compaction::SubscribeIcebergCompactionEventResponse,
3206                    tonic::Status,
3207                >,
3208            >
3209            + std::marker::Send
3210            + 'static;
3211        /// iceberg
3212        async fn subscribe_iceberg_compaction_event(
3213            &self,
3214            request: tonic::Request<
3215                tonic::Streaming<
3216                    super::super::iceberg_compaction::SubscribeIcebergCompactionEventRequest,
3217                >,
3218            >,
3219        ) -> std::result::Result<
3220            tonic::Response<Self::SubscribeIcebergCompactionEventStream>,
3221            tonic::Status,
3222        >;
3223    }
3224    #[derive(Debug)]
3225    pub struct HummockManagerServiceServer<T> {
3226        inner: Arc<T>,
3227        accept_compression_encodings: EnabledCompressionEncodings,
3228        send_compression_encodings: EnabledCompressionEncodings,
3229        max_decoding_message_size: Option<usize>,
3230        max_encoding_message_size: Option<usize>,
3231    }
3232    impl<T> HummockManagerServiceServer<T> {
3233        pub fn new(inner: T) -> Self {
3234            Self::from_arc(Arc::new(inner))
3235        }
3236        pub fn from_arc(inner: Arc<T>) -> Self {
3237            Self {
3238                inner,
3239                accept_compression_encodings: Default::default(),
3240                send_compression_encodings: Default::default(),
3241                max_decoding_message_size: None,
3242                max_encoding_message_size: None,
3243            }
3244        }
3245        pub fn with_interceptor<F>(
3246            inner: T,
3247            interceptor: F,
3248        ) -> InterceptedService<Self, F>
3249        where
3250            F: tonic::service::Interceptor,
3251        {
3252            InterceptedService::new(Self::new(inner), interceptor)
3253        }
3254        /// Enable decompressing requests with the given encoding.
3255        #[must_use]
3256        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
3257            self.accept_compression_encodings.enable(encoding);
3258            self
3259        }
3260        /// Compress responses with the given encoding, if the client supports it.
3261        #[must_use]
3262        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
3263            self.send_compression_encodings.enable(encoding);
3264            self
3265        }
3266        /// Limits the maximum size of a decoded message.
3267        ///
3268        /// Default: `4MB`
3269        #[must_use]
3270        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
3271            self.max_decoding_message_size = Some(limit);
3272            self
3273        }
3274        /// Limits the maximum size of an encoded message.
3275        ///
3276        /// Default: `usize::MAX`
3277        #[must_use]
3278        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
3279            self.max_encoding_message_size = Some(limit);
3280            self
3281        }
3282    }
3283    impl<T, B> tonic::codegen::Service<http::Request<B>>
3284    for HummockManagerServiceServer<T>
3285    where
3286        T: HummockManagerService,
3287        B: Body + std::marker::Send + 'static,
3288        B::Error: Into<StdError> + std::marker::Send + 'static,
3289    {
3290        type Response = http::Response<tonic::body::BoxBody>;
3291        type Error = std::convert::Infallible;
3292        type Future = BoxFuture<Self::Response, Self::Error>;
3293        fn poll_ready(
3294            &mut self,
3295            _cx: &mut Context<'_>,
3296        ) -> Poll<std::result::Result<(), Self::Error>> {
3297            Poll::Ready(Ok(()))
3298        }
3299        fn call(&mut self, req: http::Request<B>) -> Self::Future {
3300            match req.uri().path() {
3301                "/hummock.HummockManagerService/UnpinVersionBefore" => {
3302                    #[allow(non_camel_case_types)]
3303                    struct UnpinVersionBeforeSvc<T: HummockManagerService>(pub Arc<T>);
3304                    impl<
3305                        T: HummockManagerService,
3306                    > tonic::server::UnaryService<super::UnpinVersionBeforeRequest>
3307                    for UnpinVersionBeforeSvc<T> {
3308                        type Response = super::UnpinVersionBeforeResponse;
3309                        type Future = BoxFuture<
3310                            tonic::Response<Self::Response>,
3311                            tonic::Status,
3312                        >;
3313                        fn call(
3314                            &mut self,
3315                            request: tonic::Request<super::UnpinVersionBeforeRequest>,
3316                        ) -> Self::Future {
3317                            let inner = Arc::clone(&self.0);
3318                            let fut = async move {
3319                                <T as HummockManagerService>::unpin_version_before(
3320                                        &inner,
3321                                        request,
3322                                    )
3323                                    .await
3324                            };
3325                            Box::pin(fut)
3326                        }
3327                    }
3328                    let accept_compression_encodings = self.accept_compression_encodings;
3329                    let send_compression_encodings = self.send_compression_encodings;
3330                    let max_decoding_message_size = self.max_decoding_message_size;
3331                    let max_encoding_message_size = self.max_encoding_message_size;
3332                    let inner = self.inner.clone();
3333                    let fut = async move {
3334                        let method = UnpinVersionBeforeSvc(inner);
3335                        let codec = tonic::codec::ProstCodec::default();
3336                        let mut grpc = tonic::server::Grpc::new(codec)
3337                            .apply_compression_config(
3338                                accept_compression_encodings,
3339                                send_compression_encodings,
3340                            )
3341                            .apply_max_message_size_config(
3342                                max_decoding_message_size,
3343                                max_encoding_message_size,
3344                            );
3345                        let res = grpc.unary(method, req).await;
3346                        Ok(res)
3347                    };
3348                    Box::pin(fut)
3349                }
3350                "/hummock.HummockManagerService/GetCurrentVersion" => {
3351                    #[allow(non_camel_case_types)]
3352                    struct GetCurrentVersionSvc<T: HummockManagerService>(pub Arc<T>);
3353                    impl<
3354                        T: HummockManagerService,
3355                    > tonic::server::UnaryService<super::GetCurrentVersionRequest>
3356                    for GetCurrentVersionSvc<T> {
3357                        type Response = super::GetCurrentVersionResponse;
3358                        type Future = BoxFuture<
3359                            tonic::Response<Self::Response>,
3360                            tonic::Status,
3361                        >;
3362                        fn call(
3363                            &mut self,
3364                            request: tonic::Request<super::GetCurrentVersionRequest>,
3365                        ) -> Self::Future {
3366                            let inner = Arc::clone(&self.0);
3367                            let fut = async move {
3368                                <T as HummockManagerService>::get_current_version(
3369                                        &inner,
3370                                        request,
3371                                    )
3372                                    .await
3373                            };
3374                            Box::pin(fut)
3375                        }
3376                    }
3377                    let accept_compression_encodings = self.accept_compression_encodings;
3378                    let send_compression_encodings = self.send_compression_encodings;
3379                    let max_decoding_message_size = self.max_decoding_message_size;
3380                    let max_encoding_message_size = self.max_encoding_message_size;
3381                    let inner = self.inner.clone();
3382                    let fut = async move {
3383                        let method = GetCurrentVersionSvc(inner);
3384                        let codec = tonic::codec::ProstCodec::default();
3385                        let mut grpc = tonic::server::Grpc::new(codec)
3386                            .apply_compression_config(
3387                                accept_compression_encodings,
3388                                send_compression_encodings,
3389                            )
3390                            .apply_max_message_size_config(
3391                                max_decoding_message_size,
3392                                max_encoding_message_size,
3393                            );
3394                        let res = grpc.unary(method, req).await;
3395                        Ok(res)
3396                    };
3397                    Box::pin(fut)
3398                }
3399                "/hummock.HummockManagerService/ListVersionDeltas" => {
3400                    #[allow(non_camel_case_types)]
3401                    struct ListVersionDeltasSvc<T: HummockManagerService>(pub Arc<T>);
3402                    impl<
3403                        T: HummockManagerService,
3404                    > tonic::server::UnaryService<super::ListVersionDeltasRequest>
3405                    for ListVersionDeltasSvc<T> {
3406                        type Response = super::ListVersionDeltasResponse;
3407                        type Future = BoxFuture<
3408                            tonic::Response<Self::Response>,
3409                            tonic::Status,
3410                        >;
3411                        fn call(
3412                            &mut self,
3413                            request: tonic::Request<super::ListVersionDeltasRequest>,
3414                        ) -> Self::Future {
3415                            let inner = Arc::clone(&self.0);
3416                            let fut = async move {
3417                                <T as HummockManagerService>::list_version_deltas(
3418                                        &inner,
3419                                        request,
3420                                    )
3421                                    .await
3422                            };
3423                            Box::pin(fut)
3424                        }
3425                    }
3426                    let accept_compression_encodings = self.accept_compression_encodings;
3427                    let send_compression_encodings = self.send_compression_encodings;
3428                    let max_decoding_message_size = self.max_decoding_message_size;
3429                    let max_encoding_message_size = self.max_encoding_message_size;
3430                    let inner = self.inner.clone();
3431                    let fut = async move {
3432                        let method = ListVersionDeltasSvc(inner);
3433                        let codec = tonic::codec::ProstCodec::default();
3434                        let mut grpc = tonic::server::Grpc::new(codec)
3435                            .apply_compression_config(
3436                                accept_compression_encodings,
3437                                send_compression_encodings,
3438                            )
3439                            .apply_max_message_size_config(
3440                                max_decoding_message_size,
3441                                max_encoding_message_size,
3442                            );
3443                        let res = grpc.unary(method, req).await;
3444                        Ok(res)
3445                    };
3446                    Box::pin(fut)
3447                }
3448                "/hummock.HummockManagerService/ReplayVersionDelta" => {
3449                    #[allow(non_camel_case_types)]
3450                    struct ReplayVersionDeltaSvc<T: HummockManagerService>(pub Arc<T>);
3451                    impl<
3452                        T: HummockManagerService,
3453                    > tonic::server::UnaryService<super::ReplayVersionDeltaRequest>
3454                    for ReplayVersionDeltaSvc<T> {
3455                        type Response = super::ReplayVersionDeltaResponse;
3456                        type Future = BoxFuture<
3457                            tonic::Response<Self::Response>,
3458                            tonic::Status,
3459                        >;
3460                        fn call(
3461                            &mut self,
3462                            request: tonic::Request<super::ReplayVersionDeltaRequest>,
3463                        ) -> Self::Future {
3464                            let inner = Arc::clone(&self.0);
3465                            let fut = async move {
3466                                <T as HummockManagerService>::replay_version_delta(
3467                                        &inner,
3468                                        request,
3469                                    )
3470                                    .await
3471                            };
3472                            Box::pin(fut)
3473                        }
3474                    }
3475                    let accept_compression_encodings = self.accept_compression_encodings;
3476                    let send_compression_encodings = self.send_compression_encodings;
3477                    let max_decoding_message_size = self.max_decoding_message_size;
3478                    let max_encoding_message_size = self.max_encoding_message_size;
3479                    let inner = self.inner.clone();
3480                    let fut = async move {
3481                        let method = ReplayVersionDeltaSvc(inner);
3482                        let codec = tonic::codec::ProstCodec::default();
3483                        let mut grpc = tonic::server::Grpc::new(codec)
3484                            .apply_compression_config(
3485                                accept_compression_encodings,
3486                                send_compression_encodings,
3487                            )
3488                            .apply_max_message_size_config(
3489                                max_decoding_message_size,
3490                                max_encoding_message_size,
3491                            );
3492                        let res = grpc.unary(method, req).await;
3493                        Ok(res)
3494                    };
3495                    Box::pin(fut)
3496                }
3497                "/hummock.HummockManagerService/GetAssignedCompactTaskNum" => {
3498                    #[allow(non_camel_case_types)]
3499                    struct GetAssignedCompactTaskNumSvc<T: HummockManagerService>(
3500                        pub Arc<T>,
3501                    );
3502                    impl<
3503                        T: HummockManagerService,
3504                    > tonic::server::UnaryService<
3505                        super::GetAssignedCompactTaskNumRequest,
3506                    > for GetAssignedCompactTaskNumSvc<T> {
3507                        type Response = super::GetAssignedCompactTaskNumResponse;
3508                        type Future = BoxFuture<
3509                            tonic::Response<Self::Response>,
3510                            tonic::Status,
3511                        >;
3512                        fn call(
3513                            &mut self,
3514                            request: tonic::Request<
3515                                super::GetAssignedCompactTaskNumRequest,
3516                            >,
3517                        ) -> Self::Future {
3518                            let inner = Arc::clone(&self.0);
3519                            let fut = async move {
3520                                <T as HummockManagerService>::get_assigned_compact_task_num(
3521                                        &inner,
3522                                        request,
3523                                    )
3524                                    .await
3525                            };
3526                            Box::pin(fut)
3527                        }
3528                    }
3529                    let accept_compression_encodings = self.accept_compression_encodings;
3530                    let send_compression_encodings = self.send_compression_encodings;
3531                    let max_decoding_message_size = self.max_decoding_message_size;
3532                    let max_encoding_message_size = self.max_encoding_message_size;
3533                    let inner = self.inner.clone();
3534                    let fut = async move {
3535                        let method = GetAssignedCompactTaskNumSvc(inner);
3536                        let codec = tonic::codec::ProstCodec::default();
3537                        let mut grpc = tonic::server::Grpc::new(codec)
3538                            .apply_compression_config(
3539                                accept_compression_encodings,
3540                                send_compression_encodings,
3541                            )
3542                            .apply_max_message_size_config(
3543                                max_decoding_message_size,
3544                                max_encoding_message_size,
3545                            );
3546                        let res = grpc.unary(method, req).await;
3547                        Ok(res)
3548                    };
3549                    Box::pin(fut)
3550                }
3551                "/hummock.HummockManagerService/TriggerCompactionDeterministic" => {
3552                    #[allow(non_camel_case_types)]
3553                    struct TriggerCompactionDeterministicSvc<T: HummockManagerService>(
3554                        pub Arc<T>,
3555                    );
3556                    impl<
3557                        T: HummockManagerService,
3558                    > tonic::server::UnaryService<
3559                        super::TriggerCompactionDeterministicRequest,
3560                    > for TriggerCompactionDeterministicSvc<T> {
3561                        type Response = super::TriggerCompactionDeterministicResponse;
3562                        type Future = BoxFuture<
3563                            tonic::Response<Self::Response>,
3564                            tonic::Status,
3565                        >;
3566                        fn call(
3567                            &mut self,
3568                            request: tonic::Request<
3569                                super::TriggerCompactionDeterministicRequest,
3570                            >,
3571                        ) -> Self::Future {
3572                            let inner = Arc::clone(&self.0);
3573                            let fut = async move {
3574                                <T as HummockManagerService>::trigger_compaction_deterministic(
3575                                        &inner,
3576                                        request,
3577                                    )
3578                                    .await
3579                            };
3580                            Box::pin(fut)
3581                        }
3582                    }
3583                    let accept_compression_encodings = self.accept_compression_encodings;
3584                    let send_compression_encodings = self.send_compression_encodings;
3585                    let max_decoding_message_size = self.max_decoding_message_size;
3586                    let max_encoding_message_size = self.max_encoding_message_size;
3587                    let inner = self.inner.clone();
3588                    let fut = async move {
3589                        let method = TriggerCompactionDeterministicSvc(inner);
3590                        let codec = tonic::codec::ProstCodec::default();
3591                        let mut grpc = tonic::server::Grpc::new(codec)
3592                            .apply_compression_config(
3593                                accept_compression_encodings,
3594                                send_compression_encodings,
3595                            )
3596                            .apply_max_message_size_config(
3597                                max_decoding_message_size,
3598                                max_encoding_message_size,
3599                            );
3600                        let res = grpc.unary(method, req).await;
3601                        Ok(res)
3602                    };
3603                    Box::pin(fut)
3604                }
3605                "/hummock.HummockManagerService/DisableCommitEpoch" => {
3606                    #[allow(non_camel_case_types)]
3607                    struct DisableCommitEpochSvc<T: HummockManagerService>(pub Arc<T>);
3608                    impl<
3609                        T: HummockManagerService,
3610                    > tonic::server::UnaryService<super::DisableCommitEpochRequest>
3611                    for DisableCommitEpochSvc<T> {
3612                        type Response = super::DisableCommitEpochResponse;
3613                        type Future = BoxFuture<
3614                            tonic::Response<Self::Response>,
3615                            tonic::Status,
3616                        >;
3617                        fn call(
3618                            &mut self,
3619                            request: tonic::Request<super::DisableCommitEpochRequest>,
3620                        ) -> Self::Future {
3621                            let inner = Arc::clone(&self.0);
3622                            let fut = async move {
3623                                <T as HummockManagerService>::disable_commit_epoch(
3624                                        &inner,
3625                                        request,
3626                                    )
3627                                    .await
3628                            };
3629                            Box::pin(fut)
3630                        }
3631                    }
3632                    let accept_compression_encodings = self.accept_compression_encodings;
3633                    let send_compression_encodings = self.send_compression_encodings;
3634                    let max_decoding_message_size = self.max_decoding_message_size;
3635                    let max_encoding_message_size = self.max_encoding_message_size;
3636                    let inner = self.inner.clone();
3637                    let fut = async move {
3638                        let method = DisableCommitEpochSvc(inner);
3639                        let codec = tonic::codec::ProstCodec::default();
3640                        let mut grpc = tonic::server::Grpc::new(codec)
3641                            .apply_compression_config(
3642                                accept_compression_encodings,
3643                                send_compression_encodings,
3644                            )
3645                            .apply_max_message_size_config(
3646                                max_decoding_message_size,
3647                                max_encoding_message_size,
3648                            );
3649                        let res = grpc.unary(method, req).await;
3650                        Ok(res)
3651                    };
3652                    Box::pin(fut)
3653                }
3654                "/hummock.HummockManagerService/GetNewObjectIds" => {
3655                    #[allow(non_camel_case_types)]
3656                    struct GetNewObjectIdsSvc<T: HummockManagerService>(pub Arc<T>);
3657                    impl<
3658                        T: HummockManagerService,
3659                    > tonic::server::UnaryService<super::GetNewObjectIdsRequest>
3660                    for GetNewObjectIdsSvc<T> {
3661                        type Response = super::GetNewObjectIdsResponse;
3662                        type Future = BoxFuture<
3663                            tonic::Response<Self::Response>,
3664                            tonic::Status,
3665                        >;
3666                        fn call(
3667                            &mut self,
3668                            request: tonic::Request<super::GetNewObjectIdsRequest>,
3669                        ) -> Self::Future {
3670                            let inner = Arc::clone(&self.0);
3671                            let fut = async move {
3672                                <T as HummockManagerService>::get_new_object_ids(
3673                                        &inner,
3674                                        request,
3675                                    )
3676                                    .await
3677                            };
3678                            Box::pin(fut)
3679                        }
3680                    }
3681                    let accept_compression_encodings = self.accept_compression_encodings;
3682                    let send_compression_encodings = self.send_compression_encodings;
3683                    let max_decoding_message_size = self.max_decoding_message_size;
3684                    let max_encoding_message_size = self.max_encoding_message_size;
3685                    let inner = self.inner.clone();
3686                    let fut = async move {
3687                        let method = GetNewObjectIdsSvc(inner);
3688                        let codec = tonic::codec::ProstCodec::default();
3689                        let mut grpc = tonic::server::Grpc::new(codec)
3690                            .apply_compression_config(
3691                                accept_compression_encodings,
3692                                send_compression_encodings,
3693                            )
3694                            .apply_max_message_size_config(
3695                                max_decoding_message_size,
3696                                max_encoding_message_size,
3697                            );
3698                        let res = grpc.unary(method, req).await;
3699                        Ok(res)
3700                    };
3701                    Box::pin(fut)
3702                }
3703                "/hummock.HummockManagerService/TriggerManualCompaction" => {
3704                    #[allow(non_camel_case_types)]
3705                    struct TriggerManualCompactionSvc<T: HummockManagerService>(
3706                        pub Arc<T>,
3707                    );
3708                    impl<
3709                        T: HummockManagerService,
3710                    > tonic::server::UnaryService<super::TriggerManualCompactionRequest>
3711                    for TriggerManualCompactionSvc<T> {
3712                        type Response = super::TriggerManualCompactionResponse;
3713                        type Future = BoxFuture<
3714                            tonic::Response<Self::Response>,
3715                            tonic::Status,
3716                        >;
3717                        fn call(
3718                            &mut self,
3719                            request: tonic::Request<
3720                                super::TriggerManualCompactionRequest,
3721                            >,
3722                        ) -> Self::Future {
3723                            let inner = Arc::clone(&self.0);
3724                            let fut = async move {
3725                                <T as HummockManagerService>::trigger_manual_compaction(
3726                                        &inner,
3727                                        request,
3728                                    )
3729                                    .await
3730                            };
3731                            Box::pin(fut)
3732                        }
3733                    }
3734                    let accept_compression_encodings = self.accept_compression_encodings;
3735                    let send_compression_encodings = self.send_compression_encodings;
3736                    let max_decoding_message_size = self.max_decoding_message_size;
3737                    let max_encoding_message_size = self.max_encoding_message_size;
3738                    let inner = self.inner.clone();
3739                    let fut = async move {
3740                        let method = TriggerManualCompactionSvc(inner);
3741                        let codec = tonic::codec::ProstCodec::default();
3742                        let mut grpc = tonic::server::Grpc::new(codec)
3743                            .apply_compression_config(
3744                                accept_compression_encodings,
3745                                send_compression_encodings,
3746                            )
3747                            .apply_max_message_size_config(
3748                                max_decoding_message_size,
3749                                max_encoding_message_size,
3750                            );
3751                        let res = grpc.unary(method, req).await;
3752                        Ok(res)
3753                    };
3754                    Box::pin(fut)
3755                }
3756                "/hummock.HummockManagerService/TriggerFullGC" => {
3757                    #[allow(non_camel_case_types)]
3758                    struct TriggerFullGCSvc<T: HummockManagerService>(pub Arc<T>);
3759                    impl<
3760                        T: HummockManagerService,
3761                    > tonic::server::UnaryService<super::TriggerFullGcRequest>
3762                    for TriggerFullGCSvc<T> {
3763                        type Response = super::TriggerFullGcResponse;
3764                        type Future = BoxFuture<
3765                            tonic::Response<Self::Response>,
3766                            tonic::Status,
3767                        >;
3768                        fn call(
3769                            &mut self,
3770                            request: tonic::Request<super::TriggerFullGcRequest>,
3771                        ) -> Self::Future {
3772                            let inner = Arc::clone(&self.0);
3773                            let fut = async move {
3774                                <T as HummockManagerService>::trigger_full_gc(
3775                                        &inner,
3776                                        request,
3777                                    )
3778                                    .await
3779                            };
3780                            Box::pin(fut)
3781                        }
3782                    }
3783                    let accept_compression_encodings = self.accept_compression_encodings;
3784                    let send_compression_encodings = self.send_compression_encodings;
3785                    let max_decoding_message_size = self.max_decoding_message_size;
3786                    let max_encoding_message_size = self.max_encoding_message_size;
3787                    let inner = self.inner.clone();
3788                    let fut = async move {
3789                        let method = TriggerFullGCSvc(inner);
3790                        let codec = tonic::codec::ProstCodec::default();
3791                        let mut grpc = tonic::server::Grpc::new(codec)
3792                            .apply_compression_config(
3793                                accept_compression_encodings,
3794                                send_compression_encodings,
3795                            )
3796                            .apply_max_message_size_config(
3797                                max_decoding_message_size,
3798                                max_encoding_message_size,
3799                            );
3800                        let res = grpc.unary(method, req).await;
3801                        Ok(res)
3802                    };
3803                    Box::pin(fut)
3804                }
3805                "/hummock.HummockManagerService/RiseCtlGetPinnedVersionsSummary" => {
3806                    #[allow(non_camel_case_types)]
3807                    struct RiseCtlGetPinnedVersionsSummarySvc<T: HummockManagerService>(
3808                        pub Arc<T>,
3809                    );
3810                    impl<
3811                        T: HummockManagerService,
3812                    > tonic::server::UnaryService<
3813                        super::RiseCtlGetPinnedVersionsSummaryRequest,
3814                    > for RiseCtlGetPinnedVersionsSummarySvc<T> {
3815                        type Response = super::RiseCtlGetPinnedVersionsSummaryResponse;
3816                        type Future = BoxFuture<
3817                            tonic::Response<Self::Response>,
3818                            tonic::Status,
3819                        >;
3820                        fn call(
3821                            &mut self,
3822                            request: tonic::Request<
3823                                super::RiseCtlGetPinnedVersionsSummaryRequest,
3824                            >,
3825                        ) -> Self::Future {
3826                            let inner = Arc::clone(&self.0);
3827                            let fut = async move {
3828                                <T as HummockManagerService>::rise_ctl_get_pinned_versions_summary(
3829                                        &inner,
3830                                        request,
3831                                    )
3832                                    .await
3833                            };
3834                            Box::pin(fut)
3835                        }
3836                    }
3837                    let accept_compression_encodings = self.accept_compression_encodings;
3838                    let send_compression_encodings = self.send_compression_encodings;
3839                    let max_decoding_message_size = self.max_decoding_message_size;
3840                    let max_encoding_message_size = self.max_encoding_message_size;
3841                    let inner = self.inner.clone();
3842                    let fut = async move {
3843                        let method = RiseCtlGetPinnedVersionsSummarySvc(inner);
3844                        let codec = tonic::codec::ProstCodec::default();
3845                        let mut grpc = tonic::server::Grpc::new(codec)
3846                            .apply_compression_config(
3847                                accept_compression_encodings,
3848                                send_compression_encodings,
3849                            )
3850                            .apply_max_message_size_config(
3851                                max_decoding_message_size,
3852                                max_encoding_message_size,
3853                            );
3854                        let res = grpc.unary(method, req).await;
3855                        Ok(res)
3856                    };
3857                    Box::pin(fut)
3858                }
3859                "/hummock.HummockManagerService/RiseCtlListCompactionGroup" => {
3860                    #[allow(non_camel_case_types)]
3861                    struct RiseCtlListCompactionGroupSvc<T: HummockManagerService>(
3862                        pub Arc<T>,
3863                    );
3864                    impl<
3865                        T: HummockManagerService,
3866                    > tonic::server::UnaryService<
3867                        super::RiseCtlListCompactionGroupRequest,
3868                    > for RiseCtlListCompactionGroupSvc<T> {
3869                        type Response = super::RiseCtlListCompactionGroupResponse;
3870                        type Future = BoxFuture<
3871                            tonic::Response<Self::Response>,
3872                            tonic::Status,
3873                        >;
3874                        fn call(
3875                            &mut self,
3876                            request: tonic::Request<
3877                                super::RiseCtlListCompactionGroupRequest,
3878                            >,
3879                        ) -> Self::Future {
3880                            let inner = Arc::clone(&self.0);
3881                            let fut = async move {
3882                                <T as HummockManagerService>::rise_ctl_list_compaction_group(
3883                                        &inner,
3884                                        request,
3885                                    )
3886                                    .await
3887                            };
3888                            Box::pin(fut)
3889                        }
3890                    }
3891                    let accept_compression_encodings = self.accept_compression_encodings;
3892                    let send_compression_encodings = self.send_compression_encodings;
3893                    let max_decoding_message_size = self.max_decoding_message_size;
3894                    let max_encoding_message_size = self.max_encoding_message_size;
3895                    let inner = self.inner.clone();
3896                    let fut = async move {
3897                        let method = RiseCtlListCompactionGroupSvc(inner);
3898                        let codec = tonic::codec::ProstCodec::default();
3899                        let mut grpc = tonic::server::Grpc::new(codec)
3900                            .apply_compression_config(
3901                                accept_compression_encodings,
3902                                send_compression_encodings,
3903                            )
3904                            .apply_max_message_size_config(
3905                                max_decoding_message_size,
3906                                max_encoding_message_size,
3907                            );
3908                        let res = grpc.unary(method, req).await;
3909                        Ok(res)
3910                    };
3911                    Box::pin(fut)
3912                }
3913                "/hummock.HummockManagerService/RiseCtlUpdateCompactionConfig" => {
3914                    #[allow(non_camel_case_types)]
3915                    struct RiseCtlUpdateCompactionConfigSvc<T: HummockManagerService>(
3916                        pub Arc<T>,
3917                    );
3918                    impl<
3919                        T: HummockManagerService,
3920                    > tonic::server::UnaryService<
3921                        super::RiseCtlUpdateCompactionConfigRequest,
3922                    > for RiseCtlUpdateCompactionConfigSvc<T> {
3923                        type Response = super::RiseCtlUpdateCompactionConfigResponse;
3924                        type Future = BoxFuture<
3925                            tonic::Response<Self::Response>,
3926                            tonic::Status,
3927                        >;
3928                        fn call(
3929                            &mut self,
3930                            request: tonic::Request<
3931                                super::RiseCtlUpdateCompactionConfigRequest,
3932                            >,
3933                        ) -> Self::Future {
3934                            let inner = Arc::clone(&self.0);
3935                            let fut = async move {
3936                                <T as HummockManagerService>::rise_ctl_update_compaction_config(
3937                                        &inner,
3938                                        request,
3939                                    )
3940                                    .await
3941                            };
3942                            Box::pin(fut)
3943                        }
3944                    }
3945                    let accept_compression_encodings = self.accept_compression_encodings;
3946                    let send_compression_encodings = self.send_compression_encodings;
3947                    let max_decoding_message_size = self.max_decoding_message_size;
3948                    let max_encoding_message_size = self.max_encoding_message_size;
3949                    let inner = self.inner.clone();
3950                    let fut = async move {
3951                        let method = RiseCtlUpdateCompactionConfigSvc(inner);
3952                        let codec = tonic::codec::ProstCodec::default();
3953                        let mut grpc = tonic::server::Grpc::new(codec)
3954                            .apply_compression_config(
3955                                accept_compression_encodings,
3956                                send_compression_encodings,
3957                            )
3958                            .apply_max_message_size_config(
3959                                max_decoding_message_size,
3960                                max_encoding_message_size,
3961                            );
3962                        let res = grpc.unary(method, req).await;
3963                        Ok(res)
3964                    };
3965                    Box::pin(fut)
3966                }
3967                "/hummock.HummockManagerService/RiseCtlPauseVersionCheckpoint" => {
3968                    #[allow(non_camel_case_types)]
3969                    struct RiseCtlPauseVersionCheckpointSvc<T: HummockManagerService>(
3970                        pub Arc<T>,
3971                    );
3972                    impl<
3973                        T: HummockManagerService,
3974                    > tonic::server::UnaryService<
3975                        super::RiseCtlPauseVersionCheckpointRequest,
3976                    > for RiseCtlPauseVersionCheckpointSvc<T> {
3977                        type Response = super::RiseCtlPauseVersionCheckpointResponse;
3978                        type Future = BoxFuture<
3979                            tonic::Response<Self::Response>,
3980                            tonic::Status,
3981                        >;
3982                        fn call(
3983                            &mut self,
3984                            request: tonic::Request<
3985                                super::RiseCtlPauseVersionCheckpointRequest,
3986                            >,
3987                        ) -> Self::Future {
3988                            let inner = Arc::clone(&self.0);
3989                            let fut = async move {
3990                                <T as HummockManagerService>::rise_ctl_pause_version_checkpoint(
3991                                        &inner,
3992                                        request,
3993                                    )
3994                                    .await
3995                            };
3996                            Box::pin(fut)
3997                        }
3998                    }
3999                    let accept_compression_encodings = self.accept_compression_encodings;
4000                    let send_compression_encodings = self.send_compression_encodings;
4001                    let max_decoding_message_size = self.max_decoding_message_size;
4002                    let max_encoding_message_size = self.max_encoding_message_size;
4003                    let inner = self.inner.clone();
4004                    let fut = async move {
4005                        let method = RiseCtlPauseVersionCheckpointSvc(inner);
4006                        let codec = tonic::codec::ProstCodec::default();
4007                        let mut grpc = tonic::server::Grpc::new(codec)
4008                            .apply_compression_config(
4009                                accept_compression_encodings,
4010                                send_compression_encodings,
4011                            )
4012                            .apply_max_message_size_config(
4013                                max_decoding_message_size,
4014                                max_encoding_message_size,
4015                            );
4016                        let res = grpc.unary(method, req).await;
4017                        Ok(res)
4018                    };
4019                    Box::pin(fut)
4020                }
4021                "/hummock.HummockManagerService/RiseCtlResumeVersionCheckpoint" => {
4022                    #[allow(non_camel_case_types)]
4023                    struct RiseCtlResumeVersionCheckpointSvc<T: HummockManagerService>(
4024                        pub Arc<T>,
4025                    );
4026                    impl<
4027                        T: HummockManagerService,
4028                    > tonic::server::UnaryService<
4029                        super::RiseCtlResumeVersionCheckpointRequest,
4030                    > for RiseCtlResumeVersionCheckpointSvc<T> {
4031                        type Response = super::RiseCtlResumeVersionCheckpointResponse;
4032                        type Future = BoxFuture<
4033                            tonic::Response<Self::Response>,
4034                            tonic::Status,
4035                        >;
4036                        fn call(
4037                            &mut self,
4038                            request: tonic::Request<
4039                                super::RiseCtlResumeVersionCheckpointRequest,
4040                            >,
4041                        ) -> Self::Future {
4042                            let inner = Arc::clone(&self.0);
4043                            let fut = async move {
4044                                <T as HummockManagerService>::rise_ctl_resume_version_checkpoint(
4045                                        &inner,
4046                                        request,
4047                                    )
4048                                    .await
4049                            };
4050                            Box::pin(fut)
4051                        }
4052                    }
4053                    let accept_compression_encodings = self.accept_compression_encodings;
4054                    let send_compression_encodings = self.send_compression_encodings;
4055                    let max_decoding_message_size = self.max_decoding_message_size;
4056                    let max_encoding_message_size = self.max_encoding_message_size;
4057                    let inner = self.inner.clone();
4058                    let fut = async move {
4059                        let method = RiseCtlResumeVersionCheckpointSvc(inner);
4060                        let codec = tonic::codec::ProstCodec::default();
4061                        let mut grpc = tonic::server::Grpc::new(codec)
4062                            .apply_compression_config(
4063                                accept_compression_encodings,
4064                                send_compression_encodings,
4065                            )
4066                            .apply_max_message_size_config(
4067                                max_decoding_message_size,
4068                                max_encoding_message_size,
4069                            );
4070                        let res = grpc.unary(method, req).await;
4071                        Ok(res)
4072                    };
4073                    Box::pin(fut)
4074                }
4075                "/hummock.HummockManagerService/RiseCtlGetCheckpointVersion" => {
4076                    #[allow(non_camel_case_types)]
4077                    struct RiseCtlGetCheckpointVersionSvc<T: HummockManagerService>(
4078                        pub Arc<T>,
4079                    );
4080                    impl<
4081                        T: HummockManagerService,
4082                    > tonic::server::UnaryService<
4083                        super::RiseCtlGetCheckpointVersionRequest,
4084                    > for RiseCtlGetCheckpointVersionSvc<T> {
4085                        type Response = super::RiseCtlGetCheckpointVersionResponse;
4086                        type Future = BoxFuture<
4087                            tonic::Response<Self::Response>,
4088                            tonic::Status,
4089                        >;
4090                        fn call(
4091                            &mut self,
4092                            request: tonic::Request<
4093                                super::RiseCtlGetCheckpointVersionRequest,
4094                            >,
4095                        ) -> Self::Future {
4096                            let inner = Arc::clone(&self.0);
4097                            let fut = async move {
4098                                <T as HummockManagerService>::rise_ctl_get_checkpoint_version(
4099                                        &inner,
4100                                        request,
4101                                    )
4102                                    .await
4103                            };
4104                            Box::pin(fut)
4105                        }
4106                    }
4107                    let accept_compression_encodings = self.accept_compression_encodings;
4108                    let send_compression_encodings = self.send_compression_encodings;
4109                    let max_decoding_message_size = self.max_decoding_message_size;
4110                    let max_encoding_message_size = self.max_encoding_message_size;
4111                    let inner = self.inner.clone();
4112                    let fut = async move {
4113                        let method = RiseCtlGetCheckpointVersionSvc(inner);
4114                        let codec = tonic::codec::ProstCodec::default();
4115                        let mut grpc = tonic::server::Grpc::new(codec)
4116                            .apply_compression_config(
4117                                accept_compression_encodings,
4118                                send_compression_encodings,
4119                            )
4120                            .apply_max_message_size_config(
4121                                max_decoding_message_size,
4122                                max_encoding_message_size,
4123                            );
4124                        let res = grpc.unary(method, req).await;
4125                        Ok(res)
4126                    };
4127                    Box::pin(fut)
4128                }
4129                "/hummock.HummockManagerService/RiseCtlRebuildTableStats" => {
4130                    #[allow(non_camel_case_types)]
4131                    struct RiseCtlRebuildTableStatsSvc<T: HummockManagerService>(
4132                        pub Arc<T>,
4133                    );
4134                    impl<
4135                        T: HummockManagerService,
4136                    > tonic::server::UnaryService<super::RiseCtlRebuildTableStatsRequest>
4137                    for RiseCtlRebuildTableStatsSvc<T> {
4138                        type Response = super::RiseCtlRebuildTableStatsResponse;
4139                        type Future = BoxFuture<
4140                            tonic::Response<Self::Response>,
4141                            tonic::Status,
4142                        >;
4143                        fn call(
4144                            &mut self,
4145                            request: tonic::Request<
4146                                super::RiseCtlRebuildTableStatsRequest,
4147                            >,
4148                        ) -> Self::Future {
4149                            let inner = Arc::clone(&self.0);
4150                            let fut = async move {
4151                                <T as HummockManagerService>::rise_ctl_rebuild_table_stats(
4152                                        &inner,
4153                                        request,
4154                                    )
4155                                    .await
4156                            };
4157                            Box::pin(fut)
4158                        }
4159                    }
4160                    let accept_compression_encodings = self.accept_compression_encodings;
4161                    let send_compression_encodings = self.send_compression_encodings;
4162                    let max_decoding_message_size = self.max_decoding_message_size;
4163                    let max_encoding_message_size = self.max_encoding_message_size;
4164                    let inner = self.inner.clone();
4165                    let fut = async move {
4166                        let method = RiseCtlRebuildTableStatsSvc(inner);
4167                        let codec = tonic::codec::ProstCodec::default();
4168                        let mut grpc = tonic::server::Grpc::new(codec)
4169                            .apply_compression_config(
4170                                accept_compression_encodings,
4171                                send_compression_encodings,
4172                            )
4173                            .apply_max_message_size_config(
4174                                max_decoding_message_size,
4175                                max_encoding_message_size,
4176                            );
4177                        let res = grpc.unary(method, req).await;
4178                        Ok(res)
4179                    };
4180                    Box::pin(fut)
4181                }
4182                "/hummock.HummockManagerService/InitMetadataForReplay" => {
4183                    #[allow(non_camel_case_types)]
4184                    struct InitMetadataForReplaySvc<T: HummockManagerService>(
4185                        pub Arc<T>,
4186                    );
4187                    impl<
4188                        T: HummockManagerService,
4189                    > tonic::server::UnaryService<super::InitMetadataForReplayRequest>
4190                    for InitMetadataForReplaySvc<T> {
4191                        type Response = super::InitMetadataForReplayResponse;
4192                        type Future = BoxFuture<
4193                            tonic::Response<Self::Response>,
4194                            tonic::Status,
4195                        >;
4196                        fn call(
4197                            &mut self,
4198                            request: tonic::Request<super::InitMetadataForReplayRequest>,
4199                        ) -> Self::Future {
4200                            let inner = Arc::clone(&self.0);
4201                            let fut = async move {
4202                                <T as HummockManagerService>::init_metadata_for_replay(
4203                                        &inner,
4204                                        request,
4205                                    )
4206                                    .await
4207                            };
4208                            Box::pin(fut)
4209                        }
4210                    }
4211                    let accept_compression_encodings = self.accept_compression_encodings;
4212                    let send_compression_encodings = self.send_compression_encodings;
4213                    let max_decoding_message_size = self.max_decoding_message_size;
4214                    let max_encoding_message_size = self.max_encoding_message_size;
4215                    let inner = self.inner.clone();
4216                    let fut = async move {
4217                        let method = InitMetadataForReplaySvc(inner);
4218                        let codec = tonic::codec::ProstCodec::default();
4219                        let mut grpc = tonic::server::Grpc::new(codec)
4220                            .apply_compression_config(
4221                                accept_compression_encodings,
4222                                send_compression_encodings,
4223                            )
4224                            .apply_max_message_size_config(
4225                                max_decoding_message_size,
4226                                max_encoding_message_size,
4227                            );
4228                        let res = grpc.unary(method, req).await;
4229                        Ok(res)
4230                    };
4231                    Box::pin(fut)
4232                }
4233                "/hummock.HummockManagerService/PinVersion" => {
4234                    #[allow(non_camel_case_types)]
4235                    struct PinVersionSvc<T: HummockManagerService>(pub Arc<T>);
4236                    impl<
4237                        T: HummockManagerService,
4238                    > tonic::server::UnaryService<super::PinVersionRequest>
4239                    for PinVersionSvc<T> {
4240                        type Response = super::PinVersionResponse;
4241                        type Future = BoxFuture<
4242                            tonic::Response<Self::Response>,
4243                            tonic::Status,
4244                        >;
4245                        fn call(
4246                            &mut self,
4247                            request: tonic::Request<super::PinVersionRequest>,
4248                        ) -> Self::Future {
4249                            let inner = Arc::clone(&self.0);
4250                            let fut = async move {
4251                                <T as HummockManagerService>::pin_version(&inner, request)
4252                                    .await
4253                            };
4254                            Box::pin(fut)
4255                        }
4256                    }
4257                    let accept_compression_encodings = self.accept_compression_encodings;
4258                    let send_compression_encodings = self.send_compression_encodings;
4259                    let max_decoding_message_size = self.max_decoding_message_size;
4260                    let max_encoding_message_size = self.max_encoding_message_size;
4261                    let inner = self.inner.clone();
4262                    let fut = async move {
4263                        let method = PinVersionSvc(inner);
4264                        let codec = tonic::codec::ProstCodec::default();
4265                        let mut grpc = tonic::server::Grpc::new(codec)
4266                            .apply_compression_config(
4267                                accept_compression_encodings,
4268                                send_compression_encodings,
4269                            )
4270                            .apply_max_message_size_config(
4271                                max_decoding_message_size,
4272                                max_encoding_message_size,
4273                            );
4274                        let res = grpc.unary(method, req).await;
4275                        Ok(res)
4276                    };
4277                    Box::pin(fut)
4278                }
4279                "/hummock.HummockManagerService/SplitCompactionGroup" => {
4280                    #[allow(non_camel_case_types)]
4281                    struct SplitCompactionGroupSvc<T: HummockManagerService>(pub Arc<T>);
4282                    impl<
4283                        T: HummockManagerService,
4284                    > tonic::server::UnaryService<super::SplitCompactionGroupRequest>
4285                    for SplitCompactionGroupSvc<T> {
4286                        type Response = super::SplitCompactionGroupResponse;
4287                        type Future = BoxFuture<
4288                            tonic::Response<Self::Response>,
4289                            tonic::Status,
4290                        >;
4291                        fn call(
4292                            &mut self,
4293                            request: tonic::Request<super::SplitCompactionGroupRequest>,
4294                        ) -> Self::Future {
4295                            let inner = Arc::clone(&self.0);
4296                            let fut = async move {
4297                                <T as HummockManagerService>::split_compaction_group(
4298                                        &inner,
4299                                        request,
4300                                    )
4301                                    .await
4302                            };
4303                            Box::pin(fut)
4304                        }
4305                    }
4306                    let accept_compression_encodings = self.accept_compression_encodings;
4307                    let send_compression_encodings = self.send_compression_encodings;
4308                    let max_decoding_message_size = self.max_decoding_message_size;
4309                    let max_encoding_message_size = self.max_encoding_message_size;
4310                    let inner = self.inner.clone();
4311                    let fut = async move {
4312                        let method = SplitCompactionGroupSvc(inner);
4313                        let codec = tonic::codec::ProstCodec::default();
4314                        let mut grpc = tonic::server::Grpc::new(codec)
4315                            .apply_compression_config(
4316                                accept_compression_encodings,
4317                                send_compression_encodings,
4318                            )
4319                            .apply_max_message_size_config(
4320                                max_decoding_message_size,
4321                                max_encoding_message_size,
4322                            );
4323                        let res = grpc.unary(method, req).await;
4324                        Ok(res)
4325                    };
4326                    Box::pin(fut)
4327                }
4328                "/hummock.HummockManagerService/RiseCtlListCompactionStatus" => {
4329                    #[allow(non_camel_case_types)]
4330                    struct RiseCtlListCompactionStatusSvc<T: HummockManagerService>(
4331                        pub Arc<T>,
4332                    );
4333                    impl<
4334                        T: HummockManagerService,
4335                    > tonic::server::UnaryService<
4336                        super::RiseCtlListCompactionStatusRequest,
4337                    > for RiseCtlListCompactionStatusSvc<T> {
4338                        type Response = super::RiseCtlListCompactionStatusResponse;
4339                        type Future = BoxFuture<
4340                            tonic::Response<Self::Response>,
4341                            tonic::Status,
4342                        >;
4343                        fn call(
4344                            &mut self,
4345                            request: tonic::Request<
4346                                super::RiseCtlListCompactionStatusRequest,
4347                            >,
4348                        ) -> Self::Future {
4349                            let inner = Arc::clone(&self.0);
4350                            let fut = async move {
4351                                <T as HummockManagerService>::rise_ctl_list_compaction_status(
4352                                        &inner,
4353                                        request,
4354                                    )
4355                                    .await
4356                            };
4357                            Box::pin(fut)
4358                        }
4359                    }
4360                    let accept_compression_encodings = self.accept_compression_encodings;
4361                    let send_compression_encodings = self.send_compression_encodings;
4362                    let max_decoding_message_size = self.max_decoding_message_size;
4363                    let max_encoding_message_size = self.max_encoding_message_size;
4364                    let inner = self.inner.clone();
4365                    let fut = async move {
4366                        let method = RiseCtlListCompactionStatusSvc(inner);
4367                        let codec = tonic::codec::ProstCodec::default();
4368                        let mut grpc = tonic::server::Grpc::new(codec)
4369                            .apply_compression_config(
4370                                accept_compression_encodings,
4371                                send_compression_encodings,
4372                            )
4373                            .apply_max_message_size_config(
4374                                max_decoding_message_size,
4375                                max_encoding_message_size,
4376                            );
4377                        let res = grpc.unary(method, req).await;
4378                        Ok(res)
4379                    };
4380                    Box::pin(fut)
4381                }
4382                "/hummock.HummockManagerService/SubscribeCompactionEvent" => {
4383                    #[allow(non_camel_case_types)]
4384                    struct SubscribeCompactionEventSvc<T: HummockManagerService>(
4385                        pub Arc<T>,
4386                    );
4387                    impl<
4388                        T: HummockManagerService,
4389                    > tonic::server::StreamingService<
4390                        super::SubscribeCompactionEventRequest,
4391                    > for SubscribeCompactionEventSvc<T> {
4392                        type Response = super::SubscribeCompactionEventResponse;
4393                        type ResponseStream = T::SubscribeCompactionEventStream;
4394                        type Future = BoxFuture<
4395                            tonic::Response<Self::ResponseStream>,
4396                            tonic::Status,
4397                        >;
4398                        fn call(
4399                            &mut self,
4400                            request: tonic::Request<
4401                                tonic::Streaming<super::SubscribeCompactionEventRequest>,
4402                            >,
4403                        ) -> Self::Future {
4404                            let inner = Arc::clone(&self.0);
4405                            let fut = async move {
4406                                <T as HummockManagerService>::subscribe_compaction_event(
4407                                        &inner,
4408                                        request,
4409                                    )
4410                                    .await
4411                            };
4412                            Box::pin(fut)
4413                        }
4414                    }
4415                    let accept_compression_encodings = self.accept_compression_encodings;
4416                    let send_compression_encodings = self.send_compression_encodings;
4417                    let max_decoding_message_size = self.max_decoding_message_size;
4418                    let max_encoding_message_size = self.max_encoding_message_size;
4419                    let inner = self.inner.clone();
4420                    let fut = async move {
4421                        let method = SubscribeCompactionEventSvc(inner);
4422                        let codec = tonic::codec::ProstCodec::default();
4423                        let mut grpc = tonic::server::Grpc::new(codec)
4424                            .apply_compression_config(
4425                                accept_compression_encodings,
4426                                send_compression_encodings,
4427                            )
4428                            .apply_max_message_size_config(
4429                                max_decoding_message_size,
4430                                max_encoding_message_size,
4431                            );
4432                        let res = grpc.streaming(method, req).await;
4433                        Ok(res)
4434                    };
4435                    Box::pin(fut)
4436                }
4437                "/hummock.HummockManagerService/ReportCompactionTask" => {
4438                    #[allow(non_camel_case_types)]
4439                    struct ReportCompactionTaskSvc<T: HummockManagerService>(pub Arc<T>);
4440                    impl<
4441                        T: HummockManagerService,
4442                    > tonic::server::UnaryService<super::ReportCompactionTaskRequest>
4443                    for ReportCompactionTaskSvc<T> {
4444                        type Response = super::ReportCompactionTaskResponse;
4445                        type Future = BoxFuture<
4446                            tonic::Response<Self::Response>,
4447                            tonic::Status,
4448                        >;
4449                        fn call(
4450                            &mut self,
4451                            request: tonic::Request<super::ReportCompactionTaskRequest>,
4452                        ) -> Self::Future {
4453                            let inner = Arc::clone(&self.0);
4454                            let fut = async move {
4455                                <T as HummockManagerService>::report_compaction_task(
4456                                        &inner,
4457                                        request,
4458                                    )
4459                                    .await
4460                            };
4461                            Box::pin(fut)
4462                        }
4463                    }
4464                    let accept_compression_encodings = self.accept_compression_encodings;
4465                    let send_compression_encodings = self.send_compression_encodings;
4466                    let max_decoding_message_size = self.max_decoding_message_size;
4467                    let max_encoding_message_size = self.max_encoding_message_size;
4468                    let inner = self.inner.clone();
4469                    let fut = async move {
4470                        let method = ReportCompactionTaskSvc(inner);
4471                        let codec = tonic::codec::ProstCodec::default();
4472                        let mut grpc = tonic::server::Grpc::new(codec)
4473                            .apply_compression_config(
4474                                accept_compression_encodings,
4475                                send_compression_encodings,
4476                            )
4477                            .apply_max_message_size_config(
4478                                max_decoding_message_size,
4479                                max_encoding_message_size,
4480                            );
4481                        let res = grpc.unary(method, req).await;
4482                        Ok(res)
4483                    };
4484                    Box::pin(fut)
4485                }
4486                "/hummock.HummockManagerService/ListBranchedObject" => {
4487                    #[allow(non_camel_case_types)]
4488                    struct ListBranchedObjectSvc<T: HummockManagerService>(pub Arc<T>);
4489                    impl<
4490                        T: HummockManagerService,
4491                    > tonic::server::UnaryService<super::ListBranchedObjectRequest>
4492                    for ListBranchedObjectSvc<T> {
4493                        type Response = super::ListBranchedObjectResponse;
4494                        type Future = BoxFuture<
4495                            tonic::Response<Self::Response>,
4496                            tonic::Status,
4497                        >;
4498                        fn call(
4499                            &mut self,
4500                            request: tonic::Request<super::ListBranchedObjectRequest>,
4501                        ) -> Self::Future {
4502                            let inner = Arc::clone(&self.0);
4503                            let fut = async move {
4504                                <T as HummockManagerService>::list_branched_object(
4505                                        &inner,
4506                                        request,
4507                                    )
4508                                    .await
4509                            };
4510                            Box::pin(fut)
4511                        }
4512                    }
4513                    let accept_compression_encodings = self.accept_compression_encodings;
4514                    let send_compression_encodings = self.send_compression_encodings;
4515                    let max_decoding_message_size = self.max_decoding_message_size;
4516                    let max_encoding_message_size = self.max_encoding_message_size;
4517                    let inner = self.inner.clone();
4518                    let fut = async move {
4519                        let method = ListBranchedObjectSvc(inner);
4520                        let codec = tonic::codec::ProstCodec::default();
4521                        let mut grpc = tonic::server::Grpc::new(codec)
4522                            .apply_compression_config(
4523                                accept_compression_encodings,
4524                                send_compression_encodings,
4525                            )
4526                            .apply_max_message_size_config(
4527                                max_decoding_message_size,
4528                                max_encoding_message_size,
4529                            );
4530                        let res = grpc.unary(method, req).await;
4531                        Ok(res)
4532                    };
4533                    Box::pin(fut)
4534                }
4535                "/hummock.HummockManagerService/ListActiveWriteLimit" => {
4536                    #[allow(non_camel_case_types)]
4537                    struct ListActiveWriteLimitSvc<T: HummockManagerService>(pub Arc<T>);
4538                    impl<
4539                        T: HummockManagerService,
4540                    > tonic::server::UnaryService<super::ListActiveWriteLimitRequest>
4541                    for ListActiveWriteLimitSvc<T> {
4542                        type Response = super::ListActiveWriteLimitResponse;
4543                        type Future = BoxFuture<
4544                            tonic::Response<Self::Response>,
4545                            tonic::Status,
4546                        >;
4547                        fn call(
4548                            &mut self,
4549                            request: tonic::Request<super::ListActiveWriteLimitRequest>,
4550                        ) -> Self::Future {
4551                            let inner = Arc::clone(&self.0);
4552                            let fut = async move {
4553                                <T as HummockManagerService>::list_active_write_limit(
4554                                        &inner,
4555                                        request,
4556                                    )
4557                                    .await
4558                            };
4559                            Box::pin(fut)
4560                        }
4561                    }
4562                    let accept_compression_encodings = self.accept_compression_encodings;
4563                    let send_compression_encodings = self.send_compression_encodings;
4564                    let max_decoding_message_size = self.max_decoding_message_size;
4565                    let max_encoding_message_size = self.max_encoding_message_size;
4566                    let inner = self.inner.clone();
4567                    let fut = async move {
4568                        let method = ListActiveWriteLimitSvc(inner);
4569                        let codec = tonic::codec::ProstCodec::default();
4570                        let mut grpc = tonic::server::Grpc::new(codec)
4571                            .apply_compression_config(
4572                                accept_compression_encodings,
4573                                send_compression_encodings,
4574                            )
4575                            .apply_max_message_size_config(
4576                                max_decoding_message_size,
4577                                max_encoding_message_size,
4578                            );
4579                        let res = grpc.unary(method, req).await;
4580                        Ok(res)
4581                    };
4582                    Box::pin(fut)
4583                }
4584                "/hummock.HummockManagerService/ListHummockMetaConfig" => {
4585                    #[allow(non_camel_case_types)]
4586                    struct ListHummockMetaConfigSvc<T: HummockManagerService>(
4587                        pub Arc<T>,
4588                    );
4589                    impl<
4590                        T: HummockManagerService,
4591                    > tonic::server::UnaryService<super::ListHummockMetaConfigRequest>
4592                    for ListHummockMetaConfigSvc<T> {
4593                        type Response = super::ListHummockMetaConfigResponse;
4594                        type Future = BoxFuture<
4595                            tonic::Response<Self::Response>,
4596                            tonic::Status,
4597                        >;
4598                        fn call(
4599                            &mut self,
4600                            request: tonic::Request<super::ListHummockMetaConfigRequest>,
4601                        ) -> Self::Future {
4602                            let inner = Arc::clone(&self.0);
4603                            let fut = async move {
4604                                <T as HummockManagerService>::list_hummock_meta_config(
4605                                        &inner,
4606                                        request,
4607                                    )
4608                                    .await
4609                            };
4610                            Box::pin(fut)
4611                        }
4612                    }
4613                    let accept_compression_encodings = self.accept_compression_encodings;
4614                    let send_compression_encodings = self.send_compression_encodings;
4615                    let max_decoding_message_size = self.max_decoding_message_size;
4616                    let max_encoding_message_size = self.max_encoding_message_size;
4617                    let inner = self.inner.clone();
4618                    let fut = async move {
4619                        let method = ListHummockMetaConfigSvc(inner);
4620                        let codec = tonic::codec::ProstCodec::default();
4621                        let mut grpc = tonic::server::Grpc::new(codec)
4622                            .apply_compression_config(
4623                                accept_compression_encodings,
4624                                send_compression_encodings,
4625                            )
4626                            .apply_max_message_size_config(
4627                                max_decoding_message_size,
4628                                max_encoding_message_size,
4629                            );
4630                        let res = grpc.unary(method, req).await;
4631                        Ok(res)
4632                    };
4633                    Box::pin(fut)
4634                }
4635                "/hummock.HummockManagerService/GetCompactionScore" => {
4636                    #[allow(non_camel_case_types)]
4637                    struct GetCompactionScoreSvc<T: HummockManagerService>(pub Arc<T>);
4638                    impl<
4639                        T: HummockManagerService,
4640                    > tonic::server::UnaryService<super::GetCompactionScoreRequest>
4641                    for GetCompactionScoreSvc<T> {
4642                        type Response = super::GetCompactionScoreResponse;
4643                        type Future = BoxFuture<
4644                            tonic::Response<Self::Response>,
4645                            tonic::Status,
4646                        >;
4647                        fn call(
4648                            &mut self,
4649                            request: tonic::Request<super::GetCompactionScoreRequest>,
4650                        ) -> Self::Future {
4651                            let inner = Arc::clone(&self.0);
4652                            let fut = async move {
4653                                <T as HummockManagerService>::get_compaction_score(
4654                                        &inner,
4655                                        request,
4656                                    )
4657                                    .await
4658                            };
4659                            Box::pin(fut)
4660                        }
4661                    }
4662                    let accept_compression_encodings = self.accept_compression_encodings;
4663                    let send_compression_encodings = self.send_compression_encodings;
4664                    let max_decoding_message_size = self.max_decoding_message_size;
4665                    let max_encoding_message_size = self.max_encoding_message_size;
4666                    let inner = self.inner.clone();
4667                    let fut = async move {
4668                        let method = GetCompactionScoreSvc(inner);
4669                        let codec = tonic::codec::ProstCodec::default();
4670                        let mut grpc = tonic::server::Grpc::new(codec)
4671                            .apply_compression_config(
4672                                accept_compression_encodings,
4673                                send_compression_encodings,
4674                            )
4675                            .apply_max_message_size_config(
4676                                max_decoding_message_size,
4677                                max_encoding_message_size,
4678                            );
4679                        let res = grpc.unary(method, req).await;
4680                        Ok(res)
4681                    };
4682                    Box::pin(fut)
4683                }
4684                "/hummock.HummockManagerService/ListCompactTaskAssignment" => {
4685                    #[allow(non_camel_case_types)]
4686                    struct ListCompactTaskAssignmentSvc<T: HummockManagerService>(
4687                        pub Arc<T>,
4688                    );
4689                    impl<
4690                        T: HummockManagerService,
4691                    > tonic::server::UnaryService<
4692                        super::ListCompactTaskAssignmentRequest,
4693                    > for ListCompactTaskAssignmentSvc<T> {
4694                        type Response = super::ListCompactTaskAssignmentResponse;
4695                        type Future = BoxFuture<
4696                            tonic::Response<Self::Response>,
4697                            tonic::Status,
4698                        >;
4699                        fn call(
4700                            &mut self,
4701                            request: tonic::Request<
4702                                super::ListCompactTaskAssignmentRequest,
4703                            >,
4704                        ) -> Self::Future {
4705                            let inner = Arc::clone(&self.0);
4706                            let fut = async move {
4707                                <T as HummockManagerService>::list_compact_task_assignment(
4708                                        &inner,
4709                                        request,
4710                                    )
4711                                    .await
4712                            };
4713                            Box::pin(fut)
4714                        }
4715                    }
4716                    let accept_compression_encodings = self.accept_compression_encodings;
4717                    let send_compression_encodings = self.send_compression_encodings;
4718                    let max_decoding_message_size = self.max_decoding_message_size;
4719                    let max_encoding_message_size = self.max_encoding_message_size;
4720                    let inner = self.inner.clone();
4721                    let fut = async move {
4722                        let method = ListCompactTaskAssignmentSvc(inner);
4723                        let codec = tonic::codec::ProstCodec::default();
4724                        let mut grpc = tonic::server::Grpc::new(codec)
4725                            .apply_compression_config(
4726                                accept_compression_encodings,
4727                                send_compression_encodings,
4728                            )
4729                            .apply_max_message_size_config(
4730                                max_decoding_message_size,
4731                                max_encoding_message_size,
4732                            );
4733                        let res = grpc.unary(method, req).await;
4734                        Ok(res)
4735                    };
4736                    Box::pin(fut)
4737                }
4738                "/hummock.HummockManagerService/ListCompactTaskProgress" => {
4739                    #[allow(non_camel_case_types)]
4740                    struct ListCompactTaskProgressSvc<T: HummockManagerService>(
4741                        pub Arc<T>,
4742                    );
4743                    impl<
4744                        T: HummockManagerService,
4745                    > tonic::server::UnaryService<super::ListCompactTaskProgressRequest>
4746                    for ListCompactTaskProgressSvc<T> {
4747                        type Response = super::ListCompactTaskProgressResponse;
4748                        type Future = BoxFuture<
4749                            tonic::Response<Self::Response>,
4750                            tonic::Status,
4751                        >;
4752                        fn call(
4753                            &mut self,
4754                            request: tonic::Request<
4755                                super::ListCompactTaskProgressRequest,
4756                            >,
4757                        ) -> Self::Future {
4758                            let inner = Arc::clone(&self.0);
4759                            let fut = async move {
4760                                <T as HummockManagerService>::list_compact_task_progress(
4761                                        &inner,
4762                                        request,
4763                                    )
4764                                    .await
4765                            };
4766                            Box::pin(fut)
4767                        }
4768                    }
4769                    let accept_compression_encodings = self.accept_compression_encodings;
4770                    let send_compression_encodings = self.send_compression_encodings;
4771                    let max_decoding_message_size = self.max_decoding_message_size;
4772                    let max_encoding_message_size = self.max_encoding_message_size;
4773                    let inner = self.inner.clone();
4774                    let fut = async move {
4775                        let method = ListCompactTaskProgressSvc(inner);
4776                        let codec = tonic::codec::ProstCodec::default();
4777                        let mut grpc = tonic::server::Grpc::new(codec)
4778                            .apply_compression_config(
4779                                accept_compression_encodings,
4780                                send_compression_encodings,
4781                            )
4782                            .apply_max_message_size_config(
4783                                max_decoding_message_size,
4784                                max_encoding_message_size,
4785                            );
4786                        let res = grpc.unary(method, req).await;
4787                        Ok(res)
4788                    };
4789                    Box::pin(fut)
4790                }
4791                "/hummock.HummockManagerService/CancelCompactTask" => {
4792                    #[allow(non_camel_case_types)]
4793                    struct CancelCompactTaskSvc<T: HummockManagerService>(pub Arc<T>);
4794                    impl<
4795                        T: HummockManagerService,
4796                    > tonic::server::UnaryService<super::CancelCompactTaskRequest>
4797                    for CancelCompactTaskSvc<T> {
4798                        type Response = super::CancelCompactTaskResponse;
4799                        type Future = BoxFuture<
4800                            tonic::Response<Self::Response>,
4801                            tonic::Status,
4802                        >;
4803                        fn call(
4804                            &mut self,
4805                            request: tonic::Request<super::CancelCompactTaskRequest>,
4806                        ) -> Self::Future {
4807                            let inner = Arc::clone(&self.0);
4808                            let fut = async move {
4809                                <T as HummockManagerService>::cancel_compact_task(
4810                                        &inner,
4811                                        request,
4812                                    )
4813                                    .await
4814                            };
4815                            Box::pin(fut)
4816                        }
4817                    }
4818                    let accept_compression_encodings = self.accept_compression_encodings;
4819                    let send_compression_encodings = self.send_compression_encodings;
4820                    let max_decoding_message_size = self.max_decoding_message_size;
4821                    let max_encoding_message_size = self.max_encoding_message_size;
4822                    let inner = self.inner.clone();
4823                    let fut = async move {
4824                        let method = CancelCompactTaskSvc(inner);
4825                        let codec = tonic::codec::ProstCodec::default();
4826                        let mut grpc = tonic::server::Grpc::new(codec)
4827                            .apply_compression_config(
4828                                accept_compression_encodings,
4829                                send_compression_encodings,
4830                            )
4831                            .apply_max_message_size_config(
4832                                max_decoding_message_size,
4833                                max_encoding_message_size,
4834                            );
4835                        let res = grpc.unary(method, req).await;
4836                        Ok(res)
4837                    };
4838                    Box::pin(fut)
4839                }
4840                "/hummock.HummockManagerService/GetVersionByEpoch" => {
4841                    #[allow(non_camel_case_types)]
4842                    struct GetVersionByEpochSvc<T: HummockManagerService>(pub Arc<T>);
4843                    impl<
4844                        T: HummockManagerService,
4845                    > tonic::server::UnaryService<super::GetVersionByEpochRequest>
4846                    for GetVersionByEpochSvc<T> {
4847                        type Response = super::GetVersionByEpochResponse;
4848                        type Future = BoxFuture<
4849                            tonic::Response<Self::Response>,
4850                            tonic::Status,
4851                        >;
4852                        fn call(
4853                            &mut self,
4854                            request: tonic::Request<super::GetVersionByEpochRequest>,
4855                        ) -> Self::Future {
4856                            let inner = Arc::clone(&self.0);
4857                            let fut = async move {
4858                                <T as HummockManagerService>::get_version_by_epoch(
4859                                        &inner,
4860                                        request,
4861                                    )
4862                                    .await
4863                            };
4864                            Box::pin(fut)
4865                        }
4866                    }
4867                    let accept_compression_encodings = self.accept_compression_encodings;
4868                    let send_compression_encodings = self.send_compression_encodings;
4869                    let max_decoding_message_size = self.max_decoding_message_size;
4870                    let max_encoding_message_size = self.max_encoding_message_size;
4871                    let inner = self.inner.clone();
4872                    let fut = async move {
4873                        let method = GetVersionByEpochSvc(inner);
4874                        let codec = tonic::codec::ProstCodec::default();
4875                        let mut grpc = tonic::server::Grpc::new(codec)
4876                            .apply_compression_config(
4877                                accept_compression_encodings,
4878                                send_compression_encodings,
4879                            )
4880                            .apply_max_message_size_config(
4881                                max_decoding_message_size,
4882                                max_encoding_message_size,
4883                            );
4884                        let res = grpc.unary(method, req).await;
4885                        Ok(res)
4886                    };
4887                    Box::pin(fut)
4888                }
4889                "/hummock.HummockManagerService/MergeCompactionGroup" => {
4890                    #[allow(non_camel_case_types)]
4891                    struct MergeCompactionGroupSvc<T: HummockManagerService>(pub Arc<T>);
4892                    impl<
4893                        T: HummockManagerService,
4894                    > tonic::server::UnaryService<super::MergeCompactionGroupRequest>
4895                    for MergeCompactionGroupSvc<T> {
4896                        type Response = super::MergeCompactionGroupResponse;
4897                        type Future = BoxFuture<
4898                            tonic::Response<Self::Response>,
4899                            tonic::Status,
4900                        >;
4901                        fn call(
4902                            &mut self,
4903                            request: tonic::Request<super::MergeCompactionGroupRequest>,
4904                        ) -> Self::Future {
4905                            let inner = Arc::clone(&self.0);
4906                            let fut = async move {
4907                                <T as HummockManagerService>::merge_compaction_group(
4908                                        &inner,
4909                                        request,
4910                                    )
4911                                    .await
4912                            };
4913                            Box::pin(fut)
4914                        }
4915                    }
4916                    let accept_compression_encodings = self.accept_compression_encodings;
4917                    let send_compression_encodings = self.send_compression_encodings;
4918                    let max_decoding_message_size = self.max_decoding_message_size;
4919                    let max_encoding_message_size = self.max_encoding_message_size;
4920                    let inner = self.inner.clone();
4921                    let fut = async move {
4922                        let method = MergeCompactionGroupSvc(inner);
4923                        let codec = tonic::codec::ProstCodec::default();
4924                        let mut grpc = tonic::server::Grpc::new(codec)
4925                            .apply_compression_config(
4926                                accept_compression_encodings,
4927                                send_compression_encodings,
4928                            )
4929                            .apply_max_message_size_config(
4930                                max_decoding_message_size,
4931                                max_encoding_message_size,
4932                            );
4933                        let res = grpc.unary(method, req).await;
4934                        Ok(res)
4935                    };
4936                    Box::pin(fut)
4937                }
4938                "/hummock.HummockManagerService/SubscribeIcebergCompactionEvent" => {
4939                    #[allow(non_camel_case_types)]
4940                    struct SubscribeIcebergCompactionEventSvc<T: HummockManagerService>(
4941                        pub Arc<T>,
4942                    );
4943                    impl<
4944                        T: HummockManagerService,
4945                    > tonic::server::StreamingService<
4946                        super::super::iceberg_compaction::SubscribeIcebergCompactionEventRequest,
4947                    > for SubscribeIcebergCompactionEventSvc<T> {
4948                        type Response = super::super::iceberg_compaction::SubscribeIcebergCompactionEventResponse;
4949                        type ResponseStream = T::SubscribeIcebergCompactionEventStream;
4950                        type Future = BoxFuture<
4951                            tonic::Response<Self::ResponseStream>,
4952                            tonic::Status,
4953                        >;
4954                        fn call(
4955                            &mut self,
4956                            request: tonic::Request<
4957                                tonic::Streaming<
4958                                    super::super::iceberg_compaction::SubscribeIcebergCompactionEventRequest,
4959                                >,
4960                            >,
4961                        ) -> Self::Future {
4962                            let inner = Arc::clone(&self.0);
4963                            let fut = async move {
4964                                <T as HummockManagerService>::subscribe_iceberg_compaction_event(
4965                                        &inner,
4966                                        request,
4967                                    )
4968                                    .await
4969                            };
4970                            Box::pin(fut)
4971                        }
4972                    }
4973                    let accept_compression_encodings = self.accept_compression_encodings;
4974                    let send_compression_encodings = self.send_compression_encodings;
4975                    let max_decoding_message_size = self.max_decoding_message_size;
4976                    let max_encoding_message_size = self.max_encoding_message_size;
4977                    let inner = self.inner.clone();
4978                    let fut = async move {
4979                        let method = SubscribeIcebergCompactionEventSvc(inner);
4980                        let codec = tonic::codec::ProstCodec::default();
4981                        let mut grpc = tonic::server::Grpc::new(codec)
4982                            .apply_compression_config(
4983                                accept_compression_encodings,
4984                                send_compression_encodings,
4985                            )
4986                            .apply_max_message_size_config(
4987                                max_decoding_message_size,
4988                                max_encoding_message_size,
4989                            );
4990                        let res = grpc.streaming(method, req).await;
4991                        Ok(res)
4992                    };
4993                    Box::pin(fut)
4994                }
4995                _ => {
4996                    Box::pin(async move {
4997                        let mut response = http::Response::new(empty_body());
4998                        let headers = response.headers_mut();
4999                        headers
5000                            .insert(
5001                                tonic::Status::GRPC_STATUS,
5002                                (tonic::Code::Unimplemented as i32).into(),
5003                            );
5004                        headers
5005                            .insert(
5006                                http::header::CONTENT_TYPE,
5007                                tonic::metadata::GRPC_CONTENT_TYPE,
5008                            );
5009                        Ok(response)
5010                    })
5011                }
5012            }
5013        }
5014    }
5015    impl<T> Clone for HummockManagerServiceServer<T> {
5016        fn clone(&self) -> Self {
5017            let inner = self.inner.clone();
5018            Self {
5019                inner,
5020                accept_compression_encodings: self.accept_compression_encodings,
5021                send_compression_encodings: self.send_compression_encodings,
5022                max_decoding_message_size: self.max_decoding_message_size,
5023                max_encoding_message_size: self.max_encoding_message_size,
5024            }
5025        }
5026    }
5027    /// Generated gRPC service name
5028    pub const SERVICE_NAME: &str = "hummock.HummockManagerService";
5029    impl<T> tonic::server::NamedService for HummockManagerServiceServer<T> {
5030        const NAME: &'static str = SERVICE_NAME;
5031    }
5032}