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