fix: harden GET object performance paths (#4271)

* fix: harden GET object performance paths

* fix: satisfy GET multipart layer guard

* fix: keep v1 list markers S3 compatible

* perf: tighten GET direct-memory decision

* ci: isolate s3tests from scanner workload

* refactor: simplify get object body lifecycle

* fix: satisfy get object clippy
This commit is contained in:
houseme
2026-07-05 12:03:22 +08:00
committed by GitHub
parent a134717249
commit db277b17a4
12 changed files with 1092 additions and 157 deletions
+28
View File
@@ -724,6 +724,34 @@ pub fn record_get_object_direct_memory_subpath(subpath: &'static str, object_cla
.increment(1);
}
/// Record the direct-memory GetObject path decision and bounded fallback reason.
#[inline(always)]
pub fn record_get_object_direct_memory_decision(
outcome: &'static str,
object_class: &'static str,
reason: &'static str,
size_bucket: &'static str,
) {
if !get_stage_metrics_enabled() {
return;
}
counter!(
"rustfs_io_get_object_direct_memory_decision_total",
"outcome" => outcome,
"object_class" => object_class,
"reason" => reason
)
.increment(1);
counter!(
"rustfs_io_get_object_direct_memory_decision_by_size_total",
"outcome" => outcome,
"object_class" => object_class,
"reason" => reason,
"size_bucket" => size_bucket
)
.increment(1);
}
/// Record why the codec streaming reader was not selected.
#[inline(always)]
pub fn record_get_object_codec_streaming_fallback(reason: &'static str) {