perf(get): share metadata cache hits (#6010)

Keep fresh metadata fanout results owned while sharing cache-backed metadata through Arc, avoiding deep clones on eligible local cache hits without enabling unsafe distributed caching.

Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
houseme
2026-08-13 00:53:06 +08:00
committed by GitHub
parent 60d8e8a20b
commit 9546baf1ab
4 changed files with 134 additions and 48 deletions
+6 -4
View File
@@ -77,9 +77,10 @@ impl SetDisks {
version_suspended: opts.version_suspended,
..Default::default()
};
let (mut fi, _, disks) = self
let (fi, _, disks) = self
.get_object_fileinfo_gated(bucket, object, &read_opts, false, false)
.await?;
let mut fi = fi.into_owned();
if let Some(expected_operation_id) = expected_operation_id {
require_restore_operation_id(&fi.metadata, expected_operation_id)?;
}
@@ -101,7 +102,7 @@ impl SetDisks {
bucket,
object,
fi.clone(),
disks.as_slice(),
&disks,
&UpdateMetadataOpts {
replace_user_metadata: true,
..Default::default()
@@ -143,9 +144,10 @@ impl SetDisks {
version_suspended: opts.version_suspended,
..Default::default()
};
let (mut fi, _, disks) = self
let (fi, _, disks) = self
.get_object_fileinfo_gated(bucket, object, &read_opts, false, false)
.await?;
let mut fi = fi.into_owned();
if let Some(expected_operation_id) = expected_operation_id {
match restore_operation_id_from_metadata(&fi.metadata)? {
Some(actual_operation_id) if actual_operation_id == expected_operation_id => {}
@@ -170,7 +172,7 @@ impl SetDisks {
bucket,
object,
fi,
disks.as_slice(),
&disks,
&UpdateMetadataOpts {
replace_user_metadata: true,
..Default::default()