diff --git a/ecstore/src/config/error.rs b/ecstore/src/config/error.rs index 27518aef9..80038c9da 100644 --- a/ecstore/src/config/error.rs +++ b/ecstore/src/config/error.rs @@ -1,4 +1,4 @@ -use crate::{disk, error::Error}; +use crate::{disk, error::Error, store_err::is_err_object_not_found}; #[derive(Debug, thiserror::Error)] pub enum ConfigError { @@ -20,6 +20,8 @@ pub fn is_not_found(err: &Error) -> bool { ConfigError::is_not_found(e) } else if let Some(e) = err.downcast_ref::() { matches!(e, disk::error::DiskError::FileNotFound) + } else if is_err_object_not_found(err) { + return true; } else { false } diff --git a/ecstore/src/disk/remote.rs b/ecstore/src/disk/remote.rs index 5d87fb5e9..1e7171635 100644 --- a/ecstore/src/disk/remote.rs +++ b/ecstore/src/disk/remote.rs @@ -7,7 +7,7 @@ use protos::{ CheckPartsRequest, DeletePathsRequest, DeleteRequest, DeleteVersionRequest, DeleteVersionsRequest, DeleteVolumeRequest, DiskInfoRequest, ListDirRequest, ListVolumesRequest, MakeVolumeRequest, MakeVolumesRequest, NsScannerRequest, ReadAllRequest, ReadMultipleRequest, ReadVersionRequest, ReadXlRequest, RenameDataRequest, RenameFileRequst, - StatVolumeRequest, UpdateMetadataRequest, VerifyFileRequest, WalkDirRequest, WriteAllRequest, WriteMetadataRequest, + StatVolumeRequest, UpdateMetadataRequest, VerifyFileRequest, WriteAllRequest, WriteMetadataRequest, }, }; use tokio::{ @@ -21,8 +21,8 @@ use uuid::Uuid; use super::{ endpoint::Endpoint, CheckPartsResp, DeleteOptions, DiskAPI, DiskInfo, DiskInfoOptions, DiskLocation, DiskOption, - FileInfoVersions, FileReader, FileWriter, MetaCacheEntry, ReadMultipleReq, ReadMultipleResp, ReadOptions, RemoteFileReader, - RemoteFileWriter, RenameDataResp, UpdateMetadataOpts, VolumeInfo, WalkDirOptions, + FileInfoVersions, FileReader, FileWriter, ReadMultipleReq, ReadMultipleResp, ReadOptions, RemoteFileReader, RemoteFileWriter, + RenameDataResp, UpdateMetadataOpts, VolumeInfo, WalkDirOptions, }; use crate::{ disk::error::DiskError, diff --git a/iam/src/manager.rs b/iam/src/manager.rs index a58aa8b15..efe57c779 100644 --- a/iam/src/manager.rs +++ b/iam/src/manager.rs @@ -7,6 +7,7 @@ use std::{ time::Duration, }; +use ecstore::store_err::is_err_object_not_found; use log::debug; use time::OffsetDateTime; use tokio::{ @@ -113,7 +114,7 @@ where async fn save_iam_formatter(self: Arc) -> crate::Result<()> { match self.api.load_iam_config::(Format::PATH).await { Ok((format, _)) if format.version >= 1 => return Ok(()), - Err(Error::EcstoreError(e)) if !ecstore::disk::error::is_err_file_not_found(&e) => { + Err(Error::EcstoreError(e)) if !is_err_object_not_found(&e) => { return Err(Error::EcstoreError(e)); } _ => {} diff --git a/iam/src/store/object.rs b/iam/src/store/object.rs index c2b886141..a3ea78b99 100644 --- a/iam/src/store/object.rs +++ b/iam/src/store/object.rs @@ -60,8 +60,13 @@ impl ObjectStore { match items { Ok(items) => Result::<_, crate::Error>::Ok(items.prefixes), - Err(e) if is_not_found(&e) => Result::<_, crate::Error>::Ok(vec![]), - Err(e) => Err(Error::StringError(format!("list {prefix} failed, err: {e:?}"))), + Err(e) => { + if is_not_found(&e) { + Result::<_, crate::Error>::Ok(vec![]) + } else { + Err(Error::StringError(format!("list {prefix} failed, err: {e:?}"))) + } + } } }); }