diff --git a/Cargo.lock b/Cargo.lock index 5b1f4da8f..0916ae0fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -681,26 +681,6 @@ dependencies = [ "cipher", ] -[[package]] -name = "darwin-libproc" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb90051930c9a0f09e585762152048e23ac74d20c10590ef7cf01c0343c3046" -dependencies = [ - "darwin-libproc-sys", - "libc", - "memchr", -] - -[[package]] -name = "darwin-libproc-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57cebb5bde66eecdd30ddc4b9cd208238b15db4982ccc72db59d699ea10867c1" -dependencies = [ - "libc", -] - [[package]] name = "deranged" version = "0.3.11" @@ -711,17 +691,6 @@ dependencies = [ "serde", ] -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "digest" version = "0.10.7" @@ -801,10 +770,9 @@ dependencies = [ "madmin", "md-5", "netif", - "nix 0.29.0", + "nix", "num", "num_cpus", - "openssl", "path-absolutize", "path-clean", "pin-project-lite", @@ -899,21 +867,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1670,15 +1623,6 @@ dependencies = [ "hashbrown 0.12.3", ] -[[package]] -name = "mach2" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" -dependencies = [ - "libc", -] - [[package]] name = "madmin" version = "0.0.1" @@ -1687,7 +1631,6 @@ dependencies = [ "common", "humantime", "hyper", - "psutil", "serde", "time", "tracing", @@ -1779,17 +1722,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", -] - [[package]] name = "nix" version = "0.29.0" @@ -1956,44 +1888,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" -[[package]] -name = "openssl" -version = "0.10.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "openssl-sys" -version = "0.9.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "outref" version = "0.5.1" @@ -2146,12 +2040,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" -[[package]] -name = "platforms" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" - [[package]] name = "poly1305" version = "0.8.0" @@ -2297,25 +2185,6 @@ dependencies = [ "tower 0.5.1", ] -[[package]] -name = "psutil" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e617cc9058daa5e1fe5a0d23ed745773a5ee354111dad1ec0235b0cc16b6730" -dependencies = [ - "cfg-if", - "darwin-libproc", - "derive_more", - "glob", - "mach2", - "nix 0.24.3", - "num_cpus", - "once_cell", - "platforms", - "thiserror 1.0.69", - "unescape", -] - [[package]] name = "quick-xml" version = "0.37.1" @@ -3393,12 +3262,6 @@ dependencies = [ "tz-rs", ] -[[package]] -name = "unescape" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb97dac3243214f8d8507998906ca3e2e0b900bf9bf4870477f125b82e68f6e" - [[package]] name = "unicode-ident" version = "1.0.14" diff --git a/common/lock/src/drwmutex.rs b/common/lock/src/drwmutex.rs index 6d14a6257..966097a8a 100644 --- a/common/lock/src/drwmutex.rs +++ b/common/lock/src/drwmutex.rs @@ -210,7 +210,7 @@ impl DRWMutex { pub async fn un_lock(&mut self) { if self.write_locks.is_empty() || !self.is_locked() { - panic!("Trying to un_lock() while no lock() is active, write_locks: {:?}", self.write_locks) + warn!("Trying to un_lock() while no lock() is active, write_locks: {:?}", self.write_locks) } let tolerance = self.lockers.len() / 2; @@ -231,7 +231,7 @@ impl DRWMutex { pub async fn un_r_lock(&mut self) { if self.read_locks.is_empty() || !self.is_r_locked() { - panic!("Trying to un_r_lock() while no r_lock() is active, read_locks: {:?}", self.read_locks) + warn!("Trying to un_r_lock() while no r_lock() is active, read_locks: {:?}", self.read_locks) } let tolerance = self.lockers.len() / 2; diff --git a/common/protos/src/generated/proto_gen/node_service.rs b/common/protos/src/generated/proto_gen/node_service.rs index c73b6e4cc..000d5b486 100644 --- a/common/protos/src/generated/proto_gen/node_service.rs +++ b/common/protos/src/generated/proto_gen/node_service.rs @@ -1,6 +1,13 @@ // This file is @generated by prost-build. /// -------------------------------------------------------------------- #[derive(Clone, PartialEq, ::prost::Message)] +pub struct Error { + #[prost(uint32, tag = "1")] + pub code: u32, + #[prost(string, tag = "2")] + pub error_info: ::prost::alloc::string::String, +} +#[derive(Clone, PartialEq, ::prost::Message)] pub struct PingRequest { #[prost(uint64, tag = "1")] pub version: u64, @@ -25,8 +32,8 @@ pub struct HealBucketRequest { pub struct HealBucketResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListBucketRequest { @@ -39,8 +46,8 @@ pub struct ListBucketResponse { pub success: bool, #[prost(string, repeated, tag = "2")] pub bucket_infos: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct MakeBucketRequest { @@ -53,8 +60,8 @@ pub struct MakeBucketRequest { pub struct MakeBucketResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetBucketInfoRequest { @@ -69,8 +76,8 @@ pub struct GetBucketInfoResponse { pub success: bool, #[prost(string, tag = "2")] pub bucket_info: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct DeleteBucketRequest { @@ -81,8 +88,8 @@ pub struct DeleteBucketRequest { pub struct DeleteBucketResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct ReadAllRequest { @@ -100,8 +107,8 @@ pub struct ReadAllResponse { pub success: bool, #[prost(bytes = "vec", tag = "2")] pub data: ::prost::alloc::vec::Vec, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct WriteAllRequest { @@ -119,8 +126,8 @@ pub struct WriteAllRequest { pub struct WriteAllResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct DeleteRequest { @@ -138,8 +145,8 @@ pub struct DeleteRequest { pub struct DeleteResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct VerifyFileRequest { @@ -159,8 +166,8 @@ pub struct VerifyFileResponse { pub success: bool, #[prost(string, tag = "2")] pub check_parts_resp: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct CheckPartsRequest { @@ -180,8 +187,8 @@ pub struct CheckPartsResponse { pub success: bool, #[prost(string, tag = "2")] pub check_parts_resp: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct RenamePartRequst { @@ -202,8 +209,8 @@ pub struct RenamePartRequst { pub struct RenamePartResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct RenameFileRequst { @@ -222,8 +229,8 @@ pub struct RenameFileRequst { pub struct RenameFileResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct WriteRequest { @@ -243,8 +250,8 @@ pub struct WriteRequest { pub struct WriteResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct ReadAtRequest { @@ -268,8 +275,8 @@ pub struct ReadAtResponse { pub data: ::prost::alloc::vec::Vec, #[prost(int64, tag = "3")] pub read_size: i64, - #[prost(string, optional, tag = "4")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "4")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListDirRequest { @@ -285,8 +292,8 @@ pub struct ListDirResponse { pub success: bool, #[prost(string, repeated, tag = "2")] pub volumes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct WalkDirRequest { @@ -327,8 +334,8 @@ pub struct RenameDataResponse { pub success: bool, #[prost(string, tag = "2")] pub rename_data_resp: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct MakeVolumesRequest { @@ -342,8 +349,8 @@ pub struct MakeVolumesRequest { pub struct MakeVolumesResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct MakeVolumeRequest { @@ -357,8 +364,8 @@ pub struct MakeVolumeRequest { pub struct MakeVolumeResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListVolumesRequest { @@ -372,8 +379,8 @@ pub struct ListVolumesResponse { pub success: bool, #[prost(string, repeated, tag = "2")] pub volume_infos: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct StatVolumeRequest { @@ -389,8 +396,8 @@ pub struct StatVolumeResponse { pub success: bool, #[prost(string, tag = "2")] pub volume_info: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct DeletePathsRequest { @@ -405,8 +412,8 @@ pub struct DeletePathsRequest { pub struct DeletePathsResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct UpdateMetadataRequest { @@ -425,8 +432,8 @@ pub struct UpdateMetadataRequest { pub struct UpdateMetadataResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct WriteMetadataRequest { @@ -444,8 +451,8 @@ pub struct WriteMetadataRequest { pub struct WriteMetadataResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct ReadVersionRequest { @@ -466,8 +473,8 @@ pub struct ReadVersionResponse { pub success: bool, #[prost(string, tag = "2")] pub file_info: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct ReadXlRequest { @@ -486,8 +493,8 @@ pub struct ReadXlResponse { pub success: bool, #[prost(string, tag = "2")] pub raw_file_info: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct DeleteVersionRequest { @@ -510,8 +517,8 @@ pub struct DeleteVersionResponse { pub success: bool, #[prost(string, tag = "2")] pub raw_file_info: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct DeleteVersionsRequest { @@ -530,8 +537,8 @@ pub struct DeleteVersionsResponse { pub success: bool, #[prost(string, repeated, tag = "2")] pub errors: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct ReadMultipleRequest { @@ -546,8 +553,8 @@ pub struct ReadMultipleResponse { pub success: bool, #[prost(string, repeated, tag = "2")] pub read_multiple_resps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct DeleteVolumeRequest { @@ -560,8 +567,8 @@ pub struct DeleteVolumeRequest { pub struct DeleteVolumeResponse { #[prost(bool, tag = "1")] pub success: bool, - #[prost(string, optional, tag = "2")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "2")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct DiskInfoRequest { @@ -576,8 +583,8 @@ pub struct DiskInfoResponse { pub success: bool, #[prost(string, tag = "2")] pub disk_info: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] + pub error: ::core::option::Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct NsScannerRequest { @@ -596,8 +603,8 @@ pub struct NsScannerResponse { pub update: ::prost::alloc::string::String, #[prost(string, tag = "3")] pub data_usage_cache: ::prost::alloc::string::String, - #[prost(string, optional, tag = "4")] - pub error_info: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "4")] + pub error: ::core::option::Option, } /// lock api have same argument type #[derive(Clone, PartialEq, ::prost::Message)] @@ -615,10 +622,7 @@ pub struct GenerallyLockResponse { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Mss { #[prost(map = "string, string", tag = "1")] - pub value: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub value: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct LocalStorageInfoRequest { @@ -782,10 +786,7 @@ pub struct DownloadProfileDataResponse { #[prost(bool, tag = "1")] pub success: bool, #[prost(map = "string, bytes", tag = "2")] - pub data: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::vec::Vec, - >, + pub data: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::vec::Vec>, #[prost(string, optional, tag = "3")] pub error_info: ::core::option::Option<::prost::alloc::string::String>, } @@ -1052,15 +1053,9 @@ pub struct LoadTransitionTierConfigResponse { } /// Generated client implementations. pub mod node_service_client { - #![allow( - unused_variables, - dead_code, - missing_docs, - clippy::wildcard_imports, - clippy::let_unit_value, - )] - use tonic::codegen::*; + #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)] use tonic::codegen::http::Uri; + use tonic::codegen::*; #[derive(Debug, Clone)] pub struct NodeServiceClient { inner: tonic::client::Grpc, @@ -1091,22 +1086,16 @@ pub mod node_service_client { let inner = tonic::client::Grpc::with_origin(inner, origin); Self { inner } } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> NodeServiceClient> + pub fn with_interceptor(inner: T, interceptor: F) -> NodeServiceClient> where F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< http::Request, - Response = http::Response< - >::ResponseBody, - >, + Response = http::Response<>::ResponseBody>, >, - , - >>::Error: Into + std::marker::Send + std::marker::Sync, + >>::Error: + Into + std::marker::Send + std::marker::Sync, { NodeServiceClient::new(InterceptedService::new(inner, interceptor)) } @@ -1149,15 +1138,9 @@ pub mod node_service_client { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/Ping", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Ping"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "Ping")); @@ -1166,22 +1149,13 @@ pub mod node_service_client { pub async fn heal_bucket( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/HealBucket", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/HealBucket"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "HealBucket")); @@ -1190,22 +1164,13 @@ pub mod node_service_client { pub async fn list_bucket( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ListBucket", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ListBucket"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ListBucket")); @@ -1214,22 +1179,13 @@ pub mod node_service_client { pub async fn make_bucket( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/MakeBucket", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/MakeBucket"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "MakeBucket")); @@ -1238,22 +1194,13 @@ pub mod node_service_client { pub async fn get_bucket_info( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetBucketInfo", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetBucketInfo"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetBucketInfo")); @@ -1262,22 +1209,13 @@ pub mod node_service_client { pub async fn delete_bucket( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DeleteBucket", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteBucket"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "DeleteBucket")); @@ -1286,22 +1224,13 @@ pub mod node_service_client { pub async fn read_all( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ReadAll", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadAll"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ReadAll")); @@ -1310,22 +1239,13 @@ pub mod node_service_client { pub async fn write_all( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/WriteAll", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/WriteAll"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "WriteAll")); @@ -1338,15 +1258,9 @@ pub mod node_service_client { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/Delete", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Delete"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "Delete")); @@ -1355,22 +1269,13 @@ pub mod node_service_client { pub async fn verify_file( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/VerifyFile", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/VerifyFile"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "VerifyFile")); @@ -1379,22 +1284,13 @@ pub mod node_service_client { pub async fn check_parts( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/CheckParts", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/CheckParts"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "CheckParts")); @@ -1403,22 +1299,13 @@ pub mod node_service_client { pub async fn rename_part( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/RenamePart", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RenamePart"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "RenamePart")); @@ -1427,22 +1314,13 @@ pub mod node_service_client { pub async fn rename_file( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/RenameFile", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RenameFile"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "RenameFile")); @@ -1455,15 +1333,9 @@ pub mod node_service_client { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/Write", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Write"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "Write")); @@ -1472,22 +1344,13 @@ pub mod node_service_client { pub async fn write_stream( &mut self, request: impl tonic::IntoStreamingRequest, - ) -> std::result::Result< - tonic::Response>, - tonic::Status, - > { + ) -> std::result::Result>, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/WriteStream", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/WriteStream"); let mut req = request.into_streaming_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "WriteStream")); @@ -1497,22 +1360,13 @@ pub mod node_service_client { pub async fn read_at( &mut self, request: impl tonic::IntoStreamingRequest, - ) -> std::result::Result< - tonic::Response>, - tonic::Status, - > { + ) -> std::result::Result>, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ReadAt", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadAt"); let mut req = request.into_streaming_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ReadAt")); @@ -1521,22 +1375,13 @@ pub mod node_service_client { pub async fn list_dir( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ListDir", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ListDir"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ListDir")); @@ -1545,22 +1390,13 @@ pub mod node_service_client { pub async fn walk_dir( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response>, - tonic::Status, - > { + ) -> std::result::Result>, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/WalkDir", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/WalkDir"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "WalkDir")); @@ -1569,22 +1405,13 @@ pub mod node_service_client { pub async fn rename_data( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/RenameData", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RenameData"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "RenameData")); @@ -1593,22 +1420,13 @@ pub mod node_service_client { pub async fn make_volumes( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/MakeVolumes", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/MakeVolumes"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "MakeVolumes")); @@ -1617,22 +1435,13 @@ pub mod node_service_client { pub async fn make_volume( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/MakeVolume", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/MakeVolume"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "MakeVolume")); @@ -1641,22 +1450,13 @@ pub mod node_service_client { pub async fn list_volumes( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ListVolumes", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ListVolumes"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ListVolumes")); @@ -1665,22 +1465,13 @@ pub mod node_service_client { pub async fn stat_volume( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/StatVolume", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/StatVolume"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "StatVolume")); @@ -1689,22 +1480,13 @@ pub mod node_service_client { pub async fn delete_paths( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DeletePaths", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeletePaths"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "DeletePaths")); @@ -1713,22 +1495,13 @@ pub mod node_service_client { pub async fn update_metadata( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/UpdateMetadata", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/UpdateMetadata"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "UpdateMetadata")); @@ -1737,22 +1510,13 @@ pub mod node_service_client { pub async fn write_metadata( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/WriteMetadata", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/WriteMetadata"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "WriteMetadata")); @@ -1761,22 +1525,13 @@ pub mod node_service_client { pub async fn read_version( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ReadVersion", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadVersion"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ReadVersion")); @@ -1789,15 +1544,9 @@ pub mod node_service_client { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ReadXL", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadXL"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ReadXL")); @@ -1806,22 +1555,13 @@ pub mod node_service_client { pub async fn delete_version( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DeleteVersion", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteVersion"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "DeleteVersion")); @@ -1830,22 +1570,13 @@ pub mod node_service_client { pub async fn delete_versions( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DeleteVersions", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteVersions"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "DeleteVersions")); @@ -1854,22 +1585,13 @@ pub mod node_service_client { pub async fn read_multiple( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ReadMultiple", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadMultiple"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ReadMultiple")); @@ -1878,22 +1600,13 @@ pub mod node_service_client { pub async fn delete_volume( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DeleteVolume", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteVolume"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "DeleteVolume")); @@ -1902,22 +1615,13 @@ pub mod node_service_client { pub async fn disk_info( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DiskInfo", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DiskInfo"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "DiskInfo")); @@ -1926,22 +1630,13 @@ pub mod node_service_client { pub async fn ns_scanner( &mut self, request: impl tonic::IntoStreamingRequest, - ) -> std::result::Result< - tonic::Response>, - tonic::Status, - > { + ) -> std::result::Result>, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/NsScanner", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/NsScanner"); let mut req = request.into_streaming_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "NsScanner")); @@ -1950,22 +1645,13 @@ pub mod node_service_client { pub async fn lock( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/Lock", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Lock"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "Lock")); @@ -1974,22 +1660,13 @@ pub mod node_service_client { pub async fn un_lock( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/UnLock", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/UnLock"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "UnLock")); @@ -1998,22 +1675,13 @@ pub mod node_service_client { pub async fn r_lock( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/RLock", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RLock"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "RLock")); @@ -2022,22 +1690,13 @@ pub mod node_service_client { pub async fn r_un_lock( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/RUnLock", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RUnLock"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "RUnLock")); @@ -2046,22 +1705,13 @@ pub mod node_service_client { pub async fn force_un_lock( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ForceUnLock", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ForceUnLock"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ForceUnLock")); @@ -2070,22 +1720,13 @@ pub mod node_service_client { pub async fn refresh( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/Refresh", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Refresh"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "Refresh")); @@ -2094,22 +1735,13 @@ pub mod node_service_client { pub async fn local_storage_info( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/LocalStorageInfo", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LocalStorageInfo"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "LocalStorageInfo")); @@ -2118,22 +1750,13 @@ pub mod node_service_client { pub async fn server_info( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ServerInfo", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ServerInfo"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ServerInfo")); @@ -2142,22 +1765,13 @@ pub mod node_service_client { pub async fn get_cpus( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetCpus", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetCpus"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetCpus")); @@ -2166,22 +1780,13 @@ pub mod node_service_client { pub async fn get_net_info( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetNetInfo", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetNetInfo"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetNetInfo")); @@ -2190,22 +1795,13 @@ pub mod node_service_client { pub async fn get_partitions( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetPartitions", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetPartitions"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetPartitions")); @@ -2214,22 +1810,13 @@ pub mod node_service_client { pub async fn get_os_info( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetOsInfo", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetOsInfo"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetOsInfo")); @@ -2238,22 +1825,13 @@ pub mod node_service_client { pub async fn get_se_linux_info( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetSELinuxInfo", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetSELinuxInfo"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetSELinuxInfo")); @@ -2262,22 +1840,13 @@ pub mod node_service_client { pub async fn get_sys_config( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetSysConfig", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetSysConfig"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetSysConfig")); @@ -2286,22 +1855,13 @@ pub mod node_service_client { pub async fn get_sys_errors( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetSysErrors", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetSysErrors"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetSysErrors")); @@ -2310,22 +1870,13 @@ pub mod node_service_client { pub async fn get_mem_info( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetMemInfo", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetMemInfo"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetMemInfo")); @@ -2334,22 +1885,13 @@ pub mod node_service_client { pub async fn get_metrics( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetMetrics", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetMetrics"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetMetrics")); @@ -2358,22 +1900,13 @@ pub mod node_service_client { pub async fn get_proc_info( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetProcInfo", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetProcInfo"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetProcInfo")); @@ -2382,22 +1915,13 @@ pub mod node_service_client { pub async fn start_profiling( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/StartProfiling", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/StartProfiling"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "StartProfiling")); @@ -2406,48 +1930,28 @@ pub mod node_service_client { pub async fn download_profile_data( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DownloadProfileData", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DownloadProfileData"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "DownloadProfileData"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "DownloadProfileData")); self.inner.unary(req, path, codec).await } pub async fn get_bucket_stats( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetBucketStats", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetBucketStats"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetBucketStats")); @@ -2456,22 +1960,13 @@ pub mod node_service_client { pub async fn get_sr_metrics( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetSRMetrics", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetSRMetrics"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "GetSRMetrics")); @@ -2480,100 +1975,58 @@ pub mod node_service_client { pub async fn get_all_bucket_stats( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetAllBucketStats", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetAllBucketStats"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "GetAllBucketStats"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "GetAllBucketStats")); self.inner.unary(req, path, codec).await } pub async fn load_bucket_metadata( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/LoadBucketMetadata", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadBucketMetadata"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "LoadBucketMetadata"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "LoadBucketMetadata")); self.inner.unary(req, path, codec).await } pub async fn delete_bucket_metadata( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DeleteBucketMetadata", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteBucketMetadata"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "DeleteBucketMetadata"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "DeleteBucketMetadata")); self.inner.unary(req, path, codec).await } pub async fn delete_policy( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DeletePolicy", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeletePolicy"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "DeletePolicy")); @@ -2582,22 +2035,13 @@ pub mod node_service_client { pub async fn load_policy( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/LoadPolicy", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadPolicy"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "LoadPolicy")); @@ -2606,48 +2050,28 @@ pub mod node_service_client { pub async fn load_policy_mapping( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/LoadPolicyMapping", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadPolicyMapping"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "LoadPolicyMapping"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "LoadPolicyMapping")); self.inner.unary(req, path, codec).await } pub async fn delete_user( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DeleteUser", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteUser"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "DeleteUser")); @@ -2656,48 +2080,28 @@ pub mod node_service_client { pub async fn delete_service_account( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/DeleteServiceAccount", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteServiceAccount"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "DeleteServiceAccount"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "DeleteServiceAccount")); self.inner.unary(req, path, codec).await } pub async fn load_user( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/LoadUser", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadUser"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "LoadUser")); @@ -2706,48 +2110,28 @@ pub mod node_service_client { pub async fn load_service_account( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/LoadServiceAccount", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadServiceAccount"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "LoadServiceAccount"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "LoadServiceAccount")); self.inner.unary(req, path, codec).await } pub async fn load_group( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/LoadGroup", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadGroup"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "LoadGroup")); @@ -2756,30 +2140,16 @@ pub mod node_service_client { pub async fn reload_site_replication_config( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ReloadSiteReplicationConfig", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReloadSiteReplicationConfig"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new( - "node_service.NodeService", - "ReloadSiteReplicationConfig", - ), - ); + .insert(GrpcMethod::new("node_service.NodeService", "ReloadSiteReplicationConfig")); self.inner.unary(req, path, codec).await } /// rpc VerifyBinary() returns () {}; @@ -2787,22 +2157,13 @@ pub mod node_service_client { pub async fn signal_service( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/SignalService", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/SignalService"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "SignalService")); @@ -2811,100 +2172,58 @@ pub mod node_service_client { pub async fn background_heal_status( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/BackgroundHealStatus", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/BackgroundHealStatus"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "BackgroundHealStatus"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "BackgroundHealStatus")); self.inner.unary(req, path, codec).await } pub async fn get_metacache_listing( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/GetMetacacheListing", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetMetacacheListing"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "GetMetacacheListing"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "GetMetacacheListing")); self.inner.unary(req, path, codec).await } pub async fn update_metacache_listing( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/UpdateMetacacheListing", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/UpdateMetacacheListing"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "UpdateMetacacheListing"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "UpdateMetacacheListing")); self.inner.unary(req, path, codec).await } pub async fn reload_pool_meta( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/ReloadPoolMeta", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReloadPoolMeta"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "ReloadPoolMeta")); @@ -2913,22 +2232,13 @@ pub mod node_service_client { pub async fn stop_rebalance( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/StopRebalance", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/StopRebalance"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("node_service.NodeService", "StopRebalance")); @@ -2937,69 +2247,38 @@ pub mod node_service_client { pub async fn load_rebalance_meta( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/LoadRebalanceMeta", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadRebalanceMeta"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new("node_service.NodeService", "LoadRebalanceMeta"), - ); + .insert(GrpcMethod::new("node_service.NodeService", "LoadRebalanceMeta")); self.inner.unary(req, path, codec).await } pub async fn load_transition_tier_config( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result, tonic::Status> { self.inner .ready() .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/node_service.NodeService/LoadTransitionTierConfig", - ); + let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadTransitionTierConfig"); let mut req = request.into_request(); req.extensions_mut() - .insert( - GrpcMethod::new( - "node_service.NodeService", - "LoadTransitionTierConfig", - ), - ); + .insert(GrpcMethod::new("node_service.NodeService", "LoadTransitionTierConfig")); self.inner.unary(req, path, codec).await } } } /// Generated server implementations. pub mod node_service_server { - #![allow( - unused_variables, - dead_code, - missing_docs, - clippy::wildcard_imports, - clippy::let_unit_value, - )] + #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)] use tonic::codegen::*; /// Generated trait containing gRPC methods that should be implemented for use with NodeServiceServer. #[async_trait] @@ -3012,38 +2291,23 @@ pub mod node_service_server { async fn heal_bucket( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn list_bucket( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn make_bucket( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_bucket_info( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn delete_bucket( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn read_all( &self, request: tonic::Request, @@ -3051,10 +2315,7 @@ pub mod node_service_server { async fn write_all( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn delete( &self, request: tonic::Request, @@ -3062,52 +2323,33 @@ pub mod node_service_server { async fn verify_file( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn check_parts( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn rename_part( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn rename_file( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn write( &self, request: tonic::Request, ) -> std::result::Result, tonic::Status>; /// Server streaming response type for the WriteStream method. - type WriteStreamStream: tonic::codegen::tokio_stream::Stream< - Item = std::result::Result, - > + type WriteStreamStream: tonic::codegen::tokio_stream::Stream> + std::marker::Send + 'static; async fn write_stream( &self, request: tonic::Request>, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Server streaming response type for the ReadAt method. - type ReadAtStream: tonic::codegen::tokio_stream::Stream< - Item = std::result::Result, - > + type ReadAtStream: tonic::codegen::tokio_stream::Stream> + std::marker::Send + 'static; /// rpc Append(AppendRequest) returns (AppendResponse) {}; @@ -3120,9 +2362,7 @@ pub mod node_service_server { request: tonic::Request, ) -> std::result::Result, tonic::Status>; /// Server streaming response type for the WalkDir method. - type WalkDirStream: tonic::codegen::tokio_stream::Stream< - Item = std::result::Result, - > + type WalkDirStream: tonic::codegen::tokio_stream::Stream> + std::marker::Send + 'static; async fn walk_dir( @@ -3132,66 +2372,39 @@ pub mod node_service_server { async fn rename_data( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn make_volumes( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn make_volume( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn list_volumes( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn stat_volume( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn delete_paths( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn update_metadata( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn write_metadata( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn read_version( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn read_xl( &self, request: tonic::Request, @@ -3199,42 +2412,25 @@ pub mod node_service_server { async fn delete_version( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn delete_versions( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn read_multiple( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn delete_volume( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn disk_info( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Server streaming response type for the NsScanner method. - type NsScannerStream: tonic::codegen::tokio_stream::Stream< - Item = std::result::Result, - > + type NsScannerStream: tonic::codegen::tokio_stream::Stream> + std::marker::Send + 'static; async fn ns_scanner( @@ -3244,59 +2440,35 @@ pub mod node_service_server { async fn lock( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn un_lock( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn r_lock( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn r_un_lock( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn force_un_lock( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn refresh( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn local_storage_info( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn server_info( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_cpus( &self, request: tonic::Request, @@ -3304,236 +2476,137 @@ pub mod node_service_server { async fn get_net_info( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_partitions( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_os_info( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_se_linux_info( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_sys_config( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_sys_errors( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_mem_info( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_metrics( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_proc_info( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn start_profiling( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn download_profile_data( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_bucket_stats( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_sr_metrics( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_all_bucket_stats( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn load_bucket_metadata( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn delete_bucket_metadata( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn delete_policy( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn load_policy( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn load_policy_mapping( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn delete_user( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn delete_service_account( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn load_user( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn load_service_account( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn load_group( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn reload_site_replication_config( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// rpc VerifyBinary() returns () {}; /// rpc CommitBinary() returns () {}; async fn signal_service( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn background_heal_status( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn get_metacache_listing( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn update_metacache_listing( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn reload_pool_meta( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn stop_rebalance( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn load_rebalance_meta( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; async fn load_transition_tier_config( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; } #[derive(Debug)] pub struct NodeServiceServer { @@ -3556,10 +2629,7 @@ pub mod node_service_server { max_encoding_message_size: None, } } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> InterceptedService + pub fn with_interceptor(inner: T, interceptor: F) -> InterceptedService where F: tonic::service::Interceptor, { @@ -3603,10 +2673,7 @@ pub mod node_service_server { type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; - fn poll_ready( - &mut self, - _cx: &mut Context<'_>, - ) -> Poll> { + fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { Poll::Ready(Ok(())) } fn call(&mut self, req: http::Request) -> Self::Future { @@ -3614,21 +2681,12 @@ pub mod node_service_server { "/node_service.NodeService/Ping" => { #[allow(non_camel_case_types)] struct PingSvc(pub Arc); - impl tonic::server::UnaryService - for PingSvc { + impl tonic::server::UnaryService for PingSvc { type Response = super::PingResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::ping(&inner, request).await - }; + let fut = async move { ::ping(&inner, request).await }; Box::pin(fut) } } @@ -3641,14 +2699,8 @@ pub mod node_service_server { let method = PingSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -3657,23 +2709,12 @@ pub mod node_service_server { "/node_service.NodeService/HealBucket" => { #[allow(non_camel_case_types)] struct HealBucketSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for HealBucketSvc { + impl tonic::server::UnaryService for HealBucketSvc { type Response = super::HealBucketResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::heal_bucket(&inner, request).await - }; + let fut = async move { ::heal_bucket(&inner, request).await }; Box::pin(fut) } } @@ -3686,14 +2727,8 @@ pub mod node_service_server { let method = HealBucketSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -3702,23 +2737,12 @@ pub mod node_service_server { "/node_service.NodeService/ListBucket" => { #[allow(non_camel_case_types)] struct ListBucketSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ListBucketSvc { + impl tonic::server::UnaryService for ListBucketSvc { type Response = super::ListBucketResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::list_bucket(&inner, request).await - }; + let fut = async move { ::list_bucket(&inner, request).await }; Box::pin(fut) } } @@ -3731,14 +2755,8 @@ pub mod node_service_server { let method = ListBucketSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -3747,23 +2765,12 @@ pub mod node_service_server { "/node_service.NodeService/MakeBucket" => { #[allow(non_camel_case_types)] struct MakeBucketSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for MakeBucketSvc { + impl tonic::server::UnaryService for MakeBucketSvc { type Response = super::MakeBucketResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::make_bucket(&inner, request).await - }; + let fut = async move { ::make_bucket(&inner, request).await }; Box::pin(fut) } } @@ -3776,14 +2783,8 @@ pub mod node_service_server { let method = MakeBucketSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -3792,23 +2793,12 @@ pub mod node_service_server { "/node_service.NodeService/GetBucketInfo" => { #[allow(non_camel_case_types)] struct GetBucketInfoSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetBucketInfoSvc { + impl tonic::server::UnaryService for GetBucketInfoSvc { type Response = super::GetBucketInfoResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_bucket_info(&inner, request).await - }; + let fut = async move { ::get_bucket_info(&inner, request).await }; Box::pin(fut) } } @@ -3821,14 +2811,8 @@ pub mod node_service_server { let method = GetBucketInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -3837,23 +2821,12 @@ pub mod node_service_server { "/node_service.NodeService/DeleteBucket" => { #[allow(non_camel_case_types)] struct DeleteBucketSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeleteBucketSvc { + impl tonic::server::UnaryService for DeleteBucketSvc { type Response = super::DeleteBucketResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_bucket(&inner, request).await - }; + let fut = async move { ::delete_bucket(&inner, request).await }; Box::pin(fut) } } @@ -3866,14 +2839,8 @@ pub mod node_service_server { let method = DeleteBucketSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -3882,23 +2849,12 @@ pub mod node_service_server { "/node_service.NodeService/ReadAll" => { #[allow(non_camel_case_types)] struct ReadAllSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ReadAllSvc { + impl tonic::server::UnaryService for ReadAllSvc { type Response = super::ReadAllResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::read_all(&inner, request).await - }; + let fut = async move { ::read_all(&inner, request).await }; Box::pin(fut) } } @@ -3911,14 +2867,8 @@ pub mod node_service_server { let method = ReadAllSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -3927,23 +2877,12 @@ pub mod node_service_server { "/node_service.NodeService/WriteAll" => { #[allow(non_camel_case_types)] struct WriteAllSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for WriteAllSvc { + impl tonic::server::UnaryService for WriteAllSvc { type Response = super::WriteAllResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::write_all(&inner, request).await - }; + let fut = async move { ::write_all(&inner, request).await }; Box::pin(fut) } } @@ -3956,14 +2895,8 @@ pub mod node_service_server { let method = WriteAllSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -3972,23 +2905,12 @@ pub mod node_service_server { "/node_service.NodeService/Delete" => { #[allow(non_camel_case_types)] struct DeleteSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeleteSvc { + impl tonic::server::UnaryService for DeleteSvc { type Response = super::DeleteResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete(&inner, request).await - }; + let fut = async move { ::delete(&inner, request).await }; Box::pin(fut) } } @@ -4001,14 +2923,8 @@ pub mod node_service_server { let method = DeleteSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4017,23 +2933,12 @@ pub mod node_service_server { "/node_service.NodeService/VerifyFile" => { #[allow(non_camel_case_types)] struct VerifyFileSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for VerifyFileSvc { + impl tonic::server::UnaryService for VerifyFileSvc { type Response = super::VerifyFileResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::verify_file(&inner, request).await - }; + let fut = async move { ::verify_file(&inner, request).await }; Box::pin(fut) } } @@ -4046,14 +2951,8 @@ pub mod node_service_server { let method = VerifyFileSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4062,23 +2961,12 @@ pub mod node_service_server { "/node_service.NodeService/CheckParts" => { #[allow(non_camel_case_types)] struct CheckPartsSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for CheckPartsSvc { + impl tonic::server::UnaryService for CheckPartsSvc { type Response = super::CheckPartsResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::check_parts(&inner, request).await - }; + let fut = async move { ::check_parts(&inner, request).await }; Box::pin(fut) } } @@ -4091,14 +2979,8 @@ pub mod node_service_server { let method = CheckPartsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4107,23 +2989,12 @@ pub mod node_service_server { "/node_service.NodeService/RenamePart" => { #[allow(non_camel_case_types)] struct RenamePartSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for RenamePartSvc { + impl tonic::server::UnaryService for RenamePartSvc { type Response = super::RenamePartResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::rename_part(&inner, request).await - }; + let fut = async move { ::rename_part(&inner, request).await }; Box::pin(fut) } } @@ -4136,14 +3007,8 @@ pub mod node_service_server { let method = RenamePartSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4152,23 +3017,12 @@ pub mod node_service_server { "/node_service.NodeService/RenameFile" => { #[allow(non_camel_case_types)] struct RenameFileSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for RenameFileSvc { + impl tonic::server::UnaryService for RenameFileSvc { type Response = super::RenameFileResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::rename_file(&inner, request).await - }; + let fut = async move { ::rename_file(&inner, request).await }; Box::pin(fut) } } @@ -4181,14 +3035,8 @@ pub mod node_service_server { let method = RenameFileSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4197,21 +3045,12 @@ pub mod node_service_server { "/node_service.NodeService/Write" => { #[allow(non_camel_case_types)] struct WriteSvc(pub Arc); - impl tonic::server::UnaryService - for WriteSvc { + impl tonic::server::UnaryService for WriteSvc { type Response = super::WriteResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::write(&inner, request).await - }; + let fut = async move { ::write(&inner, request).await }; Box::pin(fut) } } @@ -4224,14 +3063,8 @@ pub mod node_service_server { let method = WriteSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4240,26 +3073,13 @@ pub mod node_service_server { "/node_service.NodeService/WriteStream" => { #[allow(non_camel_case_types)] struct WriteStreamSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::StreamingService - for WriteStreamSvc { + impl tonic::server::StreamingService for WriteStreamSvc { type Response = super::WriteResponse; type ResponseStream = T::WriteStreamStream; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request< - tonic::Streaming, - >, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request>) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::write_stream(&inner, request).await - }; + let fut = async move { ::write_stream(&inner, request).await }; Box::pin(fut) } } @@ -4272,14 +3092,8 @@ pub mod node_service_server { let method = WriteStreamSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.streaming(method, req).await; Ok(res) }; @@ -4288,26 +3102,13 @@ pub mod node_service_server { "/node_service.NodeService/ReadAt" => { #[allow(non_camel_case_types)] struct ReadAtSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::StreamingService - for ReadAtSvc { + impl tonic::server::StreamingService for ReadAtSvc { type Response = super::ReadAtResponse; type ResponseStream = T::ReadAtStream; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request< - tonic::Streaming, - >, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request>) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::read_at(&inner, request).await - }; + let fut = async move { ::read_at(&inner, request).await }; Box::pin(fut) } } @@ -4320,14 +3121,8 @@ pub mod node_service_server { let method = ReadAtSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.streaming(method, req).await; Ok(res) }; @@ -4336,23 +3131,12 @@ pub mod node_service_server { "/node_service.NodeService/ListDir" => { #[allow(non_camel_case_types)] struct ListDirSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ListDirSvc { + impl tonic::server::UnaryService for ListDirSvc { type Response = super::ListDirResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::list_dir(&inner, request).await - }; + let fut = async move { ::list_dir(&inner, request).await }; Box::pin(fut) } } @@ -4365,14 +3149,8 @@ pub mod node_service_server { let method = ListDirSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4381,24 +3159,13 @@ pub mod node_service_server { "/node_service.NodeService/WalkDir" => { #[allow(non_camel_case_types)] struct WalkDirSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::ServerStreamingService - for WalkDirSvc { + impl tonic::server::ServerStreamingService for WalkDirSvc { type Response = super::WalkDirResponse; type ResponseStream = T::WalkDirStream; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::walk_dir(&inner, request).await - }; + let fut = async move { ::walk_dir(&inner, request).await }; Box::pin(fut) } } @@ -4411,14 +3178,8 @@ pub mod node_service_server { let method = WalkDirSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.server_streaming(method, req).await; Ok(res) }; @@ -4427,23 +3188,12 @@ pub mod node_service_server { "/node_service.NodeService/RenameData" => { #[allow(non_camel_case_types)] struct RenameDataSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for RenameDataSvc { + impl tonic::server::UnaryService for RenameDataSvc { type Response = super::RenameDataResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::rename_data(&inner, request).await - }; + let fut = async move { ::rename_data(&inner, request).await }; Box::pin(fut) } } @@ -4456,14 +3206,8 @@ pub mod node_service_server { let method = RenameDataSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4472,23 +3216,12 @@ pub mod node_service_server { "/node_service.NodeService/MakeVolumes" => { #[allow(non_camel_case_types)] struct MakeVolumesSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for MakeVolumesSvc { + impl tonic::server::UnaryService for MakeVolumesSvc { type Response = super::MakeVolumesResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::make_volumes(&inner, request).await - }; + let fut = async move { ::make_volumes(&inner, request).await }; Box::pin(fut) } } @@ -4501,14 +3234,8 @@ pub mod node_service_server { let method = MakeVolumesSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4517,23 +3244,12 @@ pub mod node_service_server { "/node_service.NodeService/MakeVolume" => { #[allow(non_camel_case_types)] struct MakeVolumeSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for MakeVolumeSvc { + impl tonic::server::UnaryService for MakeVolumeSvc { type Response = super::MakeVolumeResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::make_volume(&inner, request).await - }; + let fut = async move { ::make_volume(&inner, request).await }; Box::pin(fut) } } @@ -4546,14 +3262,8 @@ pub mod node_service_server { let method = MakeVolumeSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4562,23 +3272,12 @@ pub mod node_service_server { "/node_service.NodeService/ListVolumes" => { #[allow(non_camel_case_types)] struct ListVolumesSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ListVolumesSvc { + impl tonic::server::UnaryService for ListVolumesSvc { type Response = super::ListVolumesResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::list_volumes(&inner, request).await - }; + let fut = async move { ::list_volumes(&inner, request).await }; Box::pin(fut) } } @@ -4591,14 +3290,8 @@ pub mod node_service_server { let method = ListVolumesSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4607,23 +3300,12 @@ pub mod node_service_server { "/node_service.NodeService/StatVolume" => { #[allow(non_camel_case_types)] struct StatVolumeSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for StatVolumeSvc { + impl tonic::server::UnaryService for StatVolumeSvc { type Response = super::StatVolumeResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::stat_volume(&inner, request).await - }; + let fut = async move { ::stat_volume(&inner, request).await }; Box::pin(fut) } } @@ -4636,14 +3318,8 @@ pub mod node_service_server { let method = StatVolumeSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4652,23 +3328,12 @@ pub mod node_service_server { "/node_service.NodeService/DeletePaths" => { #[allow(non_camel_case_types)] struct DeletePathsSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeletePathsSvc { + impl tonic::server::UnaryService for DeletePathsSvc { type Response = super::DeletePathsResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_paths(&inner, request).await - }; + let fut = async move { ::delete_paths(&inner, request).await }; Box::pin(fut) } } @@ -4681,14 +3346,8 @@ pub mod node_service_server { let method = DeletePathsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4697,23 +3356,12 @@ pub mod node_service_server { "/node_service.NodeService/UpdateMetadata" => { #[allow(non_camel_case_types)] struct UpdateMetadataSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for UpdateMetadataSvc { + impl tonic::server::UnaryService for UpdateMetadataSvc { type Response = super::UpdateMetadataResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::update_metadata(&inner, request).await - }; + let fut = async move { ::update_metadata(&inner, request).await }; Box::pin(fut) } } @@ -4726,14 +3374,8 @@ pub mod node_service_server { let method = UpdateMetadataSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4742,23 +3384,12 @@ pub mod node_service_server { "/node_service.NodeService/WriteMetadata" => { #[allow(non_camel_case_types)] struct WriteMetadataSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for WriteMetadataSvc { + impl tonic::server::UnaryService for WriteMetadataSvc { type Response = super::WriteMetadataResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::write_metadata(&inner, request).await - }; + let fut = async move { ::write_metadata(&inner, request).await }; Box::pin(fut) } } @@ -4771,14 +3402,8 @@ pub mod node_service_server { let method = WriteMetadataSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4787,23 +3412,12 @@ pub mod node_service_server { "/node_service.NodeService/ReadVersion" => { #[allow(non_camel_case_types)] struct ReadVersionSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ReadVersionSvc { + impl tonic::server::UnaryService for ReadVersionSvc { type Response = super::ReadVersionResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::read_version(&inner, request).await - }; + let fut = async move { ::read_version(&inner, request).await }; Box::pin(fut) } } @@ -4816,14 +3430,8 @@ pub mod node_service_server { let method = ReadVersionSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4832,23 +3440,12 @@ pub mod node_service_server { "/node_service.NodeService/ReadXL" => { #[allow(non_camel_case_types)] struct ReadXLSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ReadXLSvc { + impl tonic::server::UnaryService for ReadXLSvc { type Response = super::ReadXlResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::read_xl(&inner, request).await - }; + let fut = async move { ::read_xl(&inner, request).await }; Box::pin(fut) } } @@ -4861,14 +3458,8 @@ pub mod node_service_server { let method = ReadXLSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4877,23 +3468,12 @@ pub mod node_service_server { "/node_service.NodeService/DeleteVersion" => { #[allow(non_camel_case_types)] struct DeleteVersionSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeleteVersionSvc { + impl tonic::server::UnaryService for DeleteVersionSvc { type Response = super::DeleteVersionResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_version(&inner, request).await - }; + let fut = async move { ::delete_version(&inner, request).await }; Box::pin(fut) } } @@ -4906,14 +3486,8 @@ pub mod node_service_server { let method = DeleteVersionSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4922,23 +3496,12 @@ pub mod node_service_server { "/node_service.NodeService/DeleteVersions" => { #[allow(non_camel_case_types)] struct DeleteVersionsSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeleteVersionsSvc { + impl tonic::server::UnaryService for DeleteVersionsSvc { type Response = super::DeleteVersionsResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_versions(&inner, request).await - }; + let fut = async move { ::delete_versions(&inner, request).await }; Box::pin(fut) } } @@ -4951,14 +3514,8 @@ pub mod node_service_server { let method = DeleteVersionsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -4967,23 +3524,12 @@ pub mod node_service_server { "/node_service.NodeService/ReadMultiple" => { #[allow(non_camel_case_types)] struct ReadMultipleSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ReadMultipleSvc { + impl tonic::server::UnaryService for ReadMultipleSvc { type Response = super::ReadMultipleResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::read_multiple(&inner, request).await - }; + let fut = async move { ::read_multiple(&inner, request).await }; Box::pin(fut) } } @@ -4996,14 +3542,8 @@ pub mod node_service_server { let method = ReadMultipleSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5012,23 +3552,12 @@ pub mod node_service_server { "/node_service.NodeService/DeleteVolume" => { #[allow(non_camel_case_types)] struct DeleteVolumeSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeleteVolumeSvc { + impl tonic::server::UnaryService for DeleteVolumeSvc { type Response = super::DeleteVolumeResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_volume(&inner, request).await - }; + let fut = async move { ::delete_volume(&inner, request).await }; Box::pin(fut) } } @@ -5041,14 +3570,8 @@ pub mod node_service_server { let method = DeleteVolumeSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5057,23 +3580,12 @@ pub mod node_service_server { "/node_service.NodeService/DiskInfo" => { #[allow(non_camel_case_types)] struct DiskInfoSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DiskInfoSvc { + impl tonic::server::UnaryService for DiskInfoSvc { type Response = super::DiskInfoResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::disk_info(&inner, request).await - }; + let fut = async move { ::disk_info(&inner, request).await }; Box::pin(fut) } } @@ -5086,14 +3598,8 @@ pub mod node_service_server { let method = DiskInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5102,26 +3608,13 @@ pub mod node_service_server { "/node_service.NodeService/NsScanner" => { #[allow(non_camel_case_types)] struct NsScannerSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::StreamingService - for NsScannerSvc { + impl tonic::server::StreamingService for NsScannerSvc { type Response = super::NsScannerResponse; type ResponseStream = T::NsScannerStream; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request< - tonic::Streaming, - >, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request>) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::ns_scanner(&inner, request).await - }; + let fut = async move { ::ns_scanner(&inner, request).await }; Box::pin(fut) } } @@ -5134,14 +3627,8 @@ pub mod node_service_server { let method = NsScannerSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.streaming(method, req).await; Ok(res) }; @@ -5150,23 +3637,12 @@ pub mod node_service_server { "/node_service.NodeService/Lock" => { #[allow(non_camel_case_types)] struct LockSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LockSvc { + impl tonic::server::UnaryService for LockSvc { type Response = super::GenerallyLockResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::lock(&inner, request).await - }; + let fut = async move { ::lock(&inner, request).await }; Box::pin(fut) } } @@ -5179,14 +3655,8 @@ pub mod node_service_server { let method = LockSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5195,23 +3665,12 @@ pub mod node_service_server { "/node_service.NodeService/UnLock" => { #[allow(non_camel_case_types)] struct UnLockSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for UnLockSvc { + impl tonic::server::UnaryService for UnLockSvc { type Response = super::GenerallyLockResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::un_lock(&inner, request).await - }; + let fut = async move { ::un_lock(&inner, request).await }; Box::pin(fut) } } @@ -5224,14 +3683,8 @@ pub mod node_service_server { let method = UnLockSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5240,23 +3693,12 @@ pub mod node_service_server { "/node_service.NodeService/RLock" => { #[allow(non_camel_case_types)] struct RLockSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for RLockSvc { + impl tonic::server::UnaryService for RLockSvc { type Response = super::GenerallyLockResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::r_lock(&inner, request).await - }; + let fut = async move { ::r_lock(&inner, request).await }; Box::pin(fut) } } @@ -5269,14 +3711,8 @@ pub mod node_service_server { let method = RLockSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5285,23 +3721,12 @@ pub mod node_service_server { "/node_service.NodeService/RUnLock" => { #[allow(non_camel_case_types)] struct RUnLockSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for RUnLockSvc { + impl tonic::server::UnaryService for RUnLockSvc { type Response = super::GenerallyLockResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::r_un_lock(&inner, request).await - }; + let fut = async move { ::r_un_lock(&inner, request).await }; Box::pin(fut) } } @@ -5314,14 +3739,8 @@ pub mod node_service_server { let method = RUnLockSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5330,23 +3749,12 @@ pub mod node_service_server { "/node_service.NodeService/ForceUnLock" => { #[allow(non_camel_case_types)] struct ForceUnLockSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ForceUnLockSvc { + impl tonic::server::UnaryService for ForceUnLockSvc { type Response = super::GenerallyLockResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::force_un_lock(&inner, request).await - }; + let fut = async move { ::force_un_lock(&inner, request).await }; Box::pin(fut) } } @@ -5359,14 +3767,8 @@ pub mod node_service_server { let method = ForceUnLockSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5375,23 +3777,12 @@ pub mod node_service_server { "/node_service.NodeService/Refresh" => { #[allow(non_camel_case_types)] struct RefreshSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for RefreshSvc { + impl tonic::server::UnaryService for RefreshSvc { type Response = super::GenerallyLockResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::refresh(&inner, request).await - }; + let fut = async move { ::refresh(&inner, request).await }; Box::pin(fut) } } @@ -5404,14 +3795,8 @@ pub mod node_service_server { let method = RefreshSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5420,24 +3805,12 @@ pub mod node_service_server { "/node_service.NodeService/LocalStorageInfo" => { #[allow(non_camel_case_types)] struct LocalStorageInfoSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LocalStorageInfoSvc { + impl tonic::server::UnaryService for LocalStorageInfoSvc { type Response = super::LocalStorageInfoResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::local_storage_info(&inner, request) - .await - }; + let fut = async move { ::local_storage_info(&inner, request).await }; Box::pin(fut) } } @@ -5450,14 +3823,8 @@ pub mod node_service_server { let method = LocalStorageInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5466,23 +3833,12 @@ pub mod node_service_server { "/node_service.NodeService/ServerInfo" => { #[allow(non_camel_case_types)] struct ServerInfoSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ServerInfoSvc { + impl tonic::server::UnaryService for ServerInfoSvc { type Response = super::ServerInfoResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::server_info(&inner, request).await - }; + let fut = async move { ::server_info(&inner, request).await }; Box::pin(fut) } } @@ -5495,14 +3851,8 @@ pub mod node_service_server { let method = ServerInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5511,23 +3861,12 @@ pub mod node_service_server { "/node_service.NodeService/GetCpus" => { #[allow(non_camel_case_types)] struct GetCpusSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetCpusSvc { + impl tonic::server::UnaryService for GetCpusSvc { type Response = super::GetCpusResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_cpus(&inner, request).await - }; + let fut = async move { ::get_cpus(&inner, request).await }; Box::pin(fut) } } @@ -5540,14 +3879,8 @@ pub mod node_service_server { let method = GetCpusSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5556,23 +3889,12 @@ pub mod node_service_server { "/node_service.NodeService/GetNetInfo" => { #[allow(non_camel_case_types)] struct GetNetInfoSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetNetInfoSvc { + impl tonic::server::UnaryService for GetNetInfoSvc { type Response = super::GetNetInfoResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_net_info(&inner, request).await - }; + let fut = async move { ::get_net_info(&inner, request).await }; Box::pin(fut) } } @@ -5585,14 +3907,8 @@ pub mod node_service_server { let method = GetNetInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5601,23 +3917,12 @@ pub mod node_service_server { "/node_service.NodeService/GetPartitions" => { #[allow(non_camel_case_types)] struct GetPartitionsSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetPartitionsSvc { + impl tonic::server::UnaryService for GetPartitionsSvc { type Response = super::GetPartitionsResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_partitions(&inner, request).await - }; + let fut = async move { ::get_partitions(&inner, request).await }; Box::pin(fut) } } @@ -5630,14 +3935,8 @@ pub mod node_service_server { let method = GetPartitionsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5646,23 +3945,12 @@ pub mod node_service_server { "/node_service.NodeService/GetOsInfo" => { #[allow(non_camel_case_types)] struct GetOsInfoSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetOsInfoSvc { + impl tonic::server::UnaryService for GetOsInfoSvc { type Response = super::GetOsInfoResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_os_info(&inner, request).await - }; + let fut = async move { ::get_os_info(&inner, request).await }; Box::pin(fut) } } @@ -5675,14 +3963,8 @@ pub mod node_service_server { let method = GetOsInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5691,23 +3973,12 @@ pub mod node_service_server { "/node_service.NodeService/GetSELinuxInfo" => { #[allow(non_camel_case_types)] struct GetSELinuxInfoSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetSELinuxInfoSvc { + impl tonic::server::UnaryService for GetSELinuxInfoSvc { type Response = super::GetSeLinuxInfoResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_se_linux_info(&inner, request).await - }; + let fut = async move { ::get_se_linux_info(&inner, request).await }; Box::pin(fut) } } @@ -5720,14 +3991,8 @@ pub mod node_service_server { let method = GetSELinuxInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5736,23 +4001,12 @@ pub mod node_service_server { "/node_service.NodeService/GetSysConfig" => { #[allow(non_camel_case_types)] struct GetSysConfigSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetSysConfigSvc { + impl tonic::server::UnaryService for GetSysConfigSvc { type Response = super::GetSysConfigResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_sys_config(&inner, request).await - }; + let fut = async move { ::get_sys_config(&inner, request).await }; Box::pin(fut) } } @@ -5765,14 +4019,8 @@ pub mod node_service_server { let method = GetSysConfigSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5781,23 +4029,12 @@ pub mod node_service_server { "/node_service.NodeService/GetSysErrors" => { #[allow(non_camel_case_types)] struct GetSysErrorsSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetSysErrorsSvc { + impl tonic::server::UnaryService for GetSysErrorsSvc { type Response = super::GetSysErrorsResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_sys_errors(&inner, request).await - }; + let fut = async move { ::get_sys_errors(&inner, request).await }; Box::pin(fut) } } @@ -5810,14 +4047,8 @@ pub mod node_service_server { let method = GetSysErrorsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5826,23 +4057,12 @@ pub mod node_service_server { "/node_service.NodeService/GetMemInfo" => { #[allow(non_camel_case_types)] struct GetMemInfoSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetMemInfoSvc { + impl tonic::server::UnaryService for GetMemInfoSvc { type Response = super::GetMemInfoResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_mem_info(&inner, request).await - }; + let fut = async move { ::get_mem_info(&inner, request).await }; Box::pin(fut) } } @@ -5855,14 +4075,8 @@ pub mod node_service_server { let method = GetMemInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5871,23 +4085,12 @@ pub mod node_service_server { "/node_service.NodeService/GetMetrics" => { #[allow(non_camel_case_types)] struct GetMetricsSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetMetricsSvc { + impl tonic::server::UnaryService for GetMetricsSvc { type Response = super::GetMetricsResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_metrics(&inner, request).await - }; + let fut = async move { ::get_metrics(&inner, request).await }; Box::pin(fut) } } @@ -5900,14 +4103,8 @@ pub mod node_service_server { let method = GetMetricsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5916,23 +4113,12 @@ pub mod node_service_server { "/node_service.NodeService/GetProcInfo" => { #[allow(non_camel_case_types)] struct GetProcInfoSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetProcInfoSvc { + impl tonic::server::UnaryService for GetProcInfoSvc { type Response = super::GetProcInfoResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_proc_info(&inner, request).await - }; + let fut = async move { ::get_proc_info(&inner, request).await }; Box::pin(fut) } } @@ -5945,14 +4131,8 @@ pub mod node_service_server { let method = GetProcInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -5961,23 +4141,12 @@ pub mod node_service_server { "/node_service.NodeService/StartProfiling" => { #[allow(non_camel_case_types)] struct StartProfilingSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for StartProfilingSvc { + impl tonic::server::UnaryService for StartProfilingSvc { type Response = super::StartProfilingResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::start_profiling(&inner, request).await - }; + let fut = async move { ::start_profiling(&inner, request).await }; Box::pin(fut) } } @@ -5990,14 +4159,8 @@ pub mod node_service_server { let method = StartProfilingSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6006,24 +4169,12 @@ pub mod node_service_server { "/node_service.NodeService/DownloadProfileData" => { #[allow(non_camel_case_types)] struct DownloadProfileDataSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DownloadProfileDataSvc { + impl tonic::server::UnaryService for DownloadProfileDataSvc { type Response = super::DownloadProfileDataResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::download_profile_data(&inner, request) - .await - }; + let fut = async move { ::download_profile_data(&inner, request).await }; Box::pin(fut) } } @@ -6036,14 +4187,8 @@ pub mod node_service_server { let method = DownloadProfileDataSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6052,23 +4197,12 @@ pub mod node_service_server { "/node_service.NodeService/GetBucketStats" => { #[allow(non_camel_case_types)] struct GetBucketStatsSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetBucketStatsSvc { + impl tonic::server::UnaryService for GetBucketStatsSvc { type Response = super::GetBucketStatsDataResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_bucket_stats(&inner, request).await - }; + let fut = async move { ::get_bucket_stats(&inner, request).await }; Box::pin(fut) } } @@ -6081,14 +4215,8 @@ pub mod node_service_server { let method = GetBucketStatsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6097,23 +4225,12 @@ pub mod node_service_server { "/node_service.NodeService/GetSRMetrics" => { #[allow(non_camel_case_types)] struct GetSRMetricsSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetSRMetricsSvc { + impl tonic::server::UnaryService for GetSRMetricsSvc { type Response = super::GetSrMetricsDataResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_sr_metrics(&inner, request).await - }; + let fut = async move { ::get_sr_metrics(&inner, request).await }; Box::pin(fut) } } @@ -6126,14 +4243,8 @@ pub mod node_service_server { let method = GetSRMetricsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6142,24 +4253,12 @@ pub mod node_service_server { "/node_service.NodeService/GetAllBucketStats" => { #[allow(non_camel_case_types)] struct GetAllBucketStatsSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetAllBucketStatsSvc { + impl tonic::server::UnaryService for GetAllBucketStatsSvc { type Response = super::GetAllBucketStatsResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_all_bucket_stats(&inner, request) - .await - }; + let fut = async move { ::get_all_bucket_stats(&inner, request).await }; Box::pin(fut) } } @@ -6172,14 +4271,8 @@ pub mod node_service_server { let method = GetAllBucketStatsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6188,24 +4281,12 @@ pub mod node_service_server { "/node_service.NodeService/LoadBucketMetadata" => { #[allow(non_camel_case_types)] struct LoadBucketMetadataSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LoadBucketMetadataSvc { + impl tonic::server::UnaryService for LoadBucketMetadataSvc { type Response = super::LoadBucketMetadataResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::load_bucket_metadata(&inner, request) - .await - }; + let fut = async move { ::load_bucket_metadata(&inner, request).await }; Box::pin(fut) } } @@ -6218,14 +4299,8 @@ pub mod node_service_server { let method = LoadBucketMetadataSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6234,24 +4309,12 @@ pub mod node_service_server { "/node_service.NodeService/DeleteBucketMetadata" => { #[allow(non_camel_case_types)] struct DeleteBucketMetadataSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeleteBucketMetadataSvc { + impl tonic::server::UnaryService for DeleteBucketMetadataSvc { type Response = super::DeleteBucketMetadataResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_bucket_metadata(&inner, request) - .await - }; + let fut = async move { ::delete_bucket_metadata(&inner, request).await }; Box::pin(fut) } } @@ -6264,14 +4327,8 @@ pub mod node_service_server { let method = DeleteBucketMetadataSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6280,23 +4337,12 @@ pub mod node_service_server { "/node_service.NodeService/DeletePolicy" => { #[allow(non_camel_case_types)] struct DeletePolicySvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeletePolicySvc { + impl tonic::server::UnaryService for DeletePolicySvc { type Response = super::DeletePolicyResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_policy(&inner, request).await - }; + let fut = async move { ::delete_policy(&inner, request).await }; Box::pin(fut) } } @@ -6309,14 +4355,8 @@ pub mod node_service_server { let method = DeletePolicySvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6325,23 +4365,12 @@ pub mod node_service_server { "/node_service.NodeService/LoadPolicy" => { #[allow(non_camel_case_types)] struct LoadPolicySvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LoadPolicySvc { + impl tonic::server::UnaryService for LoadPolicySvc { type Response = super::LoadPolicyResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::load_policy(&inner, request).await - }; + let fut = async move { ::load_policy(&inner, request).await }; Box::pin(fut) } } @@ -6354,14 +4383,8 @@ pub mod node_service_server { let method = LoadPolicySvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6370,24 +4393,12 @@ pub mod node_service_server { "/node_service.NodeService/LoadPolicyMapping" => { #[allow(non_camel_case_types)] struct LoadPolicyMappingSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LoadPolicyMappingSvc { + impl tonic::server::UnaryService for LoadPolicyMappingSvc { type Response = super::LoadPolicyMappingResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::load_policy_mapping(&inner, request) - .await - }; + let fut = async move { ::load_policy_mapping(&inner, request).await }; Box::pin(fut) } } @@ -6400,14 +4411,8 @@ pub mod node_service_server { let method = LoadPolicyMappingSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6416,23 +4421,12 @@ pub mod node_service_server { "/node_service.NodeService/DeleteUser" => { #[allow(non_camel_case_types)] struct DeleteUserSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeleteUserSvc { + impl tonic::server::UnaryService for DeleteUserSvc { type Response = super::DeleteUserResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_user(&inner, request).await - }; + let fut = async move { ::delete_user(&inner, request).await }; Box::pin(fut) } } @@ -6445,14 +4439,8 @@ pub mod node_service_server { let method = DeleteUserSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6461,24 +4449,12 @@ pub mod node_service_server { "/node_service.NodeService/DeleteServiceAccount" => { #[allow(non_camel_case_types)] struct DeleteServiceAccountSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for DeleteServiceAccountSvc { + impl tonic::server::UnaryService for DeleteServiceAccountSvc { type Response = super::DeleteServiceAccountResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_service_account(&inner, request) - .await - }; + let fut = async move { ::delete_service_account(&inner, request).await }; Box::pin(fut) } } @@ -6491,14 +4467,8 @@ pub mod node_service_server { let method = DeleteServiceAccountSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6507,23 +4477,12 @@ pub mod node_service_server { "/node_service.NodeService/LoadUser" => { #[allow(non_camel_case_types)] struct LoadUserSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LoadUserSvc { + impl tonic::server::UnaryService for LoadUserSvc { type Response = super::LoadUserResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::load_user(&inner, request).await - }; + let fut = async move { ::load_user(&inner, request).await }; Box::pin(fut) } } @@ -6536,14 +4495,8 @@ pub mod node_service_server { let method = LoadUserSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6552,24 +4505,12 @@ pub mod node_service_server { "/node_service.NodeService/LoadServiceAccount" => { #[allow(non_camel_case_types)] struct LoadServiceAccountSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LoadServiceAccountSvc { + impl tonic::server::UnaryService for LoadServiceAccountSvc { type Response = super::LoadServiceAccountResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::load_service_account(&inner, request) - .await - }; + let fut = async move { ::load_service_account(&inner, request).await }; Box::pin(fut) } } @@ -6582,14 +4523,8 @@ pub mod node_service_server { let method = LoadServiceAccountSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6598,23 +4533,12 @@ pub mod node_service_server { "/node_service.NodeService/LoadGroup" => { #[allow(non_camel_case_types)] struct LoadGroupSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LoadGroupSvc { + impl tonic::server::UnaryService for LoadGroupSvc { type Response = super::LoadGroupResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::load_group(&inner, request).await - }; + let fut = async move { ::load_group(&inner, request).await }; Box::pin(fut) } } @@ -6627,14 +4551,8 @@ pub mod node_service_server { let method = LoadGroupSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6643,30 +4561,14 @@ pub mod node_service_server { "/node_service.NodeService/ReloadSiteReplicationConfig" => { #[allow(non_camel_case_types)] struct ReloadSiteReplicationConfigSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService< - super::ReloadSiteReplicationConfigRequest, - > for ReloadSiteReplicationConfigSvc { + impl tonic::server::UnaryService + for ReloadSiteReplicationConfigSvc + { type Response = super::ReloadSiteReplicationConfigResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request< - super::ReloadSiteReplicationConfigRequest, - >, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::reload_site_replication_config( - &inner, - request, - ) - .await - }; + let fut = async move { ::reload_site_replication_config(&inner, request).await }; Box::pin(fut) } } @@ -6679,14 +4581,8 @@ pub mod node_service_server { let method = ReloadSiteReplicationConfigSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6695,23 +4591,12 @@ pub mod node_service_server { "/node_service.NodeService/SignalService" => { #[allow(non_camel_case_types)] struct SignalServiceSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for SignalServiceSvc { + impl tonic::server::UnaryService for SignalServiceSvc { type Response = super::SignalServiceResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::signal_service(&inner, request).await - }; + let fut = async move { ::signal_service(&inner, request).await }; Box::pin(fut) } } @@ -6724,14 +4609,8 @@ pub mod node_service_server { let method = SignalServiceSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6740,24 +4619,12 @@ pub mod node_service_server { "/node_service.NodeService/BackgroundHealStatus" => { #[allow(non_camel_case_types)] struct BackgroundHealStatusSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for BackgroundHealStatusSvc { + impl tonic::server::UnaryService for BackgroundHealStatusSvc { type Response = super::BackgroundHealStatusResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::background_heal_status(&inner, request) - .await - }; + let fut = async move { ::background_heal_status(&inner, request).await }; Box::pin(fut) } } @@ -6770,14 +4637,8 @@ pub mod node_service_server { let method = BackgroundHealStatusSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6786,24 +4647,12 @@ pub mod node_service_server { "/node_service.NodeService/GetMetacacheListing" => { #[allow(non_camel_case_types)] struct GetMetacacheListingSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for GetMetacacheListingSvc { + impl tonic::server::UnaryService for GetMetacacheListingSvc { type Response = super::GetMetacacheListingResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_metacache_listing(&inner, request) - .await - }; + let fut = async move { ::get_metacache_listing(&inner, request).await }; Box::pin(fut) } } @@ -6816,14 +4665,8 @@ pub mod node_service_server { let method = GetMetacacheListingSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6832,27 +4675,12 @@ pub mod node_service_server { "/node_service.NodeService/UpdateMetacacheListing" => { #[allow(non_camel_case_types)] struct UpdateMetacacheListingSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for UpdateMetacacheListingSvc { + impl tonic::server::UnaryService for UpdateMetacacheListingSvc { type Response = super::UpdateMetacacheListingResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::update_metacache_listing( - &inner, - request, - ) - .await - }; + let fut = async move { ::update_metacache_listing(&inner, request).await }; Box::pin(fut) } } @@ -6865,14 +4693,8 @@ pub mod node_service_server { let method = UpdateMetacacheListingSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6881,23 +4703,12 @@ pub mod node_service_server { "/node_service.NodeService/ReloadPoolMeta" => { #[allow(non_camel_case_types)] struct ReloadPoolMetaSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for ReloadPoolMetaSvc { + impl tonic::server::UnaryService for ReloadPoolMetaSvc { type Response = super::ReloadPoolMetaResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::reload_pool_meta(&inner, request).await - }; + let fut = async move { ::reload_pool_meta(&inner, request).await }; Box::pin(fut) } } @@ -6910,14 +4721,8 @@ pub mod node_service_server { let method = ReloadPoolMetaSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6926,23 +4731,12 @@ pub mod node_service_server { "/node_service.NodeService/StopRebalance" => { #[allow(non_camel_case_types)] struct StopRebalanceSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for StopRebalanceSvc { + impl tonic::server::UnaryService for StopRebalanceSvc { type Response = super::StopRebalanceResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::stop_rebalance(&inner, request).await - }; + let fut = async move { ::stop_rebalance(&inner, request).await }; Box::pin(fut) } } @@ -6955,14 +4749,8 @@ pub mod node_service_server { let method = StopRebalanceSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -6971,24 +4759,12 @@ pub mod node_service_server { "/node_service.NodeService/LoadRebalanceMeta" => { #[allow(non_camel_case_types)] struct LoadRebalanceMetaSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LoadRebalanceMetaSvc { + impl tonic::server::UnaryService for LoadRebalanceMetaSvc { type Response = super::LoadRebalanceMetaResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::load_rebalance_meta(&inner, request) - .await - }; + let fut = async move { ::load_rebalance_meta(&inner, request).await }; Box::pin(fut) } } @@ -7001,14 +4777,8 @@ pub mod node_service_server { let method = LoadRebalanceMetaSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; @@ -7017,29 +4787,12 @@ pub mod node_service_server { "/node_service.NodeService/LoadTransitionTierConfig" => { #[allow(non_camel_case_types)] struct LoadTransitionTierConfigSvc(pub Arc); - impl< - T: NodeService, - > tonic::server::UnaryService - for LoadTransitionTierConfigSvc { + impl tonic::server::UnaryService for LoadTransitionTierConfigSvc { type Response = super::LoadTransitionTierConfigResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request< - super::LoadTransitionTierConfigRequest, - >, - ) -> Self::Future { + type Future = BoxFuture, tonic::Status>; + fn call(&mut self, request: tonic::Request) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::load_transition_tier_config( - &inner, - request, - ) - .await - }; + let fut = async move { ::load_transition_tier_config(&inner, request).await }; Box::pin(fut) } } @@ -7052,36 +4805,20 @@ pub mod node_service_server { let method = LoadTransitionTierConfigSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } - _ => { - Box::pin(async move { - let mut response = http::Response::new(empty_body()); - let headers = response.headers_mut(); - headers - .insert( - tonic::Status::GRPC_STATUS, - (tonic::Code::Unimplemented as i32).into(), - ); - headers - .insert( - http::header::CONTENT_TYPE, - tonic::metadata::GRPC_CONTENT_TYPE, - ); - Ok(response) - }) - } + _ => Box::pin(async move { + let mut response = http::Response::new(empty_body()); + let headers = response.headers_mut(); + headers.insert(tonic::Status::GRPC_STATUS, (tonic::Code::Unimplemented as i32).into()); + headers.insert(http::header::CONTENT_TYPE, tonic::metadata::GRPC_CONTENT_TYPE); + Ok(response) + }), } } } diff --git a/common/protos/src/node.proto b/common/protos/src/node.proto index a921bd4a3..0fc1feb21 100644 --- a/common/protos/src/node.proto +++ b/common/protos/src/node.proto @@ -2,6 +2,11 @@ syntax = "proto3"; package node_service; /* -------------------------------------------------------------------- */ +message Error { + uint32 code = 1; + string error_info = 2; +} + message PingRequest { uint64 version = 1; bytes body = 2; @@ -19,7 +24,7 @@ message HealBucketRequest { message HealBucketResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message ListBucketRequest { @@ -29,7 +34,7 @@ message ListBucketRequest { message ListBucketResponse { bool success = 1; repeated string bucket_infos = 2; - optional string error_info = 3; + optional Error error = 3; } message MakeBucketRequest { @@ -39,7 +44,7 @@ message MakeBucketRequest { message MakeBucketResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message GetBucketInfoRequest { @@ -50,7 +55,7 @@ message GetBucketInfoRequest { message GetBucketInfoResponse { bool success = 1; string bucket_info = 2; - optional string error_info = 3; + optional Error error = 3; } message DeleteBucketRequest { @@ -59,7 +64,7 @@ message DeleteBucketRequest { message DeleteBucketResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message ReadAllRequest { @@ -71,7 +76,7 @@ message ReadAllRequest { message ReadAllResponse { bool success = 1; bytes data = 2; - optional string error_info = 3; + optional Error error = 3; } message WriteAllRequest { @@ -83,7 +88,7 @@ message WriteAllRequest { message WriteAllResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message DeleteRequest { @@ -95,7 +100,7 @@ message DeleteRequest { message DeleteResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message VerifyFileRequest { @@ -108,7 +113,7 @@ message VerifyFileRequest { message VerifyFileResponse { bool success = 1; string check_parts_resp = 2; - optional string error_info = 3; + optional Error error = 3; } message CheckPartsRequest { @@ -121,7 +126,7 @@ message CheckPartsRequest { message CheckPartsResponse { bool success = 1; string check_parts_resp = 2; - optional string error_info = 3; + optional Error error = 3; } message RenamePartRequst { @@ -135,7 +140,7 @@ message RenamePartRequst { message RenamePartResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message RenameFileRequst { @@ -148,7 +153,7 @@ message RenameFileRequst { message RenameFileResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message WriteRequest { @@ -161,7 +166,7 @@ message WriteRequest { message WriteResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } // message AppendRequest { @@ -173,7 +178,7 @@ message WriteResponse { // // message AppendResponse { // bool success = 1; -// optional string error_info = 2; +// optional Error error = 2; // } message ReadAtRequest { @@ -188,7 +193,7 @@ message ReadAtResponse { bool success = 1; bytes data = 2; int64 read_size = 3; - optional string error_info = 4; + optional Error error = 4; } message ListDirRequest { @@ -199,7 +204,7 @@ message ListDirRequest { message ListDirResponse { bool success = 1; repeated string volumes = 2; - optional string error_info = 3; + optional Error error = 3; } message WalkDirRequest { @@ -225,7 +230,7 @@ message RenameDataRequest { message RenameDataResponse { bool success = 1; string rename_data_resp = 2; - optional string error_info = 3; + optional Error error = 3; } message MakeVolumesRequest { @@ -235,7 +240,7 @@ message MakeVolumesRequest { message MakeVolumesResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message MakeVolumeRequest { @@ -245,7 +250,7 @@ message MakeVolumeRequest { message MakeVolumeResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message ListVolumesRequest { @@ -255,7 +260,7 @@ message ListVolumesRequest { message ListVolumesResponse { bool success = 1; repeated string volume_infos = 2; - optional string error_info = 3; + optional Error error = 3; } message StatVolumeRequest { @@ -266,7 +271,7 @@ message StatVolumeRequest { message StatVolumeResponse { bool success = 1; string volume_info = 2; - optional string error_info = 3; + optional Error error = 3; } message DeletePathsRequest { @@ -277,7 +282,7 @@ message DeletePathsRequest { message DeletePathsResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message UpdateMetadataRequest { @@ -290,7 +295,7 @@ message UpdateMetadataRequest { message UpdateMetadataResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message WriteMetadataRequest { @@ -302,7 +307,7 @@ message WriteMetadataRequest { message WriteMetadataResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message ReadVersionRequest { @@ -316,7 +321,7 @@ message ReadVersionRequest { message ReadVersionResponse { bool success = 1; string file_info = 2; - optional string error_info = 3; + optional Error error = 3; } message ReadXLRequest { @@ -329,7 +334,7 @@ message ReadXLRequest { message ReadXLResponse { bool success = 1; string raw_file_info = 2; - optional string error_info = 3; + optional Error error = 3; } message DeleteVersionRequest { @@ -344,7 +349,7 @@ message DeleteVersionRequest { message DeleteVersionResponse { bool success = 1; string raw_file_info = 2; - optional string error_info = 3; + optional Error error = 3; } message DeleteVersionsRequest { @@ -357,7 +362,7 @@ message DeleteVersionsRequest { message DeleteVersionsResponse { bool success = 1; repeated string errors = 2; - optional string error_info = 3; + optional Error error = 3; } message ReadMultipleRequest { @@ -368,7 +373,7 @@ message ReadMultipleRequest { message ReadMultipleResponse { bool success = 1; repeated string read_multiple_resps = 2; - optional string error_info = 3; + optional Error error = 3; } message DeleteVolumeRequest { @@ -378,7 +383,7 @@ message DeleteVolumeRequest { message DeleteVolumeResponse { bool success = 1; - optional string error_info = 2; + optional Error error = 2; } message DiskInfoRequest { @@ -389,7 +394,7 @@ message DiskInfoRequest { message DiskInfoResponse { bool success = 1; string disk_info = 2; - optional string error_info = 3; + optional Error error = 3; } message NsScannerRequest { @@ -402,7 +407,7 @@ message NsScannerResponse { bool success = 1; string update = 2; string data_usage_cache = 3; - optional string error_info = 4; + optional Error error = 4; } // lock api have same argument type diff --git a/e2e_test/src/reliant/node_interact_test.rs b/e2e_test/src/reliant/node_interact_test.rs index fb96b0b5b..5bd66ce36 100644 --- a/e2e_test/src/reliant/node_interact_test.rs +++ b/e2e_test/src/reliant/node_interact_test.rs @@ -73,7 +73,7 @@ async fn make_volume() -> Result<(), Box> { if response.success { println!("success"); } else { - println!("failed: {:?}", response.error_info); + println!("failed: {:?}", response.error); } Ok(()) } diff --git a/ecstore/Cargo.toml b/ecstore/Cargo.toml index cb06b6858..e2023b2e7 100644 --- a/ecstore/Cargo.toml +++ b/ecstore/Cargo.toml @@ -69,14 +69,11 @@ workers.workspace = true [target.'cfg(not(windows))'.dependencies] -openssl = "0.10.68" nix = { version = "0.29.0", features = ["fs"] } [target.'cfg(windows)'.dependencies] - winapi = "0.3.9" -openssl = "0.10.66" [dev-dependencies] diff --git a/ecstore/src/bucket/error.rs b/ecstore/src/bucket/error.rs index f073637ae..a6aa8232e 100644 --- a/ecstore/src/bucket/error.rs +++ b/ecstore/src/bucket/error.rs @@ -29,3 +29,32 @@ impl BucketMetadataError { } } } + +impl BucketMetadataError { + pub fn to_u32(&self) -> u32 { + match self { + BucketMetadataError::TaggingNotFound => 0x01, + BucketMetadataError::BucketPolicyNotFound => 0x02, + BucketMetadataError::BucketObjectLockConfigNotFound => 0x03, + BucketMetadataError::BucketLifecycleNotFound => 0x04, + BucketMetadataError::BucketSSEConfigNotFound => 0x05, + BucketMetadataError::BucketQuotaConfigNotFound => 0x06, + BucketMetadataError::BucketReplicationConfigNotFound => 0x07, + BucketMetadataError::BucketRemoteTargetNotFound => 0x08, + } + } + + pub fn from_u32(error: u32) -> Option { + match error { + 0x01 => Some(BucketMetadataError::TaggingNotFound), + 0x02 => Some(BucketMetadataError::BucketPolicyNotFound), + 0x03 => Some(BucketMetadataError::BucketObjectLockConfigNotFound), + 0x04 => Some(BucketMetadataError::BucketLifecycleNotFound), + 0x05 => Some(BucketMetadataError::BucketSSEConfigNotFound), + 0x06 => Some(BucketMetadataError::BucketQuotaConfigNotFound), + 0x07 => Some(BucketMetadataError::BucketReplicationConfigNotFound), + 0x08 => Some(BucketMetadataError::BucketRemoteTargetNotFound), + _ => None, + } + } +} diff --git a/ecstore/src/cache_value/metacache_set.rs b/ecstore/src/cache_value/metacache_set.rs index 5e1ff84d6..ad35d8126 100644 --- a/ecstore/src/cache_value/metacache_set.rs +++ b/ecstore/src/cache_value/metacache_set.rs @@ -1,20 +1,18 @@ -use std::{future::Future, pin::Pin, sync::Arc}; - +use crate::{ + disk::error::{is_err_eof, is_err_file_not_found, is_err_volume_not_found, DiskError}, + metacache::writer::MetacacheReader, +}; +use crate::{ + disk::{DiskAPI, DiskStore, MetaCacheEntries, MetaCacheEntry, WalkDirOptions}, + error::{Error, Result}, +}; use futures::future::join_all; +use std::{future::Future, pin::Pin, sync::Arc}; use tokio::{ spawn, sync::{broadcast::Receiver as B_Receiver, RwLock}, }; -use tracing::error; - -use crate::{ - disk::{ - error::{is_err_eof, is_err_file_not_found, is_err_volume_not_found, DiskError}, - DiskAPI, DiskStore, MetaCacheEntries, MetaCacheEntry, WalkDirOptions, - }, - error::{Error, Result}, - metacache::writer::MetacacheReader, -}; +use tracing::{error, info}; type AgreedFn = Box Pin + Send>> + Send + 'static>; type PartialFn = Box]) -> Pin + Send>> + Send + 'static>; @@ -60,12 +58,14 @@ impl Clone for ListPathRawOptions { pub async fn list_path_raw(mut rx: B_Receiver, opts: ListPathRawOptions) -> Result<()> { if opts.disks.is_empty() { + info!("list_path_raw 0 drives provided"); return Err(Error::from_string("list_path_raw: 0 drives provided")); } let mut jobs: Vec>> = Vec::new(); let mut readers = Vec::with_capacity(opts.disks.len()); let fds = Arc::new(RwLock::new(opts.fallback_disks.clone())); + for disk in opts.disks.iter() { let opdisk = disk.clone(); let opts_clone = opts.clone(); diff --git a/ecstore/src/config/error.rs b/ecstore/src/config/error.rs index 80038c9da..30efb20ef 100644 --- a/ecstore/src/config/error.rs +++ b/ecstore/src/config/error.rs @@ -1,6 +1,6 @@ use crate::{disk, error::Error, store_err::is_err_object_not_found}; -#[derive(Debug, thiserror::Error)] +#[derive(Debug, PartialEq, thiserror::Error)] pub enum ConfigError { #[error("config not found")] NotFound, @@ -15,6 +15,22 @@ impl ConfigError { matches!(self, Self::NotFound) } } + +impl ConfigError { + pub fn to_u32(&self) -> u32 { + match self { + ConfigError::NotFound => 0x01, + } + } + + pub fn from_u32(error: u32) -> Option { + match error { + 0x01 => Some(Self::NotFound), + _ => None, + } + } +} + pub fn is_not_found(err: &Error) -> bool { if let Some(e) = err.downcast_ref::() { ConfigError::is_not_found(e) diff --git a/ecstore/src/disk/error.rs b/ecstore/src/disk/error.rs index d6c9372ab..5a61de764 100644 --- a/ecstore/src/disk/error.rs +++ b/ecstore/src/disk/error.rs @@ -2,6 +2,7 @@ use std::io::{self, ErrorKind}; use tracing::error; +use crate::utils::ERROR_TYPE_MASK; use crate::{ error::{Error, Result}, quorum::CheckErrorFn, @@ -167,6 +168,87 @@ impl DiskError { } } +impl DiskError { + pub fn to_u32(&self) -> u32 { + match self { + DiskError::MaxVersionsExceeded => 0x01, + DiskError::Unexpected => 0x02, + DiskError::CorruptedFormat => 0x03, + DiskError::CorruptedBackend => 0x04, + DiskError::UnformattedDisk => 0x05, + DiskError::InconsistentDisk => 0x06, + DiskError::UnsupportedDisk => 0x07, + DiskError::DiskFull => 0x08, + DiskError::DiskNotDir => 0x09, + DiskError::DiskNotFound => 0x0A, + DiskError::DiskOngoingReq => 0x0B, + DiskError::DriveIsRoot => 0x0C, + DiskError::FaultyRemoteDisk => 0x0D, + DiskError::FaultyDisk => 0x0E, + DiskError::DiskAccessDenied => 0x0F, + DiskError::FileNotFound => 0x10, + DiskError::FileVersionNotFound => 0x11, + DiskError::TooManyOpenFiles => 0x12, + DiskError::FileNameTooLong => 0x13, + DiskError::VolumeExists => 0x14, + DiskError::IsNotRegular => 0x15, + DiskError::PathNotFound => 0x16, + DiskError::VolumeNotFound => 0x17, + DiskError::VolumeNotEmpty => 0x18, + DiskError::VolumeAccessDenied => 0x19, + DiskError::FileAccessDenied => 0x1A, + DiskError::FileCorrupt => 0x1B, + DiskError::BitrotHashAlgoInvalid => 0x1C, + DiskError::CrossDeviceLink => 0x1D, + DiskError::LessData => 0x1E, + DiskError::MoreData => 0x1F, + DiskError::OutdatedXLMeta => 0x20, + DiskError::PartMissingOrCorrupt => 0x21, + DiskError::NoHealRequired => 0x22, + } + } + + pub fn from_u32(error: u32) -> Option { + match error & ERROR_TYPE_MASK { + 0x01 => Some(DiskError::MaxVersionsExceeded), + 0x02 => Some(DiskError::Unexpected), + 0x03 => Some(DiskError::CorruptedFormat), + 0x04 => Some(DiskError::CorruptedBackend), + 0x05 => Some(DiskError::UnformattedDisk), + 0x06 => Some(DiskError::InconsistentDisk), + 0x07 => Some(DiskError::UnsupportedDisk), + 0x08 => Some(DiskError::DiskFull), + 0x09 => Some(DiskError::DiskNotDir), + 0x0A => Some(DiskError::DiskNotFound), + 0x0B => Some(DiskError::DiskOngoingReq), + 0x0C => Some(DiskError::DriveIsRoot), + 0x0D => Some(DiskError::FaultyRemoteDisk), + 0x0E => Some(DiskError::FaultyDisk), + 0x0F => Some(DiskError::DiskAccessDenied), + 0x10 => Some(DiskError::FileNotFound), + 0x11 => Some(DiskError::FileVersionNotFound), + 0x12 => Some(DiskError::TooManyOpenFiles), + 0x13 => Some(DiskError::FileNameTooLong), + 0x14 => Some(DiskError::VolumeExists), + 0x15 => Some(DiskError::IsNotRegular), + 0x16 => Some(DiskError::PathNotFound), + 0x17 => Some(DiskError::VolumeNotFound), + 0x18 => Some(DiskError::VolumeNotEmpty), + 0x19 => Some(DiskError::VolumeAccessDenied), + 0x1A => Some(DiskError::FileAccessDenied), + 0x1B => Some(DiskError::FileCorrupt), + 0x1C => Some(DiskError::BitrotHashAlgoInvalid), + 0x1D => Some(DiskError::CrossDeviceLink), + 0x1E => Some(DiskError::LessData), + 0x1F => Some(DiskError::MoreData), + 0x20 => Some(DiskError::OutdatedXLMeta), + 0x21 => Some(DiskError::PartMissingOrCorrupt), + 0x22 => Some(DiskError::NoHealRequired), + _ => None, + } + } +} + impl PartialEq for DiskError { fn eq(&self, other: &Self) -> bool { core::mem::discriminant(self) == core::mem::discriminant(other) diff --git a/ecstore/src/disk/local.rs b/ecstore/src/disk/local.rs index d4082592f..f4957e096 100644 --- a/ecstore/src/disk/local.rs +++ b/ecstore/src/disk/local.rs @@ -50,6 +50,7 @@ use path_absolutize::Absolutize; use std::collections::{HashMap, HashSet}; use std::fmt::Debug; use std::io::Cursor; +#[cfg(target_family = "unix")] use std::os::unix::fs::MetadataExt; use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; @@ -1030,7 +1031,7 @@ impl DiskAPI for LocalDisk { self.endpoint.host_port() } async fn is_online(&self) -> bool { - true + self.check_format_json().await.is_ok() } fn endpoint(&self) -> Endpoint { @@ -1231,7 +1232,7 @@ impl DiskAPI for LocalDisk { resp.results[i] = CHECK_PART_FILE_NOT_FOUND; continue; } - if (st.size() as usize) < fi.erasure.shard_file_size(part.size) { + if (st.len() as usize) < fi.erasure.shard_file_size(part.size) { resp.results[i] = CHECK_PART_FILE_CORRUPT; continue; } diff --git a/ecstore/src/disk/mod.rs b/ecstore/src/disk/mod.rs index dc6333b89..c36be0992 100644 --- a/ecstore/src/disk/mod.rs +++ b/ecstore/src/disk/mod.rs @@ -14,6 +14,7 @@ pub const FORMAT_CONFIG_FILE: &str = "format.json"; pub const STORAGE_FORMAT_FILE: &str = "xl.meta"; pub const STORAGE_FORMAT_FILE_BACKUP: &str = "xl.meta.bkp"; +use crate::utils::proto_err_to_err; use crate::{ bucket::{metadata_sys::get_versioning_config, versioning::VersioningApi}, erasure::Writer, @@ -1393,9 +1394,11 @@ impl Writer for RemoteFileWriter { if resp.success { info!("write stream success"); } else { - let error_info = resp.error_info.unwrap_or("".to_string()); - info!("write stream failed: {}", error_info); - return Err(Error::from_string(error_info)); + return if let Some(err) = &resp.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } } else { let error_info = "can not get response"; @@ -1571,9 +1574,11 @@ impl Reader for RemoteFileReader { Ok(resp.read_size.try_into().unwrap()) } else { - let error_info = resp.error_info.unwrap_or("".to_string()); - info!("read at stream failed: {}", error_info); - Err(Error::from_string(error_info)) + return if let Some(err) = &resp.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } } else { let error_info = "can not get response"; diff --git a/ecstore/src/disk/remote.rs b/ecstore/src/disk/remote.rs index 682408dd9..9b6597d65 100644 --- a/ecstore/src/disk/remote.rs +++ b/ecstore/src/disk/remote.rs @@ -26,6 +26,7 @@ use super::{ FileInfoVersions, FileReader, FileWriter, ReadMultipleReq, ReadMultipleResp, ReadOptions, RemoteFileReader, RemoteFileWriter, RenameDataResp, UpdateMetadataOpts, VolumeInfo, WalkDirOptions, }; +use crate::utils::proto_err_to_err; use crate::{ disk::error::DiskError, error::{Error, Result}, @@ -167,7 +168,11 @@ impl DiskAPI for RemoteDisk { let response = client.write_all(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -189,7 +194,11 @@ impl DiskAPI for RemoteDisk { let response = client.delete(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -211,7 +220,11 @@ impl DiskAPI for RemoteDisk { let response = client.verify_file(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let check_parts_resp = serde_json::from_str::(&response.check_parts_resp)?; @@ -235,7 +248,11 @@ impl DiskAPI for RemoteDisk { let response = client.check_parts(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let check_parts_resp = serde_json::from_str::(&response.check_parts_resp)?; @@ -260,7 +277,11 @@ impl DiskAPI for RemoteDisk { let response = client.rename_part(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -281,7 +302,11 @@ impl DiskAPI for RemoteDisk { let response = client.rename_file(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -347,7 +372,11 @@ impl DiskAPI for RemoteDisk { let response = client.list_dir(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(response.volumes) @@ -412,7 +441,11 @@ impl DiskAPI for RemoteDisk { let response = client.rename_data(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let rename_data_resp = serde_json::from_str::(&response.rename_data_resp)?; @@ -433,7 +466,11 @@ impl DiskAPI for RemoteDisk { let response = client.make_volumes(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -452,7 +489,11 @@ impl DiskAPI for RemoteDisk { let response = client.make_volume(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -470,7 +511,11 @@ impl DiskAPI for RemoteDisk { let response = client.list_volumes(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let infos = response @@ -495,7 +540,11 @@ impl DiskAPI for RemoteDisk { let response = client.stat_volume(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let volume_info = serde_json::from_str::(&response.volume_info)?; @@ -518,7 +567,11 @@ impl DiskAPI for RemoteDisk { let response = client.delete_paths(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -542,7 +595,11 @@ impl DiskAPI for RemoteDisk { let response = client.update_metadata(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -564,7 +621,11 @@ impl DiskAPI for RemoteDisk { let response = client.write_metadata(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -594,7 +655,11 @@ impl DiskAPI for RemoteDisk { let response = client.read_version(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let file_info = serde_json::from_str::(&response.file_info)?; @@ -617,7 +682,11 @@ impl DiskAPI for RemoteDisk { let response = client.read_xl(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let raw_file_info = serde_json::from_str::(&response.raw_file_info)?; @@ -651,7 +720,11 @@ impl DiskAPI for RemoteDisk { let response = client.delete_version(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } // let raw_file_info = serde_json::from_str::(&response.raw_file_info)?; @@ -682,10 +755,11 @@ impl DiskAPI for RemoteDisk { let response = client.delete_versions(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(format!( - "delete versions remote err: {}", - response.error_info.unwrap_or("None".to_string()) - ))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let errors = response .errors @@ -716,7 +790,11 @@ impl DiskAPI for RemoteDisk { let response = client.read_multiple(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let read_multiple_resps = response @@ -741,7 +819,11 @@ impl DiskAPI for RemoteDisk { let response = client.delete_volume(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -761,7 +843,11 @@ impl DiskAPI for RemoteDisk { let response = client.disk_info(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or("".to_string()))); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } let disk_info = serde_json::from_str::(&response.disk_info)?; diff --git a/ecstore/src/erasure.rs b/ecstore/src/erasure.rs index 02ca900bb..6ca7a25d9 100644 --- a/ecstore/src/erasure.rs +++ b/ecstore/src/erasure.rs @@ -212,9 +212,9 @@ impl Erasure { offset: usize, length: usize, total_length: usize, - ) -> Result { + ) -> (usize, Option) { if length == 0 { - return Ok(0); + return (0, None); } let mut reader = ShardReader::new(readers, self, offset, total_length); @@ -247,15 +247,24 @@ impl Erasure { // debug!("decode {} block_offset {},block_length {} ", block_idx, block_offset, block_length); - let mut bufs = reader.read().await?; + let mut bufs = match reader.read().await { + Ok(bufs) => bufs, + Err(err) => return (bytes_writed, Some(err)), + }; if self.parity_shards > 0 { - self.decode_data(&mut bufs)?; + if let Err(err) = self.decode_data(&mut bufs) { + return (bytes_writed, Some(err)); + } } - let writed_n = self + let writed_n = match self .write_data_blocks(writer, bufs, self.data_shards, block_offset, block_length) - .await?; + .await + { + Ok(n) => n, + Err(err) => return (bytes_writed, Some(err)), + }; bytes_writed += writed_n; @@ -264,10 +273,10 @@ impl Erasure { if bytes_writed != length { // debug!("bytes_writed != length: {} != {} ", bytes_writed, length); - return Err(Error::msg("erasure decode less data")); + return (bytes_writed, Some(Error::msg("erasure decode less data"))); } - Ok(bytes_writed) + (bytes_writed, None) } async fn write_data_blocks( diff --git a/ecstore/src/global.rs b/ecstore/src/global.rs index f5a817c4c..65012804e 100644 --- a/ecstore/src/global.rs +++ b/ecstore/src/global.rs @@ -6,6 +6,7 @@ use std::{ use tokio::sync::RwLock; use uuid::Uuid; +use crate::heal::mrf::MRFState; use crate::{ disk::DiskStore, endpoints::{EndpointServerPools, PoolEndpoints, SetupType}, @@ -34,6 +35,7 @@ lazy_static! { pub static ref GLOBAL_BackgroundHealRoutine: Arc = HealRoutine::new(); pub static ref GLOBAL_BackgroundHealState: Arc = AllHealState::new(false); pub static ref GLOBAL_ALlHealState: Arc = AllHealState::new(false); + pub static ref GLOBAL_MRFState: Arc = Arc::new(MRFState::new()); static ref globalDeploymentIDPtr: RwLock = RwLock::new(Uuid::nil()); } diff --git a/ecstore/src/heal/background_heal_ops.rs b/ecstore/src/heal/background_heal_ops.rs index 4e49d7f5c..7cd54ee34 100644 --- a/ecstore/src/heal/background_heal_ops.rs +++ b/ecstore/src/heal/background_heal_ops.rs @@ -1,6 +1,7 @@ use madmin::heal_commands::HealResultItem; use std::{cmp::Ordering, env, path::PathBuf, sync::Arc, time::Duration}; use tokio::{ + spawn, sync::{ mpsc::{self, Receiver, Sender}, RwLock, @@ -14,7 +15,10 @@ use super::{ heal_commands::HealOpts, heal_ops::{new_bg_heal_sequence, HealSequence}, }; +use crate::global::GLOBAL_MRFState; use crate::heal::error::ERR_RETRY_HEALING; +use crate::heal::heal_commands::{HealScanMode, HEAL_ITEM_BUCKET}; +use crate::heal::heal_ops::{HealSource, BG_HEALING_UUID}; use crate::{ config::RUSTFS_CONFIG_PREFIX, disk::{endpoint::Endpoint, error::DiskError, DiskAPI, DiskInfoOptions, BUCKET_META_PREFIX, RUSTFS_META_BUCKET}, @@ -36,24 +40,26 @@ pub static DEFAULT_MONITOR_NEW_DISK_INTERVAL: Duration = Duration::from_secs(10) pub async fn init_auto_heal() { init_background_healing().await; - if let Ok(v) = env::var("_RUSTFS_AUTO_DRIVE_HEALING") { - if v == "on" { - info!("start monitor local disks and heal"); - GLOBAL_BackgroundHealState - .push_heal_local_disks(&get_local_disks_to_heal().await) - .await; - tokio::spawn(async { - monitor_local_disks_and_heal().await; - }); - } + let v = env::var("_RUSTFS_AUTO_DRIVE_HEALING").unwrap_or("on".to_string()); + if v == "on" { + info!("start monitor local disks and heal"); + GLOBAL_BackgroundHealState + .push_heal_local_disks(&get_local_disks_to_heal().await) + .await; + spawn(async { + monitor_local_disks_and_heal().await; + }); } + spawn(async { + GLOBAL_MRFState.heal_routine().await; + }); } async fn init_background_healing() { let bg_seq = Arc::new(new_bg_heal_sequence()); for _ in 0..GLOBAL_BackgroundHealRoutine.workers { let bg_seq_clone = bg_seq.clone(); - tokio::spawn(async { + spawn(async { GLOBAL_BackgroundHealRoutine.add_worker(bg_seq_clone).await; }); } @@ -66,12 +72,14 @@ pub async fn get_local_disks_to_heal() -> Vec { if let Some(disk) = disk { if let Err(err) = disk.disk_info(&DiskInfoOptions::default()).await { if let Some(DiskError::UnformattedDisk) = err.downcast_ref() { + info!("get_local_disks_to_heal, disk is unformatted: {}", err); disks_to_heal.push(disk.endpoint()); } } let h = disk.healing().await; if let Some(h) = h { if !h.finished { + info!("get_local_disks_to_heal, disk healing not finished"); disks_to_heal.push(disk.endpoint()); } } @@ -92,13 +100,17 @@ async fn monitor_local_disks_and_heal() { interval.tick().await; let heal_disks = GLOBAL_BackgroundHealState.get_heal_local_disk_endpoints().await; if heal_disks.is_empty() { + info!("heal local disks is empty"); interval.reset(); continue; } + info!("heal local disks: {:?}", heal_disks); + let store = new_object_layer_fn().expect("errServerNotInitialized"); - if let (_, Some(err)) = store.heal_format(false).await.expect("heal format failed") { - if let Some(DiskError::NoHealRequired) = err.downcast_ref() { + if let (result, Some(err)) = store.heal_format(false).await.expect("heal format failed") { + error!("heal local disk format error: {}", err); + if let Some(DiskError::NoHealRequired) = err.downcast_ref::() { } else { info!("heal format err: {}", err.to_string()); interval.reset(); @@ -108,7 +120,7 @@ async fn monitor_local_disks_and_heal() { for disk in heal_disks.into_ref().iter() { let disk_clone = disk.clone(); - tokio::spawn(async move { + spawn(async move { GLOBAL_BackgroundHealState .set_disk_healing_status(disk_clone.clone(), true) .await; @@ -420,3 +432,30 @@ async fn heal_disk_format(opts: HealOpts) -> Result<(HealResultItem, Option Result<()> { + let (bg_seq, ok) = GLOBAL_BackgroundHealState.get_heal_sequence_by_token(BG_HEALING_UUID).await; + if ok { + // bg_seq must be Some when ok is true + return bg_seq + .unwrap() + .queue_heal_task( + HealSource { + bucket: bucket.to_string(), + ..Default::default() + }, + HEAL_ITEM_BUCKET.to_string(), + ) + .await; + } + Ok(()) +} + +pub(crate) async fn heal_object(bucket: &str, object: &str, version_id: &str, scan_mode: HealScanMode) -> Result<()> { + let (bg_seq, ok) = GLOBAL_BackgroundHealState.get_heal_sequence_by_token(BG_HEALING_UUID).await; + if ok { + // bg_seq must be Some when ok is true + return HealSequence::heal_object(bg_seq.unwrap(), bucket, object, version_id, scan_mode).await; + } + Ok(()) +} diff --git a/ecstore/src/heal/heal_commands.rs b/ecstore/src/heal/heal_commands.rs index 3aee3cd54..3ff5610ef 100644 --- a/ecstore/src/heal/heal_commands.rs +++ b/ecstore/src/heal/heal_commands.rs @@ -388,6 +388,7 @@ pub async fn load_healing_tracker(disk: &Option) -> Result) -> Result Result { let disk_location = disk.get_disk_location(); Ok(HealingTracker { - id: disk.get_disk_id().await?.map_or("".to_string(), |id| id.to_string()), + id: disk + .get_disk_id() + .await + .map_or("".to_string(), |id| id.map_or("".to_string(), |id| id.to_string())), heal_id: heal_id.to_string(), path: disk.to_string(), endpoint: disk.endpoint().to_string(), diff --git a/ecstore/src/heal/mod.rs b/ecstore/src/heal/mod.rs index f4a8e486c..47e000860 100644 --- a/ecstore/src/heal/mod.rs +++ b/ecstore/src/heal/mod.rs @@ -6,3 +6,4 @@ pub mod data_usage_cache; pub mod error; pub mod heal_commands; pub mod heal_ops; +pub mod mrf; diff --git a/ecstore/src/heal/mrf.rs b/ecstore/src/heal/mrf.rs new file mode 100644 index 000000000..c2375abfa --- /dev/null +++ b/ecstore/src/heal/mrf.rs @@ -0,0 +1,124 @@ +use crate::disk::{BUCKET_META_PREFIX, RUSTFS_META_BUCKET}; +use crate::heal::background_heal_ops::{heal_bucket, heal_object}; +use crate::heal::heal_commands::{HEAL_DEEP_SCAN, HEAL_NORMAL_SCAN}; +use crate::utils::path::SLASH_SEPARATOR; +use chrono::{DateTime, TimeDelta, Utc}; +use lazy_static::lazy_static; +use regex::Regex; +use std::ops::Sub; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::time::Duration; +use tokio::sync::mpsc::{Receiver, Sender}; +use tokio::sync::RwLock; +use tokio::time::sleep; +use tracing::error; +use uuid::Uuid; + +pub const MRF_OPS_QUEUE_SIZE: u64 = 100000; +pub const HEAL_DIR: &'static str = ".heal"; +pub const HEAL_MRFMETA_FORMAT: u64 = 1; +pub const HEAL_MRFMETA_VERSION_V1: u64 = 1; + +lazy_static! { + pub static ref HEAL_MRF_DIR: String = + format!("{}{}{}{}{}", BUCKET_META_PREFIX, SLASH_SEPARATOR, HEAL_DIR, SLASH_SEPARATOR, "mrf"); + static ref PATTERNS: Vec = vec![ + Regex::new(r"^buckets/.*/.metacache/.*").unwrap(), + Regex::new(r"^tmp/.*").unwrap(), + Regex::new(r"^multipart/.*").unwrap(), + Regex::new(r"^tmp-old/.*").unwrap(), + ]; +} + +#[derive(Default)] +pub struct PartialOperation { + pub bucket: String, + pub object: String, + pub version_id: Option, + pub versions: Vec, + pub set_index: usize, + pub pool_index: usize, + pub queued: DateTime, + pub bitrot_scan: bool, +} + +pub struct MRFState { + tx: Sender, + rx: RwLock>, + closed: AtomicBool, + closing: AtomicBool, +} + +impl MRFState { + pub fn new() -> MRFState { + let (tx, rx) = tokio::sync::mpsc::channel(MRF_OPS_QUEUE_SIZE as usize); + MRFState { + tx, + rx: RwLock::new(rx), + closed: Default::default(), + closing: Default::default(), + } + } + + pub async fn add_partial(&self, op: PartialOperation) { + if self.closed.load(Ordering::SeqCst) || self.closing.load(Ordering::SeqCst) { + return; + } + let _ = self.tx.send(op).await; + } + + pub async fn heal_routine(&self) { + loop { + // rx used only there, + if let Some(op) = self.rx.write().await.recv().await { + if op.bucket == RUSTFS_META_BUCKET { + for pattern in &*PATTERNS { + if pattern.is_match(&op.object) { + return; + } + } + } + + let now = Utc::now(); + if now.sub(op.queued).num_seconds() < 1 { + sleep(Duration::from_secs(1)).await; + } + + let scan_mode = if op.bitrot_scan { HEAL_DEEP_SCAN } else { HEAL_NORMAL_SCAN }; + if op.object.is_empty() { + if let Err(err) = heal_bucket(&op.bucket).await { + error!("heal bucket failed, bucket: {}, err: {:?}", op.bucket, err); + } + } else { + if op.versions.is_empty() { + if let Err(err) = + heal_object(&op.bucket, &op.object, &op.version_id.clone().unwrap_or_default(), scan_mode).await + { + error!("heal object failed, bucket: {}, object: {}, err: {:?}", op.bucket, op.object, err); + } + } else { + let vers = op.versions.len() / 16; + if vers > 0 { + for i in 0..vers { + let start = i * 16; + let end = start + 16; + if let Err(err) = heal_object( + &op.bucket, + &op.object, + &Uuid::from_slice(&op.versions[start..end]).expect("").to_string(), + scan_mode, + ) + .await + { + error!("heal object failed, bucket: {}, object: {}, err: {:?}", op.bucket, op.object, err); + } + } + } + } + } + } else { + return; + } + } + } +} diff --git a/ecstore/src/peer.rs b/ecstore/src/peer.rs index e9d02c608..13df3a7e0 100644 --- a/ecstore/src/peer.rs +++ b/ecstore/src/peer.rs @@ -9,7 +9,7 @@ use regex::Regex; use std::{collections::HashMap, fmt::Debug, sync::Arc}; use tokio::sync::RwLock; use tonic::Request; -use tracing::{info, warn}; +use tracing::info; use crate::disk::error::is_all_buckets_not_found; use crate::disk::{DiskAPI, DiskStore}; @@ -20,6 +20,7 @@ use crate::heal::heal_commands::{ use crate::heal::heal_ops::RUESTFS_RESERVED_BUCKET; use crate::quorum::{bucket_op_ignored_errs, reduce_write_quorum_errs}; use crate::store::all_local_disk; +use crate::utils::proto_err_to_err; use crate::utils::wildcard::is_rustfs_meta_bucket_name; use crate::{ disk::{self, error::DiskError, VolumeInfo}, @@ -523,7 +524,11 @@ impl PeerS3Client for RemotePeerS3Client { }); let response = client.heal_bucket(request).await?.into_inner(); if !response.success { - return Err(Error::from_string(response.error_info.unwrap_or_default())); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(HealResultItem { @@ -541,6 +546,13 @@ impl PeerS3Client for RemotePeerS3Client { .map_err(|err| Error::from_string(format!("can not get client, err: {}", err)))?; let request = Request::new(ListBucketRequest { options }); let response = client.list_bucket(request).await?.into_inner(); + if !response.success { + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; + } let bucket_infos = response .bucket_infos .into_iter() @@ -562,7 +574,11 @@ impl PeerS3Client for RemotePeerS3Client { // TODO: deal with error if !response.success { - warn!("make bucket error: {:?}", response.error_info); + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; } Ok(()) @@ -577,6 +593,13 @@ impl PeerS3Client for RemotePeerS3Client { options, }); let response = client.get_bucket_info(request).await?.into_inner(); + if !response.success { + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; + } let bucket_info = serde_json::from_str::(&response.bucket_info)?; Ok(bucket_info) @@ -590,7 +613,14 @@ impl PeerS3Client for RemotePeerS3Client { let request = Request::new(DeleteBucketRequest { bucket: bucket.to_string(), }); - let _response = client.delete_bucket(request).await?.into_inner(); + let response = client.delete_bucket(request).await?.into_inner(); + if !response.success { + return if let Some(err) = &response.error { + Err(proto_err_to_err(err)) + } else { + Err(Error::from_string("")) + }; + } Ok(()) } diff --git a/ecstore/src/peer_rest_client.rs b/ecstore/src/peer_rest_client.rs index f67925759..95496125a 100644 --- a/ecstore/src/peer_rest_client.rs +++ b/ecstore/src/peer_rest_client.rs @@ -53,7 +53,7 @@ impl PeerRestClient { let eps = eps.clone(); let hosts = eps.hosts_sorted(); let mut remote = vec![None; hosts.len()]; - let mut all = Vec::with_capacity(hosts.len()); + let mut all = vec![None; hosts.len()]; for (i, hs_host) in hosts.iter().enumerate() { if let Some(host) = hs_host { if let Some(grid_host) = eps.find_grid_hosts_from_peer(host) { diff --git a/ecstore/src/quorum.rs b/ecstore/src/quorum.rs index 84d36df58..848cac03c 100644 --- a/ecstore/src/quorum.rs +++ b/ecstore/src/quorum.rs @@ -1,13 +1,13 @@ +use crate::config::error::ConfigError; use crate::{disk::error::DiskError, error::Error}; use std::{collections::HashMap, fmt::Debug}; - // pub type CheckErrorFn = fn(e: &Error) -> bool; pub trait CheckErrorFn: Debug + Send + Sync + 'static { fn is(&self, e: &Error) -> bool; } -#[derive(Debug, thiserror::Error)] +#[derive(Debug, PartialEq, thiserror::Error)] pub enum QuorumError { #[error("Read quorum not met")] Read, @@ -15,6 +15,23 @@ pub enum QuorumError { Write, } +impl QuorumError { + pub fn to_u32(&self) -> u32 { + match self { + QuorumError::Read => 0x01, + QuorumError::Write => 0x02, + } + } + + pub fn from_u32(error: u32) -> Option { + match error { + 0x01 => Some(QuorumError::Read), + 0x02 => Some(QuorumError::Write), + _ => None, + } + } +} + pub fn base_ignored_errs() -> Vec> { vec![ Box::new(DiskError::DiskNotFound), diff --git a/ecstore/src/set_disk.rs b/ecstore/src/set_disk.rs index 6883736b5..0bb3f0327 100644 --- a/ecstore/src/set_disk.rs +++ b/ecstore/src/set_disk.rs @@ -6,7 +6,10 @@ use std::{ time::Duration, }; +use crate::config::error::is_not_found; +use crate::global::GLOBAL_MRFState; use crate::heal::heal_ops::{HealEntryFn, HealSequence}; +use crate::heal::mrf::PartialOperation; use crate::{ bitrot::{bitrot_verify, close_bitrot_writers, new_bitrot_filereader, new_bitrot_filewriter, BitrotFileWriter}, cache_value::metacache_set::{list_path_raw, ListPathRawOptions}, @@ -46,7 +49,7 @@ use crate::{ store_init::{load_format_erasure, ErasureError}, utils::{ self, - crypto::{base64_decode, base64_encode, hex, sha256}, + crypto::{base64_decode, base64_encode, hex}, path::{encode_dir_object, has_suffix, SLASH_SEPARATOR}, }, xhttp, @@ -56,6 +59,7 @@ use crate::{ heal::data_scanner::{globalHealConfig, HEAL_DELETE_DANGLING}, store_api::ListObjectVersionsInfo, }; +use chrono::Utc; use futures::future::join_all; use glob::Pattern; use http::HeaderMap; @@ -619,7 +623,9 @@ impl SetDisks { fn get_multipart_sha_dir(bucket: &str, object: &str) -> String { let path = format!("{}/{}", bucket, object); - hex(sha256(path.as_bytes()).as_ref()) + let mut hasher = Sha256::new(); + hasher.update(path); + hex(hasher.finalize()) } fn common_parity(parities: &[i32], default_parity_count: i32) -> i32 { @@ -1318,6 +1324,7 @@ impl SetDisks { for (i, opdisk) in disks.iter().enumerate() { if let Some(disk) = opdisk { if disk.is_online().await && disk.get_disk_location().set_idx.is_some() { + info!("Disk {:?} is online", disk); continue; } @@ -1325,6 +1332,7 @@ impl SetDisks { } if let Some(endpoint) = self.set_endpoints.get(i) { + info!("will renew disk, opdisk: {:?}", opdisk); self.renew_disk(endpoint).await; } } @@ -1338,12 +1346,20 @@ impl SetDisks { Err(e) => { warn!("connect_endpoint err {:?}", &e); if ep.is_local && DiskError::UnformattedDisk.is(&e) { - // TODO: pushHealLocalDisks + GLOBAL_BackgroundHealState.push_heal_local_disks(&[ep.clone()]).await; } return; } }; + if new_disk.is_local() { + if let Some(h) = new_disk.healing().await { + if !h.finished { + GLOBAL_BackgroundHealState.push_heal_local_disks(&[new_disk.endpoint()]).await; + } + } + } + let (set_idx, disk_idx) = match self.find_disk_index(&fm) { Ok(res) => res, Err(e) => { @@ -1706,6 +1722,19 @@ impl SetDisks { let (op_online_disks, mot_time, etag) = Self::list_online_disks(&disks, &parts_metadata, &errs, read_quorum as usize); let fi = Self::pick_valid_fileinfo(&parts_metadata, mot_time, etag, read_quorum as usize)?; + if errs.iter().any(|err| err.is_some()) { + GLOBAL_MRFState + .add_partial(PartialOperation { + bucket: fi.volume.to_string(), + object: fi.name.to_string(), + queued: Utc::now(), + version_id: fi.version_id.map(|v| v.to_string()), + set_index: self.set_index, + pool_index: self.pool_index, + ..Default::default() + }) + .await; + } // debug!("get_object_fileinfo pick fi {:?}", &fi); // let online_disks: Vec> = op_online_disks.iter().filter(|v| v.is_some()).cloned().collect(); @@ -1724,6 +1753,8 @@ impl SetDisks { fi: FileInfo, files: Vec, disks: &[Option], + set_index: usize, + pool_index: usize, ) -> Result<()> { let (disks, files) = Self::shuffle_disks_and_parts_metadata_by_index(disks, &files, &fi); @@ -1809,10 +1840,34 @@ impl SetDisks { // "read part {} part_offset {},part_length {},part_size {} ", // part_number, part_offset, part_length, part_size // ); - let _n = erasure + let (written, mut err) = erasure .decode(writer, readers, part_offset as usize, part_length, part_size) - .await?; - + .await; + if let Some(e) = err.as_ref() { + if written == part_length { + match e.downcast_ref::() { + Some(DiskError::FileNotFound) | Some(DiskError::FileCorrupt) => { + GLOBAL_MRFState + .add_partial(PartialOperation { + bucket: bucket.to_string(), + object: object.to_string(), + queued: Utc::now(), + version_id: fi.version_id.map(|v| v.to_string()), + set_index, + pool_index, + bitrot_scan: !is_not_found(e), + ..Default::default() + }) + .await; + err = None; + } + _ => {} + } + } + } + if let Some(err) = err { + return Err(err); + } // debug!("ec decode {} writed size {}", part_number, n); total_readed += part_length as i64; @@ -2941,7 +2996,6 @@ impl SetDisks { info!("ns_scanner start"); let _ = join_all(futures).await; drop(buckets_results_tx); - info!("1"); let _ = task.await; info!("ns_scanner completed"); Ok(()) @@ -3070,6 +3124,7 @@ impl SetDisks { let mut ret_err = None; for bucket in buckets.iter() { if tracker.read().await.is_healed(bucket).await { + info!("bucket{} was healed", bucket); continue; } @@ -3190,6 +3245,7 @@ impl SetDisks { let bg_seq_clone = bg_seq.clone(); let send_clone = send.clone(); let heal_entry = Arc::new(move |bucket: String, entry: MetaCacheEntry| { + info!("heal entry, bucket: {}, entry: {:?}", bucket, entry); let jt_clone = jt_clone.clone(); let self_clone = self_clone.clone(); let started = started_clone; @@ -3469,8 +3525,14 @@ impl ObjectIO for SetDisks { // let disks = disks.clone(); let bucket = String::from(bucket); let object = String::from(object); + let set_index = self.set_index.clone(); + let pool_index = self.pool_index.clone(); tokio::spawn(async move { - if let Err(e) = Self::get_object_with_fileinfo(&bucket, &object, offset, length, &mut wd, fi, files, &disks).await { + if let Err(e) = Self::get_object_with_fileinfo( + &bucket, &object, offset, length, &mut wd, fi, files, &disks, set_index, pool_index, + ) + .await + { error!("get_object_with_fileinfo err {:?}", e); }; }); @@ -4529,7 +4591,7 @@ impl StorageAPI for SetDisks { } } - let (online_disks, _, op_old_dir) = Self::rename_data( + let (online_disks, versions, op_old_dir) = Self::rename_data( &shuffle_disks, RUSTFS_META_MULTIPART_BUCKET, &upload_id_path, @@ -4558,6 +4620,19 @@ impl StorageAPI for SetDisks { self.commit_rename_data_dir(&shuffle_disks, bucket, object, &old_dir.to_string(), write_quorum) .await?; } + if let Some(versions) = versions { + GLOBAL_MRFState + .add_partial(PartialOperation { + bucket: bucket.to_string(), + object: object.to_string(), + queued: Utc::now(), + versions, + set_index: self.set_index, + pool_index: self.pool_index, + ..Default::default() + }) + .await; + } let _ = self.delete_all(RUSTFS_META_MULTIPART_BUCKET, &upload_id_path).await; diff --git a/ecstore/src/sets.rs b/ecstore/src/sets.rs index f15b6c91c..f5cd4949a 100644 --- a/ecstore/src/sets.rs +++ b/ecstore/src/sets.rs @@ -589,6 +589,7 @@ impl StorageAPI for Sets { .await; let (formats, errs) = load_format_erasure_all(&disks, true).await; if let Err(err) = check_format_erasure_values(&formats, self.set_drive_count) { + info!("failed to check formats erasure values: {}", err); return Ok((HealResultItem::default(), Some(err))); } let ref_format = match get_format_erasure_in_quorum(&formats) { @@ -611,12 +612,14 @@ impl StorageAPI for Sets { res.after.drives.push(v.clone()); } if DiskError::UnformattedDisk.count_errs(&errs) == 0 { + info!("disk formats success, NoHealRequired, errs: {:?}", errs); return Ok((res, Some(Error::new(DiskError::NoHealRequired)))); } - if !self.format.eq(&ref_format) { - return Ok((res, Some(Error::new(DiskError::CorruptedFormat)))); - } + // if !self.format.eq(&ref_format) { + // info!("format ({:?}) not eq ref_format ({:?})", self.format, ref_format); + // return Ok((res, Some(Error::new(DiskError::CorruptedFormat)))); + // } let format_op_id = Uuid::new_v4().to_string(); let (new_format_sets, _) = new_heal_format_sets(&ref_format, self.set_count, self.set_drive_count, &formats, &errs); diff --git a/ecstore/src/store.rs b/ecstore/src/store.rs index c9d52e6fd..3a1038457 100644 --- a/ecstore/src/store.rs +++ b/ecstore/src/store.rs @@ -669,8 +669,10 @@ impl ECStore { want_cycle: usize, heal_scan_mode: HealScanMode, ) -> Result<()> { + info!("ns_scanner updates - {}", want_cycle); let all_buckets = self.list_bucket(&BucketOptions::default()).await?; if all_buckets.is_empty() { + info!("No buckets found"); let _ = updates.send(DataUsageInfo::default()).await; return Ok(()); } @@ -1876,6 +1878,7 @@ impl StorageAPI for ECStore { counts } async fn heal_format(&self, dry_run: bool) -> Result<(HealResultItem, Option)> { + info!("heal_format"); let mut r = HealResultItem { heal_item_type: HEAL_ITEM_METADATA.to_string(), detail: "disk-format".to_string(), @@ -1901,8 +1904,10 @@ impl StorageAPI for ECStore { r.after.drives.append(&mut result.after.drives); } if count_no_heal == self.pools.len() { + info!("heal format success, NoHealRequired"); return Ok((r, Some(Error::new(DiskError::NoHealRequired)))); } + info!("heal format success result: {:?}", r); Ok((r, None)) } diff --git a/ecstore/src/store_err.rs b/ecstore/src/store_err.rs index a0fc12cc4..5ef13c1e9 100644 --- a/ecstore/src/store_err.rs +++ b/ecstore/src/store_err.rs @@ -79,6 +79,73 @@ pub enum StorageError { DecommissionNotStarted, } +impl StorageError { + pub fn to_u32(&self) -> u32 { + match self { + StorageError::NotImplemented => 0x01, + StorageError::InvalidArgument(_, _, _) => 0x02, + StorageError::MethodNotAllowed => 0x03, + StorageError::BucketNotFound(_) => 0x04, + StorageError::BucketNotEmpty(_) => 0x05, + StorageError::BucketNameInvalid(_) => 0x06, + StorageError::ObjectNameInvalid(_, _) => 0x07, + StorageError::BucketExists(_) => 0x08, + StorageError::StorageFull => 0x09, + StorageError::SlowDown => 0x0A, + StorageError::PrefixAccessDenied(_, _) => 0x0B, + StorageError::InvalidUploadIDKeyCombination(_, _) => 0x0C, + StorageError::MalformedUploadID(_) => 0x0D, + StorageError::ObjectNameTooLong(_, _) => 0x0E, + StorageError::ObjectNamePrefixAsSlash(_, _) => 0x0F, + StorageError::ObjectNotFound(_, _) => 0x10, + StorageError::VersionNotFound(_, _, _) => 0x11, + StorageError::InvalidUploadID(_, _, _) => 0x12, + StorageError::InvalidVersionID(_, _, _) => 0x13, + StorageError::DataMovementOverwriteErr(_, _, _) => 0x14, + StorageError::ObjectExistsAsDirectory(_, _) => 0x15, + StorageError::InsufficientReadQuorum => 0x16, + StorageError::InsufficientWriteQuorum => 0x17, + StorageError::DecommissionNotStarted => 0x18, + StorageError::VolumeNotFound(_) => 0x19, + } + } + + pub fn from_u32(error: u32) -> Option { + match error { + 0x01 => Some(StorageError::NotImplemented), + 0x02 => Some(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + 0x03 => Some(StorageError::MethodNotAllowed), + 0x04 => Some(StorageError::BucketNotFound(Default::default())), + 0x05 => Some(StorageError::BucketNotEmpty(Default::default())), + 0x06 => Some(StorageError::BucketNameInvalid(Default::default())), + 0x07 => Some(StorageError::ObjectNameInvalid(Default::default(), Default::default())), + 0x08 => Some(StorageError::BucketExists(Default::default())), + 0x09 => Some(StorageError::StorageFull), + 0x0A => Some(StorageError::SlowDown), + 0x0B => Some(StorageError::PrefixAccessDenied(Default::default(), Default::default())), + 0x0C => Some(StorageError::InvalidUploadIDKeyCombination(Default::default(), Default::default())), + 0x0D => Some(StorageError::MalformedUploadID(Default::default())), + 0x0E => Some(StorageError::ObjectNameTooLong(Default::default(), Default::default())), + 0x0F => Some(StorageError::ObjectNamePrefixAsSlash(Default::default(), Default::default())), + 0x10 => Some(StorageError::ObjectNotFound(Default::default(), Default::default())), + 0x11 => Some(StorageError::VersionNotFound(Default::default(), Default::default(), Default::default())), + 0x12 => Some(StorageError::InvalidUploadID(Default::default(), Default::default(), Default::default())), + 0x13 => Some(StorageError::InvalidVersionID(Default::default(), Default::default(), Default::default())), + 0x14 => Some(StorageError::DataMovementOverwriteErr( + Default::default(), + Default::default(), + Default::default(), + )), + 0x15 => Some(StorageError::ObjectExistsAsDirectory(Default::default(), Default::default())), + 0x16 => Some(StorageError::InsufficientReadQuorum), + 0x17 => Some(StorageError::InsufficientWriteQuorum), + 0x18 => Some(StorageError::DecommissionNotStarted), + 0x19 => Some(StorageError::VolumeNotFound(Default::default())), + _ => None, + } + } +} + pub fn to_object_err(err: Error, params: Vec<&str>) -> Error { if let Some(e) = err.downcast_ref::() { match e { diff --git a/ecstore/src/store_init.rs b/ecstore/src/store_init.rs index 1b154c165..2ca67f47f 100644 --- a/ecstore/src/store_init.rs +++ b/ecstore/src/store_init.rs @@ -16,7 +16,7 @@ use std::{ fmt::Debug, }; -use tracing::{debug, warn}; +use tracing::{debug, info, warn}; use uuid::Uuid; pub async fn init_disks(eps: &Endpoints, opt: &DiskOption) -> (Vec>, Vec>) { @@ -330,3 +330,26 @@ impl ErasureError { false } } + +impl ErasureError { + pub fn to_u32(&self) -> u32 { + match self { + ErasureError::ErasureReadQuorum => 0x01, + ErasureError::_ErasureWriteQuorum => 0x02, + ErasureError::NotFirstDisk => 0x03, + ErasureError::FirstDiskWait => 0x04, + ErasureError::InvalidPart(_) => 0x05, + } + } + + pub fn from_u32(error: u32) -> Option { + match error { + 0x01 => Some(ErasureError::ErasureReadQuorum), + 0x02 => Some(ErasureError::_ErasureWriteQuorum), + 0x03 => Some(ErasureError::NotFirstDisk), + 0x04 => Some(ErasureError::FirstDiskWait), + 0x05 => Some(ErasureError::InvalidPart(Default::default())), + _ => None, + } + } +} diff --git a/ecstore/src/utils/crypto.rs b/ecstore/src/utils/crypto.rs index 35495315c..38032182d 100644 --- a/ecstore/src/utils/crypto.rs +++ b/ecstore/src/utils/crypto.rs @@ -10,16 +10,16 @@ pub fn hex(data: impl AsRef<[u8]>) -> String { hex_simd::encode_to_string(data, hex_simd::AsciiCase::Lower) } -#[cfg(windows)] -pub fn sha256(data: &[u8]) -> impl AsRef<[u8; 32]> { - use sha2::{Digest, Sha256}; - ::digest(data) -} +// #[cfg(windows)] +// pub fn sha256(data: &[u8]) -> impl AsRef<[u8; 32]> { +// use sha2::{Digest, Sha256}; +// ::digest(data) +// } -#[cfg(not(windows))] -pub fn sha256(data: &[u8]) -> impl AsRef<[u8]> { - use openssl::hash::{Hasher, MessageDigest}; - let mut h = Hasher::new(MessageDigest::sha256()).unwrap(); - h.update(data).unwrap(); - h.finish().unwrap() -} +// #[cfg(not(windows))] +// pub fn sha256(data: &[u8]) -> impl AsRef<[u8]> { +// use openssl::hash::{Hasher, MessageDigest}; +// let mut h = Hasher::new(MessageDigest::sha256()).unwrap(); +// h.update(data).unwrap(); +// h.finish().unwrap() +// } diff --git a/ecstore/src/utils/mod.rs b/ecstore/src/utils/mod.rs index 65aac72b2..b45790abd 100644 --- a/ecstore/src/utils/mod.rs +++ b/ecstore/src/utils/mod.rs @@ -1,3 +1,12 @@ +use crate::bucket::error::BucketMetadataError; +use crate::config::error::ConfigError; +use crate::disk::error::DiskError; +use crate::error::Error; +use crate::quorum::QuorumError; +use crate::store_err::StorageError; +use crate::store_init::ErasureError; +use protos::proto_gen::node_service::Error as Proto_Error; + pub mod bool_flag; pub mod crypto; pub mod ellipses; @@ -8,3 +17,104 @@ pub mod os; pub mod path; pub mod wildcard; pub mod xml; + +const ERROR_MODULE_MASK: u32 = 0xFF00; +pub const ERROR_TYPE_MASK: u32 = 0x00FF; +const DISK_ERROR_MASK: u32 = 0x0100; +const STORAGE_ERROR_MASK: u32 = 0x0200; +const BUCKET_METADATA_ERROR_MASK: u32 = 0x0300; +const CONFIG_ERROR_MASK: u32 = 0x04000; +const QUORUM_ERROR_MASK: u32 = 0x0500; +const ERASURE_ERROR_MASK: u32 = 0x0600; + +// error to u8 +pub fn error_to_u32(err: &Error) -> u32 { + if let Some(e) = err.downcast_ref::() { + DISK_ERROR_MASK | e.to_u32() + } else if let Some(e) = err.downcast_ref::() { + STORAGE_ERROR_MASK | e.to_u32() + } else if let Some(e) = err.downcast_ref::() { + BUCKET_METADATA_ERROR_MASK | e.to_u32() + } else if let Some(e) = err.downcast_ref::() { + CONFIG_ERROR_MASK | e.to_u32() + } else if let Some(e) = err.downcast_ref::() { + QUORUM_ERROR_MASK | e.to_u32() + } else if let Some(e) = err.downcast_ref::() { + ERASURE_ERROR_MASK | e.to_u32() + } else { + 0 + } +} + +pub fn u32_to_error(e: u32) -> Option { + match e & ERROR_MODULE_MASK { + DISK_ERROR_MASK => DiskError::from_u32(e & ERROR_TYPE_MASK).map(|e| Error::new(e)), + STORAGE_ERROR_MASK => StorageError::from_u32(e & ERROR_TYPE_MASK).map(|e| Error::new(e)), + BUCKET_METADATA_ERROR_MASK => BucketMetadataError::from_u32(e & ERROR_TYPE_MASK).map(|e| Error::new(e)), + CONFIG_ERROR_MASK => ConfigError::from_u32(e & ERROR_TYPE_MASK).map(|e| Error::new(e)), + QUORUM_ERROR_MASK => QuorumError::from_u32(e & ERROR_TYPE_MASK).map(|e| Error::new(e)), + ERASURE_ERROR_MASK => ErasureError::from_u32(e & ERROR_TYPE_MASK).map(|e| Error::new(e)), + _ => None, + } +} + +pub fn err_to_proto_err(err: &Error, msg: &str) -> Proto_Error { + let num = error_to_u32(err); + Proto_Error { + code: num, + error_info: msg.to_string(), + } +} + +pub fn proto_err_to_err(err: &Proto_Error) -> Error { + if let Some(e) = u32_to_error(err.code) { + e + } else { + Error::from_string(err.error_info.clone()) + } +} + +#[test] +fn test_u32_to_error() { + let error = Error::new(DiskError::FileCorrupt); + let num = error_to_u32(&error); + let new_error = u32_to_error(num); + assert!(new_error.is_some()); + assert_eq!(new_error.unwrap().downcast_ref::(), Some(&DiskError::FileCorrupt)); + + let error = Error::new(StorageError::BucketNotEmpty(Default::default())); + let num = error_to_u32(&error); + let new_error = u32_to_error(num); + assert!(new_error.is_some()); + assert_eq!( + new_error.unwrap().downcast_ref::(), + Some(&StorageError::BucketNotEmpty(Default::default())) + ); + + let error = Error::new(BucketMetadataError::BucketObjectLockConfigNotFound); + let num = error_to_u32(&error); + let new_error = u32_to_error(num); + assert!(new_error.is_some()); + assert_eq!( + new_error.unwrap().downcast_ref::(), + Some(&BucketMetadataError::BucketObjectLockConfigNotFound) + ); + + let error = Error::new(ConfigError::NotFound); + let num = error_to_u32(&error); + let new_error = u32_to_error(num); + assert!(new_error.is_some()); + assert_eq!(new_error.unwrap().downcast_ref::(), Some(&ConfigError::NotFound)); + + let error = Error::new(QuorumError::Read); + let num = error_to_u32(&error); + let new_error = u32_to_error(num); + assert!(new_error.is_some()); + assert_eq!(new_error.unwrap().downcast_ref::(), Some(&QuorumError::Read)); + + let error = Error::new(ErasureError::ErasureReadQuorum); + let num = error_to_u32(&error); + let new_error = u32_to_error(num); + assert!(new_error.is_some()); + assert_eq!(new_error.unwrap().downcast_ref::(), Some(&ErasureError::ErasureReadQuorum)); +} diff --git a/ecstore/src/utils/os/windows.rs b/ecstore/src/utils/os/windows.rs index e49777d8f..4eac43cd2 100644 --- a/ecstore/src/utils/os/windows.rs +++ b/ecstore/src/utils/os/windows.rs @@ -1,6 +1,8 @@ +#![allow(unsafe_code)] // TODO: audit unsafe code + use super::IOStats; use crate::{disk::Info, error::Result}; -use std::io::{Error, ErrorKind, Result}; +use std::io::{Error, ErrorKind, Result as IoResult}; use std::mem; use std::os::windows::ffi::OsStrExt; use std::path::Path; @@ -32,7 +34,7 @@ pub fn get_info(p: impl AsRef) -> Result { ) }; if success == 0 { - return Err(Error::last_os_error()); + return Err(Error::last_os_error().into()); } let total = unsafe { *lp_total_number_of_bytes.QuadPart() }; @@ -47,7 +49,8 @@ pub fn get_info(p: impl AsRef) -> Result { total, p.as_ref().display() ), - )); + ) + .into()); } let mut lp_sectors_per_cluster: DWORD = 0; @@ -65,7 +68,7 @@ pub fn get_info(p: impl AsRef) -> Result { ) }; if success == 0 { - return Err(Error::last_os_error()); + return Err(Error::last_os_error().into()); } Ok(Info { @@ -87,7 +90,7 @@ fn get_volume_name(v: &[WCHAR]) -> Result { let success = unsafe { GetVolumePathNameW(v.as_ptr(), lp_volume_name_buffer.as_mut_ptr(), volume_name_size) }; if success == 0 { - return Err(Error::last_os_error()); + return Err(Error::last_os_error().into()); } Ok(lp_volume_name_buffer.as_ptr()) @@ -126,7 +129,7 @@ fn get_fs_type(p: &[WCHAR]) -> Result { }; if success == 0 { - return Err(Error::last_os_error()); + return Err(Error::last_os_error().into()); } Ok(utf16_to_string(&lp_file_system_name_buffer)) @@ -137,5 +140,5 @@ pub fn same_disk(disk1: &str, disk2: &str) -> Result { } pub fn get_drive_stats(major: u32, minor: u32) -> Result { - IOStats::default() + Ok(IOStats::default()) } diff --git a/iam/src/policy/action.rs b/iam/src/policy/action.rs index 0ae53c3bb..24e2d1353 100644 --- a/iam/src/policy/action.rs +++ b/iam/src/policy/action.rs @@ -56,7 +56,7 @@ impl Action { } impl Action { - const S3_PREFIX: &str = "s3:"; + const S3_PREFIX: &'static str = "s3:"; const ADMIN_PREFIX: &str = "admin:"; const STS_PREFIX: &str = "sts:"; const KMS_PREFIX: &str = "kms:"; diff --git a/iam/src/store/object.rs b/iam/src/store/object.rs index cda7db11c..15a4abfbe 100644 --- a/iam/src/store/object.rs +++ b/iam/src/store/object.rs @@ -4,14 +4,12 @@ use ecstore::{ config::error::is_not_found, store::ECStore, store_api::{HTTPRangeSpec, ObjectIO, ObjectInfo, ObjectOptions, PutObjReader}, - store_list_objects::ListPathOptions, utils::path::dir, StorageAPI, }; use futures::future::try_join_all; use log::{debug, warn}; use serde::{de::DeserializeOwned, Serialize}; -use tracing::error; use super::Store; use crate::{ diff --git a/madmin/Cargo.toml b/madmin/Cargo.toml index 5a32ec152..122ac7380 100644 --- a/madmin/Cargo.toml +++ b/madmin/Cargo.toml @@ -14,7 +14,6 @@ chrono.workspace = true common.workspace = true humantime.workspace = true hyper.workspace = true -psutil = "3.3.0" serde.workspace = true -time.workspace =true +time.workspace = true tracing.workspace = true diff --git a/rustfs/src/grpc.rs b/rustfs/src/grpc.rs index 999d80df0..9b2e88f75 100644 --- a/rustfs/src/grpc.rs +++ b/rustfs/src/grpc.rs @@ -13,6 +13,7 @@ use ecstore::{ UpdateMetadataOpts, }, erasure::Writer, + error::Error as EcsError, heal::{ data_usage_cache::DataUsageCache, heal_commands::{get_local_background_heal_status, HealOpts}, @@ -22,6 +23,8 @@ use ecstore::{ peer::{LocalPeerS3Client, PeerS3Client}, store::{all_local_disk_path, find_local_disk}, store_api::{BucketOptions, DeleteBucketOptions, FileInfo, MakeBucketOptions, StorageAPI}, + store_err::StorageError, + utils::err_to_proto_err, }; use futures::{Stream, StreamExt}; use futures_util::future::join_all; @@ -128,7 +131,10 @@ impl Node for NodeService { Err(err) => { return Ok(tonic::Response::new(HealBucketResponse { success: false, - error_info: Some(format!("decode HealOpts failed: {}", err)), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + &format!("decode HealOpts failed: {}", err), + )), })) } }; @@ -136,12 +142,12 @@ impl Node for NodeService { match self.local_peer.heal_bucket(&request.bucket, &options).await { Ok(_) => Ok(tonic::Response::new(HealBucketResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(HealBucketResponse { success: false, - error_info: Some(format!("heal bucket failed: {}", err)), + error: Some(err_to_proto_err(&err, &format!("heal bucket failed: {}", err))), })), } } @@ -156,7 +162,10 @@ impl Node for NodeService { return Ok(tonic::Response::new(ListBucketResponse { success: false, bucket_infos: Vec::new(), - error_info: Some(format!("decode BucketOptions failed: {}", err)), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + &format!("decode BucketOptions failed: {}", err), + )), })) } }; @@ -169,14 +178,14 @@ impl Node for NodeService { Ok(tonic::Response::new(ListBucketResponse { success: true, bucket_infos, - error_info: None, + error: None, })) } Err(err) => Ok(tonic::Response::new(ListBucketResponse { success: false, bucket_infos: Vec::new(), - error_info: Some(format!("make failed: {}", err)), + error: Some(err_to_proto_err(&err, &format!("list bucket failed: {}", err))), })), } } @@ -190,18 +199,21 @@ impl Node for NodeService { Err(err) => { return Ok(tonic::Response::new(MakeBucketResponse { success: false, - error_info: Some(format!("decode MakeBucketOptions failed: {}", err)), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + &format!("decode MakeBucketOptions failed: {}", err), + )), })) } }; match self.local_peer.make_bucket(&request.name, &options).await { Ok(_) => Ok(tonic::Response::new(MakeBucketResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(MakeBucketResponse { success: false, - error_info: Some(format!("make failed: {}", err)), + error: Some(err_to_proto_err(&err, &format!("make bucket failed: {}", err))), })), } } @@ -216,7 +228,10 @@ impl Node for NodeService { return Ok(tonic::Response::new(GetBucketInfoResponse { success: false, bucket_info: String::new(), - error_info: Some(format!("decode BucketOptions failed: {}", err)), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + &format!("decode BucketOptions failed: {}", err), + )), })) } }; @@ -228,21 +243,24 @@ impl Node for NodeService { return Ok(tonic::Response::new(GetBucketInfoResponse { success: false, bucket_info: String::new(), - error_info: Some(format!("encode BucketInfo failed: {}", err)), + error: Some(err_to_proto_err( + &EcsError::from_string("encode data failed"), + &format!("encode data failed: {}", err), + )), })); } }; Ok(tonic::Response::new(GetBucketInfoResponse { success: true, bucket_info, - error_info: None, + error: None, })) } Err(err) => Ok(tonic::Response::new(GetBucketInfoResponse { success: false, bucket_info: String::new(), - error_info: Some(format!("make failed: {}", err)), + error: Some(err_to_proto_err(&err, &format!("get bucket info failed: {}", err))), })), } } @@ -264,11 +282,11 @@ impl Node for NodeService { { Ok(_) => Ok(tonic::Response::new(DeleteBucketResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(DeleteBucketResponse { success: false, - error_info: Some(format!("make failed: {}", err)), + error: Some(err_to_proto_err(&err, &format!("delete bucket failed: {}", err))), })), } } @@ -282,19 +300,22 @@ impl Node for NodeService { Ok(data) => Ok(tonic::Response::new(ReadAllResponse { success: true, data: data.to_vec(), - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(ReadAllResponse { success: false, data: Vec::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("read all failed: {}", err))), })), } } else { Ok(tonic::Response::new(ReadAllResponse { success: false, data: Vec::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -305,17 +326,20 @@ impl Node for NodeService { match disk.write_all(&request.volume, &request.path, request.data).await { Ok(_) => Ok(tonic::Response::new(WriteAllResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(WriteAllResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("write all failed: {}", err))), })), } } else { Ok(tonic::Response::new(WriteAllResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -325,27 +349,37 @@ impl Node for NodeService { if let Some(disk) = self.find_disk(&request.disk).await { let options = match serde_json::from_str::(&request.options) { Ok(options) => options, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(DeleteResponse { success: false, - error_info: Some("can not decode DeleteOptions".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode DeleteOptions failed: {}", err), + )), })); } }; match disk.delete(&request.volume, &request.path, options).await { Ok(_) => Ok(tonic::Response::new(DeleteResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(DeleteResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("delete failed: {}", err))), })), } } else { Ok(tonic::Response::new(DeleteResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -355,11 +389,18 @@ impl Node for NodeService { if let Some(disk) = self.find_disk(&request.disk).await { let file_info = match serde_json::from_str::(&request.file_info) { Ok(file_info) => file_info, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(VerifyFileResponse { success: false, check_parts_resp: "".to_string(), - error_info: Some("can not decode FileInfo".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode FileInfo failed: {}", err), + )), })); } }; @@ -367,31 +408,37 @@ impl Node for NodeService { Ok(check_parts_resp) => { let check_parts_resp = match serde_json::to_string(&check_parts_resp) { Ok(check_parts_resp) => check_parts_resp, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(VerifyFileResponse { success: false, check_parts_resp: String::new(), - error_info: Some("can not encode RenameDataResp".to_string()), + error: Some(err_to_proto_err( + &EcsError::from_string("encode data failed"), + &format!("encode data failed: {}", err), + )), })); } }; Ok(tonic::Response::new(VerifyFileResponse { success: true, check_parts_resp, - error_info: None, + error: None, })) } Err(err) => Ok(tonic::Response::new(VerifyFileResponse { success: false, check_parts_resp: "".to_string(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("verify file failed: {}", err))), })), } } else { Ok(tonic::Response::new(VerifyFileResponse { success: false, check_parts_resp: "".to_string(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -401,11 +448,18 @@ impl Node for NodeService { if let Some(disk) = self.find_disk(&request.disk).await { let file_info = match serde_json::from_str::(&request.file_info) { Ok(file_info) => file_info, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(CheckPartsResponse { success: false, check_parts_resp: "".to_string(), - error_info: Some("can not decode FileInfo".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode FileInfo failed: {}", err), + )), })); } }; @@ -413,31 +467,37 @@ impl Node for NodeService { Ok(check_parts_resp) => { let check_parts_resp = match serde_json::to_string(&check_parts_resp) { Ok(check_parts_resp) => check_parts_resp, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(CheckPartsResponse { success: false, check_parts_resp: String::new(), - error_info: Some("can not encode RenameDataResp".to_string()), + error: Some(err_to_proto_err( + &EcsError::from_string("encode data failed"), + &format!("encode data failed: {}", err), + )), })); } }; Ok(tonic::Response::new(CheckPartsResponse { success: true, check_parts_resp, - error_info: None, + error: None, })) } Err(err) => Ok(tonic::Response::new(CheckPartsResponse { success: false, check_parts_resp: "".to_string(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("check parts failed: {}", err))), })), } } else { Ok(tonic::Response::new(CheckPartsResponse { success: false, check_parts_resp: "".to_string(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -457,17 +517,20 @@ impl Node for NodeService { { Ok(_) => Ok(tonic::Response::new(RenamePartResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(RenamePartResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("rename part failed: {}", err))), })), } } else { Ok(tonic::Response::new(RenamePartResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -481,17 +544,20 @@ impl Node for NodeService { { Ok(_) => Ok(tonic::Response::new(RenameFileResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(RenameFileResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("rename file failed: {}", err))), })), } } else { Ok(tonic::Response::new(RenameFileResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -509,22 +575,25 @@ impl Node for NodeService { Ok(mut file_writer) => match file_writer.write(&request.data).await { Ok(_) => Ok(tonic::Response::new(WriteResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(WriteResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("write failed: {}", err))), })), }, Err(err) => Ok(tonic::Response::new(WriteResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("get writer failed: {}", err))), })), } } else { Ok(tonic::Response::new(WriteResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -560,7 +629,10 @@ impl Node for NodeService { Err(err) => { tx.send(Ok(WriteResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err( + &err, + &format!("get get file writer failed: {}", err), + )), })) .await .expect("working rx"); @@ -570,7 +642,14 @@ impl Node for NodeService { } else { tx.send(Ok(WriteResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + "can not find disk", + )), })) .await .expect("working rx"); @@ -582,11 +661,11 @@ impl Node for NodeService { match file_ref.as_mut().unwrap().write(&v.data).await { Ok(_) => tx.send(Ok(WriteResponse { success: true, - error_info: None, + error: None, })), Err(err) => tx.send(Ok(WriteResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("write failed: {}", err))), })), } .await @@ -639,7 +718,7 @@ impl Node for NodeService { tx.send(Ok(ReadAtResponse { success: false, data: Vec::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("read file failed: {}", err))), read_size: -1, })) .await @@ -651,7 +730,14 @@ impl Node for NodeService { tx.send(Ok(ReadAtResponse { success: false, data: Vec::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + "can not find disk", + )), read_size: -1, })) .await @@ -673,12 +759,12 @@ impl Node for NodeService { success: true, data, read_size: read_size.try_into().unwrap(), - error_info: None, + error: None, })), Err(err) => tx.send(Ok(ReadAtResponse { success: false, data: Vec::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("read at failed: {}", err))), read_size: -1, })), } @@ -717,19 +803,22 @@ impl Node for NodeService { Ok(volumes) => Ok(tonic::Response::new(ListDirResponse { success: true, volumes, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(ListDirResponse { success: false, volumes: Vec::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("list dir failed: {}", err))), })), } } else { Ok(tonic::Response::new(ListDirResponse { success: false, volumes: Vec::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -809,11 +898,18 @@ impl Node for NodeService { if let Some(disk) = self.find_disk(&request.disk).await { let file_info = match serde_json::from_str::(&request.file_info) { Ok(file_info) => file_info, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(RenameDataResponse { success: false, rename_data_resp: String::new(), - error_info: Some("can not decode DeleteOptions".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode FileInfo failed: {}", err), + )), })); } }; @@ -824,31 +920,37 @@ impl Node for NodeService { Ok(rename_data_resp) => { let rename_data_resp = match serde_json::to_string(&rename_data_resp) { Ok(file_info) => file_info, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(RenameDataResponse { success: false, rename_data_resp: String::new(), - error_info: Some("can not encode RenameDataResp".to_string()), + error: Some(err_to_proto_err( + &EcsError::from_string("encode data failed"), + &format!("encode data failed: {}", err), + )), })); } }; Ok(tonic::Response::new(RenameDataResponse { success: true, rename_data_resp, - error_info: None, + error: None, })) } Err(err) => Ok(tonic::Response::new(RenameDataResponse { success: false, rename_data_resp: String::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("rename data failed: {}", err))), })), } } else { Ok(tonic::Response::new(RenameDataResponse { success: false, rename_data_resp: String::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -859,17 +961,20 @@ impl Node for NodeService { match disk.make_volumes(request.volumes.iter().map(|s| &**s).collect()).await { Ok(_) => Ok(tonic::Response::new(MakeVolumesResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(MakeVolumesResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("make volume failed: {}", err))), })), } } else { Ok(tonic::Response::new(MakeVolumesResponse { success: false, - error_info: Some(format!("can not find disk, all disks: {:?}", self.all_disk().await)), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -880,17 +985,20 @@ impl Node for NodeService { match disk.make_volume(&request.volume).await { Ok(_) => Ok(tonic::Response::new(MakeVolumeResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(MakeVolumeResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("make volume failed: {}", err))), })), } } else { Ok(tonic::Response::new(MakeVolumeResponse { success: false, - error_info: Some(format!("can not find disk, all disks: {:?}", self.all_disk().await)), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -907,20 +1015,23 @@ impl Node for NodeService { Ok(tonic::Response::new(ListVolumesResponse { success: true, volume_infos, - error_info: None, + error: None, })) } Err(err) => Ok(tonic::Response::new(ListVolumesResponse { success: false, volume_infos: Vec::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("list volume failed: {}", err))), })), } } else { Ok(tonic::Response::new(ListVolumesResponse { success: false, volume_infos: Vec::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -933,25 +1044,31 @@ impl Node for NodeService { Ok(volume_info) => Ok(tonic::Response::new(StatVolumeResponse { success: true, volume_info, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(StatVolumeResponse { success: false, volume_info: String::new(), - error_info: Some(format!("encode VolumeInfo failed, {}", err)), + error: Some(err_to_proto_err( + &EcsError::from_string("encode data failed"), + &format!("encode data failed: {}", err), + )), })), }, Err(err) => Ok(tonic::Response::new(StatVolumeResponse { success: false, volume_info: String::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("state volume failed: {}", err))), })), } } else { Ok(tonic::Response::new(StatVolumeResponse { success: false, volume_info: String::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -963,17 +1080,20 @@ impl Node for NodeService { match disk.delete_paths(&request.volume, &paths).await { Ok(_) => Ok(tonic::Response::new(DeletePathsResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(DeletePathsResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("delte paths failed: {}", err))), })), } } else { Ok(tonic::Response::new(DeletePathsResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -983,19 +1103,33 @@ impl Node for NodeService { if let Some(disk) = self.find_disk(&request.disk).await { let file_info = match serde_json::from_str::(&request.file_info) { Ok(file_info) => file_info, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(UpdateMetadataResponse { success: false, - error_info: Some("can not decode FileInfoVersions".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode FileInfo failed: {}", err), + )), })); } }; let opts = match serde_json::from_str::(&request.opts) { Ok(opts) => opts, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(UpdateMetadataResponse { success: false, - error_info: Some("can not decode UpdateMetadataOpts".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode UpdateMetadataOpts failed: {}", err), + )), })); } }; @@ -1003,17 +1137,20 @@ impl Node for NodeService { match disk.update_metadata(&request.volume, &request.path, file_info, &opts).await { Ok(_) => Ok(tonic::Response::new(UpdateMetadataResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(UpdateMetadataResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("update metadata failed: {}", err))), })), } } else { Ok(tonic::Response::new(UpdateMetadataResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -1026,24 +1163,34 @@ impl Node for NodeService { Err(err) => { return Ok(tonic::Response::new(WriteMetadataResponse { success: false, - error_info: Some(format!("decode FileInfo failed, {}", err)), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode FileInfo failed: {}", err), + )), })); } }; match disk.write_metadata("", &request.volume, &request.path, file_info).await { Ok(_) => Ok(tonic::Response::new(WriteMetadataResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(WriteMetadataResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("write metadata failed: {}", err))), })), } } else { Ok(tonic::Response::new(WriteMetadataResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -1053,11 +1200,18 @@ impl Node for NodeService { if let Some(disk) = self.find_disk(&request.disk).await { let opts = match serde_json::from_str::(&request.opts) { Ok(options) => options, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(ReadVersionResponse { success: false, file_info: String::new(), - error_info: Some("can not decode DeleteOptions".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode ReadOptions failed: {}", err), + )), })); } }; @@ -1069,25 +1223,31 @@ impl Node for NodeService { Ok(file_info) => Ok(tonic::Response::new(ReadVersionResponse { success: true, file_info, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(ReadVersionResponse { success: false, file_info: String::new(), - error_info: Some(format!("encode VolumeInfo failed, {}", err)), + error: Some(err_to_proto_err( + &EcsError::from_string("encode data failed"), + &format!("encode data failed: {}", err), + )), })), }, Err(err) => Ok(tonic::Response::new(ReadVersionResponse { success: false, file_info: String::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("read version failed: {}", err))), })), } } else { Ok(tonic::Response::new(ReadVersionResponse { success: false, file_info: String::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -1100,25 +1260,31 @@ impl Node for NodeService { Ok(raw_file_info) => Ok(tonic::Response::new(ReadXlResponse { success: true, raw_file_info, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(ReadXlResponse { success: false, raw_file_info: String::new(), - error_info: Some(format!("encode RawFileInfo failed, {}", err)), + error: Some(err_to_proto_err( + &EcsError::from_string("encode data failed"), + &format!("encode data failed: {}", err), + )), })), }, Err(err) => Ok(tonic::Response::new(ReadXlResponse { success: false, raw_file_info: String::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("read xl failed: {}", err))), })), } } else { Ok(tonic::Response::new(ReadXlResponse { success: false, raw_file_info: String::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -1128,21 +1294,35 @@ impl Node for NodeService { if let Some(disk) = self.find_disk(&request.disk).await { let file_info = match serde_json::from_str::(&request.file_info) { Ok(file_info) => file_info, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(DeleteVersionResponse { success: false, raw_file_info: "".to_string(), - error_info: Some("can not decode FileInfoVersions".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode FileInfo failed: {}", err), + )), })); } }; let opts = match serde_json::from_str::(&request.opts) { Ok(opts) => opts, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(DeleteVersionResponse { success: false, raw_file_info: "".to_string(), - error_info: Some("can not decode DeleteOptions".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode DeleteOptions failed: {}", err), + )), })); } }; @@ -1154,25 +1334,31 @@ impl Node for NodeService { Ok(raw_file_info) => Ok(tonic::Response::new(DeleteVersionResponse { success: true, raw_file_info, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(DeleteVersionResponse { success: false, raw_file_info: "".to_string(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err( + &EcsError::from_string("encode data failed"), + &format!("encode data failed: {}", err), + )), })), }, Err(err) => Ok(tonic::Response::new(DeleteVersionResponse { success: false, raw_file_info: "".to_string(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("read version failed: {}", err))), })), } } else { Ok(tonic::Response::new(DeleteVersionResponse { success: false, raw_file_info: "".to_string(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -1184,22 +1370,36 @@ impl Node for NodeService { for version in request.versions.iter() { match serde_json::from_str::(version) { Ok(version) => versions.push(version), - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(DeleteVersionsResponse { success: false, errors: Vec::new(), - error_info: Some("can not decode FileInfoVersions".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode FileInfoVersions failed: {}", err), + )), })); } }; } let opts = match serde_json::from_str::(&request.opts) { Ok(opts) => opts, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(DeleteVersionsResponse { success: false, errors: Vec::new(), - error_info: Some("can not decode DeleteOptions".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode DeleteOptions failed: {}", err), + )), })); } }; @@ -1216,20 +1416,23 @@ impl Node for NodeService { Ok(tonic::Response::new(DeleteVersionsResponse { success: true, errors, - error_info: None, + error: None, })) } Err(err) => Ok(tonic::Response::new(DeleteVersionsResponse { success: false, errors: Vec::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("delete version failed: {}", err))), })), } } else { Ok(tonic::Response::new(DeleteVersionsResponse { success: false, errors: Vec::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -1239,11 +1442,18 @@ impl Node for NodeService { if let Some(disk) = self.find_disk(&request.disk).await { let read_multiple_req = match serde_json::from_str::(&request.read_multiple_req) { Ok(read_multiple_req) => read_multiple_req, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(ReadMultipleResponse { success: false, read_multiple_resps: Vec::new(), - error_info: Some("can not decode ReadMultipleReq".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode ReadMultipleReq failed: {}", err), + )), })); } }; @@ -1257,20 +1467,23 @@ impl Node for NodeService { Ok(tonic::Response::new(ReadMultipleResponse { success: true, read_multiple_resps, - error_info: None, + error: None, })) } Err(err) => Ok(tonic::Response::new(ReadMultipleResponse { success: false, read_multiple_resps: Vec::new(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("read multiple failed: {}", err))), })), } } else { Ok(tonic::Response::new(ReadMultipleResponse { success: false, read_multiple_resps: Vec::new(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -1281,17 +1494,20 @@ impl Node for NodeService { match disk.delete_volume(&request.volume).await { Ok(_) => Ok(tonic::Response::new(DeleteVolumeResponse { success: true, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(DeleteVolumeResponse { success: false, - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("delete volume failed: {}", err))), })), } } else { Ok(tonic::Response::new(DeleteVolumeResponse { success: false, - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -1301,11 +1517,18 @@ impl Node for NodeService { if let Some(disk) = self.find_disk(&request.disk).await { let opts = match serde_json::from_str::(&request.opts) { Ok(opts) => opts, - Err(_) => { + Err(err) => { return Ok(tonic::Response::new(DiskInfoResponse { success: false, disk_info: "".to_string(), - error_info: Some("can not decode DiskInfoOptions".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode DiskInfoOptions failed: {}", err), + )), })); } }; @@ -1314,25 +1537,31 @@ impl Node for NodeService { Ok(disk_info) => Ok(tonic::Response::new(DiskInfoResponse { success: true, disk_info, - error_info: None, + error: None, })), Err(err) => Ok(tonic::Response::new(DiskInfoResponse { success: false, disk_info: "".to_string(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err( + &EcsError::from_string("encode data failed"), + &format!("encode data failed: {}", err), + )), })), }, Err(err) => Ok(tonic::Response::new(DiskInfoResponse { success: false, disk_info: "".to_string(), - error_info: Some(err.to_string()), + error: Some(err_to_proto_err(&err, &format!("disk info failed: {}", err))), })), } } else { Ok(tonic::Response::new(DiskInfoResponse { success: false, disk_info: "".to_string(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument(Default::default(), Default::default(), Default::default())), + "can not find disk", + )), })) } } @@ -1350,12 +1579,19 @@ impl Node for NodeService { if let Some(disk) = find_local_disk(&request.disk).await { let cache = match serde_json::from_str::(&request.cache) { Ok(cache) => cache, - Err(_) => { + Err(err) => { tx.send(Ok(NsScannerResponse { success: false, update: "".to_string(), data_usage_cache: "".to_string(), - error_info: Some("can not decode DataUsageCache".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + &format!("decode DataUsageCache failed: {}", err), + )), })) .await .expect("working rx"); @@ -1374,7 +1610,7 @@ impl Node for NodeService { success: true, update, data_usage_cache: "".to_string(), - error_info: Some("can not decode DataUsageCache".to_string()), + error: None, })) .await .expect("working rx"); @@ -1392,17 +1628,17 @@ impl Node for NodeService { success: true, update: "".to_string(), data_usage_cache, - error_info: Some("can not decode DataUsageCache".to_string()), + error: None, })) .await .expect("working rx"); } - Err(_) => { + Err(err) => { tx.send(Ok(NsScannerResponse { success: false, update: "".to_string(), data_usage_cache: "".to_string(), - error_info: Some("scanner failed".to_string()), + error: Some(err_to_proto_err(&err, &format!("scanner failed: {}", err))), })) .await .expect("working rx"); @@ -1413,7 +1649,14 @@ impl Node for NodeService { success: false, update: "".to_string(), data_usage_cache: "".to_string(), - error_info: Some("can not find disk".to_string()), + error: Some(err_to_proto_err( + &EcsError::new(StorageError::InvalidArgument( + Default::default(), + Default::default(), + Default::default(), + )), + "can not find disk", + )), })) .await .expect("working rx");