perf(ecstore): gate GET metadata timing when metrics off (#6879)

Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
houseme
2026-08-30 13:43:08 +08:00
committed by GitHub
parent 4753e35035
commit 7345b49cf6
+17 -11
View File
@@ -1675,7 +1675,7 @@ impl crate::storage_api_contracts::object::ObjectIO for SetDisks {
None None
}; };
let metadata_stage_start = Instant::now(); let metadata_stage_start = stage_metrics_enabled.then(Instant::now);
let (snapshot, prepared_object_info) = if let Some(prepared) = take_prepared_get_object_metadata() { let (snapshot, prepared_object_info) = if let Some(prepared) = take_prepared_get_object_metadata() {
(prepared.snapshot, prepared.object_info) (prepared.snapshot, prepared.object_info)
} else { } else {
@@ -1691,7 +1691,11 @@ impl crate::storage_api_contracts::object::ObjectIO for SetDisks {
{ {
Ok(snapshot) => (snapshot, None), Ok(snapshot) => (snapshot, None),
Err(err) => { Err(err) => {
rustfs_io_metrics::record_get_object_metadata_phase_duration(metadata_stage_start.elapsed().as_secs_f64()); if let Some(metadata_stage_start) = metadata_stage_start {
rustfs_io_metrics::record_get_object_metadata_phase_duration(
metadata_stage_start.elapsed().as_secs_f64(),
);
}
let failure_path = if is_meta_bucketname(bucket) { let failure_path = if is_meta_bucketname(bucket) {
GET_OBJECT_PATH_INTERNAL_META GET_OBJECT_PATH_INTERNAL_META
} else { } else {
@@ -1716,15 +1720,17 @@ impl crate::storage_api_contracts::object::ObjectIO for SetDisks {
}; };
let size_bucket = rustfs_io_metrics::get_object_size_bucket(metrics_size); let size_bucket = rustfs_io_metrics::get_object_size_bucket(metrics_size);
record_get_stage_duration_if_enabled(GET_OBJECT_PATH_SET_DISK, GET_STAGE_OBJECT_INFO, object_info_stage_start); record_get_stage_duration_if_enabled(GET_OBJECT_PATH_SET_DISK, GET_STAGE_OBJECT_INFO, object_info_stage_start);
let metadata_elapsed = metadata_stage_start.elapsed().as_secs_f64(); if let Some(metadata_stage_start) = metadata_stage_start {
rustfs_io_metrics::record_get_object_metadata_phase_duration(metadata_elapsed); let metadata_elapsed = metadata_stage_start.elapsed().as_secs_f64();
rustfs_io_metrics::record_get_object_stage_duration_by_size( rustfs_io_metrics::record_get_object_metadata_phase_duration(metadata_elapsed);
GET_OBJECT_PATH_SET_DISK, rustfs_io_metrics::record_get_object_stage_duration_by_size(
GET_STAGE_METADATA, GET_OBJECT_PATH_SET_DISK,
object_class.as_str(), GET_STAGE_METADATA,
size_bucket, object_class.as_str(),
metadata_elapsed, size_bucket,
); metadata_elapsed,
);
}
if object_info.delete_marker { if object_info.delete_marker {
if opts.version_id.is_none() { if opts.version_id.is_none() {