feat(get): SF06 - conditional lifecycle check

Only call resolve_put_object_expiration when the object has an
x-amz-expiration metadata marker. This avoids unnecessary lifecycle
configuration reads on every GET request.

Expected impact: 50-100us reduction per GET request.

Closes rustfs/backlog#771

Co-Authored-By: heihutu <heihutu@gmail.com>
This commit is contained in:
houseme
2026-06-28 07:29:40 +08:00
parent c2acb9aeb6
commit ce43a2189d
+6 -1
View File
@@ -3294,7 +3294,12 @@ impl DefaultObjectUsecase {
});
// x-amz-expiration: predict from lifecycle configuration
let expiration = resolve_put_object_expiration(bucket, &info).await;
// Only resolve if the object has an expiration marker
let expiration = if info.user_defined.contains_key("x-amz-expiration") {
resolve_put_object_expiration(bucket, &info).await
} else {
None
};
let storage_class = response_storage_class(&info, &info.user_defined);
let content_disposition = info.user_defined.get("content-disposition").cloned();