From 0d86c50760105867bb31ceed0e7def4073a5f93c Mon Sep 17 00:00:00 2001 From: Zhengchao An Date: Sun, 16 Aug 2026 09:50:16 +0800 Subject: [PATCH] fix(ecstore): classify remote inline early-stop misses (#6136) --- crates/ecstore/src/set_disk/core/io_primitives.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/ecstore/src/set_disk/core/io_primitives.rs b/crates/ecstore/src/set_disk/core/io_primitives.rs index 43057104d..a251644ea 100644 --- a/crates/ecstore/src/set_disk/core/io_primitives.rs +++ b/crates/ecstore/src/set_disk/core/io_primitives.rs @@ -666,7 +666,8 @@ pub(in crate::set_disk) async fn data_read_early_stop_inline_body_miss_reason( parts_metadata: &[FileInfo], disks: &[Option], ) -> Option<&'static str> { - if !candidate.inline_data() { + // `inline_data` excludes remote objects; this diagnostic reports them separately. + if !rustfs_utils::http::contains_key_str(&candidate.metadata, rustfs_utils::http::SUFFIX_INLINE_DATA) { return Some(GET_METADATA_EARLY_STOP_REASON_DATA_READ_INLINE_NOT_INLINE); } if candidate.is_compressed() @@ -6369,6 +6370,13 @@ mod tests { Some(GET_METADATA_EARLY_STOP_REASON_DATA_READ_INLINE_NOT_INLINE) ); + let mut remote = candidate.clone(); + remote.transition_status = TRANSITION_COMPLETE.to_string(); + assert_eq!( + data_read_early_stop_inline_body_miss_reason(bucket, object, &remote, &parts_metadata, &disks).await, + Some(GET_METADATA_EARLY_STOP_REASON_DATA_READ_INLINE_REMOTE) + ); + let mut transformed = candidate.clone(); rustfs_utils::http::insert_str(&mut transformed.metadata, rustfs_utils::http::SUFFIX_COMPRESSION, "zstd".to_string()); assert_eq!(