fix(quota): isolate tests and box object futures

This commit is contained in:
马登山
2026-08-13 17:12:46 +08:00
parent 6f94981f36
commit d626807e1e
2 changed files with 25 additions and 6 deletions
+4 -3
View File
@@ -4770,9 +4770,10 @@ mod tests {
#[tokio::test] #[tokio::test]
#[serial_test::serial(body_cache_hook)] #[serial_test::serial(body_cache_hook)]
async fn select_snapshot_rejects_latest_versioned_delete_marker_during_prepare() { async fn select_snapshot_rejects_latest_versioned_delete_marker_during_prepare() {
let (_first_dirs, first_set) = make_local_set_disks(4, 2).await; let ctx = Arc::new(crate::runtime::instance::InstanceContext::new());
let (_second_dirs, second_set) = make_local_set_disks(4, 2).await; let (_first_dirs, first_set) = make_local_set_disks_with_ctx(4, 2, Arc::clone(&ctx)).await;
let store = new_prepared_reader_test_store(&[Arc::clone(&first_set), Arc::clone(&second_set)]).await; let (_second_dirs, second_set) = make_local_set_disks_with_ctx(4, 2, Arc::clone(&ctx)).await;
let store = new_prepared_reader_test_store_with_ctx(&[Arc::clone(&first_set), Arc::clone(&second_set)], ctx).await;
let bucket = "select-snapshot-latest-delete-marker"; let bucket = "select-snapshot-latest-delete-marker";
let object = "versioned-object.bin"; let object = "versioned-object.bin";
let versioned_opts = ObjectOptions { let versioned_opts = ObjectOptions {
+21 -3
View File
@@ -6556,9 +6556,16 @@ impl DefaultObjectUsecase {
}) })
} }
pub fn execute_get_object(
&self,
req: S3Request<GetObjectInput>,
) -> std::pin::Pin<Box<dyn std::future::Future<Output = S3Result<S3Response<GetObjectOutput>>> + Send + '_>> {
Box::pin(self.execute_get_object_inner(req))
}
#[instrument(level = "trace", skip(self, req))] #[instrument(level = "trace", skip(self, req))]
#[hotpath::measure(impl_type = "DefaultObjectUsecase")] #[hotpath::measure(impl_type = "DefaultObjectUsecase")]
pub async fn execute_get_object(&self, req: S3Request<GetObjectInput>) -> S3Result<S3Response<GetObjectOutput>> { async fn execute_get_object_inner(&self, req: S3Request<GetObjectInput>) -> S3Result<S3Response<GetObjectOutput>> {
if let Some(context) = &self.context { if let Some(context) = &self.context {
let _ = context.object_store(); let _ = context.object_store();
} }
@@ -7012,8 +7019,15 @@ impl DefaultObjectUsecase {
result result
} }
pub fn execute_copy_object(
&self,
req: S3Request<CopyObjectInput>,
) -> std::pin::Pin<Box<dyn std::future::Future<Output = S3Result<S3Response<CopyObjectOutput>>> + Send + '_>> {
Box::pin(self.execute_copy_object_inner(req))
}
#[instrument(level = "debug", skip(self, req))] #[instrument(level = "debug", skip(self, req))]
pub async fn execute_copy_object(&self, req: S3Request<CopyObjectInput>) -> S3Result<S3Response<CopyObjectOutput>> { async fn execute_copy_object_inner(&self, req: S3Request<CopyObjectInput>) -> S3Result<S3Response<CopyObjectOutput>> {
if let Some(context) = &self.context { if let Some(context) = &self.context {
let _ = context.object_store(); let _ = context.object_store();
} }
@@ -16423,8 +16437,12 @@ mod tests {
.expect("create self-copy test bucket"); .expect("create self-copy test bucket");
let payload = b"object whose key equals its bucket".to_vec(); let payload = b"object whose key equals its bucket".to_vec();
let mut reader = PutObjReader::from_vec(payload.clone()); let mut reader = PutObjReader::from_vec(payload.clone());
let setup_opts = ObjectOptions {
no_lock: true,
..Default::default()
};
store store
.put_object(&bucket, &bucket, &mut reader, &ObjectOptions::default()) .put_object(&bucket, &bucket, &mut reader, &setup_opts)
.await .await
.expect("put object whose key equals its bucket"); .expect("put object whose key equals its bucket");