From d3ce2e04faaef221963824b258172a70be48e06c Mon Sep 17 00:00:00 2001 From: weisd Date: Wed, 9 Apr 2025 15:49:12 +0800 Subject: [PATCH] fix: #305 --- ecstore/src/disk/local.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ecstore/src/disk/local.rs b/ecstore/src/disk/local.rs index 76b5f3ac..3031a606 100644 --- a/ecstore/src/disk/local.rs +++ b/ecstore/src/disk/local.rs @@ -472,13 +472,14 @@ impl LocalDisk { let meta = f.metadata().await?; if meta.is_dir() { - return Err(Error::new(DiskError::FileNotFound)); + // fix use io::Error + return Err(std::io::Error::new(ErrorKind::NotFound, "is dir").into()); } let meta = f.metadata().await.map_err(os_err_to_file_err)?; if meta.is_dir() { - return Err(Error::new(DiskError::FileNotFound)); + return Err(std::io::Error::new(ErrorKind::NotFound, "is dir").into()); } let size = meta.len() as usize; @@ -816,8 +817,6 @@ impl LocalDisk { // 第一层过滤 for item in entries.iter_mut() { - // warn!("walk_dir get entry {:?}", &entry); - let entry = item.clone(); // check limit if opts.limit > 0 && *objs_returned >= opts.limit { @@ -857,7 +856,10 @@ impl LocalDisk { let metadata = self .read_metadata(self.get_object_path(bucket, format!("{}/{}", ¤t, &entry).as_str())?) .await?; - let name = entry.trim_end_matches(STORAGE_FORMAT_FILE).trim_end_matches(SLASH_SEPARATOR); + + // 用strip_suffix只删除一次 + let entry = entry.strip_suffix(STORAGE_FORMAT_FILE).unwrap_or_default().to_owned(); + let name = entry.trim_end_matches(SLASH_SEPARATOR); let name = decode_dir_object(format!("{}/{}", ¤t, &name).as_str()); out.write_obj(&MetaCacheEntry { @@ -887,7 +889,6 @@ impl LocalDisk { let mut dir_stack: Vec = Vec::with_capacity(5); for entry in entries.iter() { - // if opts.limit > 0 && *objs_returned >= opts.limit { return Ok(()); }