risingwave_pb/
hummock.rs

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