diff --git a/crates/ecstore/src/data_movement/mod.rs b/crates/ecstore/src/data_movement/mod.rs index c753b91ee..7ea6cfdba 100644 --- a/crates/ecstore/src/data_movement/mod.rs +++ b/crates/ecstore/src/data_movement/mod.rs @@ -34,7 +34,7 @@ use rustfs_rio::{EtagResolvable, HashReader, HashReaderDetector, Index, TryGetIn use rustfs_utils::http::{ AMZ_OBJECT_TAGGING, SUFFIX_ACTUAL_SIZE, SUFFIX_COMPRESSION_SIZE, SUFFIX_CRC, SUFFIX_DATA_MOVED, SUFFIX_DATA_MOVEMENT_UPLOAD, SUFFIX_PART_CHECKSUMS, SUFFIX_TRANSITION_STATUS, SUFFIX_TRANSITION_TIER, SUFFIX_TRANSITIONED_OBJECTNAME, - SUFFIX_TRANSITIONED_VERSION_ID, SUFFIX_TRANSITIONED_VERSION_STATE, strip_internal_prefix_preserving_case, + SUFFIX_TRANSITIONED_VERSION_ID, SUFFIX_TRANSITIONED_VERSION_STATE, has_internal_suffix, }; use rustfs_utils::path::encode_dir_object; use std::collections::{BTreeMap, HashMap}; @@ -198,8 +198,7 @@ fn data_movement_user_defined(object_info: &ObjectInfo) -> HashMap>(); @@ -227,7 +226,7 @@ fn data_movement_user_defined(object_info: &ObjectInfo) -> HashMap bool { - strip_internal_prefix_preserving_case(key).is_some_and(|candidate| candidate.eq_ignore_ascii_case(suffix)) -} - fn is_canonical_data_movement_internal_metadata(key: &str, suffix: &str) -> bool { key.strip_prefix(rustfs_utils::http::RUSTFS_INTERNAL_PREFIX) == Some(suffix) || key.strip_prefix(rustfs_utils::http::MINIO_INTERNAL_PREFIX) == Some(suffix) @@ -606,7 +601,7 @@ fn data_movement_layout_marker_presence(object_info: &ObjectInfo) -> Option Option { let mut present = false; for (key, value) in object_info.user_defined.iter() { - if !is_data_movement_internal_metadata(key, suffix) { + if !has_internal_suffix(key, suffix) { continue; } present = true; @@ -620,7 +615,7 @@ fn data_movement_size_marker_presence(object_info: &ObjectInfo, suffix: &str, ex fn data_movement_checksum_marker_presence(object_info: &ObjectInfo) -> Option { let mut present = false; for (key, value) in object_info.user_defined.iter() { - if !is_data_movement_internal_metadata(key, SUFFIX_CRC) { + if !has_internal_suffix(key, SUFFIX_CRC) { continue; } let Some(checksum) = object_info.checksum.as_deref().filter(|checksum| !checksum.is_empty()) else { @@ -671,7 +666,7 @@ fn is_data_movement_rewritten_transition_metadata(object_info: &ObjectInfo, key: canonical && !preserves_unusable_version || expected.is_some_and(|expected| { !expected.is_empty() - && is_data_movement_internal_metadata(key, suffix) + && has_internal_suffix(key, suffix) && rustfs_utils::http::get_consistent_str(&object_info.user_defined, suffix) == Some(expected) }) }) @@ -687,11 +682,11 @@ fn is_data_movement_rewritten_metadata(object_info: &ObjectInfo, key: &str, norm crate::object_api::ENCRYPTED_PART_LAYOUT_QUORUM_SUFFIX, ] .iter() - .any(|suffix| is_data_movement_internal_metadata(key, suffix)) + .any(|suffix| has_internal_suffix(key, suffix)) || is_data_movement_rewritten_transition_metadata(object_info, key) || key == rustfs_rio::RUSTFS_MULTIPART_CHECKSUM || key == rustfs_rio::RUSTFS_MULTIPART_CHECKSUM_TYPE - || normalize_compression_size && is_data_movement_internal_metadata(key, SUFFIX_COMPRESSION_SIZE) + || normalize_compression_size && has_internal_suffix(key, SUFFIX_COMPRESSION_SIZE) } pub(crate) fn is_equivalent_data_movement_metadata(