perf(utils): avoid metadata key lowercase allocation (#5823)

Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
houseme
2026-08-08 02:39:09 +08:00
committed by GitHub
parent 4b2d79f5d5
commit aa4de7b9d6
+9
View File
@@ -48,6 +48,13 @@ pub const SUFFIX_REPLICATION_SSEC_CRC: &str = "replication-ssec-crc";
/// Returns true if the key is object-encryption metadata understood by RustFS or MinIO.
/// Case-insensitive for metadata filtering.
pub fn is_encryption_metadata_key(key: &str) -> bool {
if key.is_ascii() {
return super::starts_with_ignore_ascii_case(key, RUSTFS_ENCRYPTION_PREFIX)
|| super::starts_with_ignore_ascii_case(key, MINIO_ENCRYPTION_PREFIX)
|| super::starts_with_ignore_ascii_case(key, MINIO_INTERNAL_ENCRYPTION_PREFIX)
|| key.eq_ignore_ascii_case(MINIO_INTERNAL_ENCRYPTED_MULTIPART);
}
let lower = key.to_lowercase();
lower.starts_with(RUSTFS_ENCRYPTION_PREFIX)
|| lower.starts_with(MINIO_ENCRYPTION_PREFIX)
@@ -151,7 +158,9 @@ mod tests {
assert!(is_encryption_metadata_key("x-minio-encryption-iv"));
assert!(is_encryption_metadata_key("X-Minio-Internal-Server-Side-Encryption-Sealed-Key"));
assert!(is_encryption_metadata_key("X-Minio-Internal-Encrypted-Multipart"));
assert!(is_encryption_metadata_key("X-RUSTFS-ENCRYPTION-\u{212A}EY"));
assert!(!is_encryption_metadata_key("x-amz-meta-custom"));
assert!(!is_encryption_metadata_key("x-minio-internal-encrypted-multipart-extra"));
assert!(!is_encryption_metadata_key("x-rustfs-internal-healing"));
}