diff --git a/crates/ecstore/src/store/object.rs b/crates/ecstore/src/store/object.rs index df915af7f..a59ef320a 100644 --- a/crates/ecstore/src/store/object.rs +++ b/crates/ecstore/src/store/object.rs @@ -4770,9 +4770,10 @@ mod tests { #[tokio::test] #[serial_test::serial(body_cache_hook)] async fn select_snapshot_rejects_latest_versioned_delete_marker_during_prepare() { - let (_first_dirs, first_set) = make_local_set_disks(4, 2).await; - let (_second_dirs, second_set) = make_local_set_disks(4, 2).await; - let store = new_prepared_reader_test_store(&[Arc::clone(&first_set), Arc::clone(&second_set)]).await; + let ctx = Arc::new(crate::runtime::instance::InstanceContext::new()); + let (_first_dirs, first_set) = make_local_set_disks_with_ctx(4, 2, Arc::clone(&ctx)).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 object = "versioned-object.bin"; let versioned_opts = ObjectOptions { diff --git a/rustfs/src/app/object_usecase.rs b/rustfs/src/app/object_usecase.rs index cb6ef43f6..6ae4f53f6 100644 --- a/rustfs/src/app/object_usecase.rs +++ b/rustfs/src/app/object_usecase.rs @@ -6556,9 +6556,16 @@ impl DefaultObjectUsecase { }) } + pub fn execute_get_object( + &self, + req: S3Request, + ) -> std::pin::Pin>> + Send + '_>> { + Box::pin(self.execute_get_object_inner(req)) + } + #[instrument(level = "trace", skip(self, req))] #[hotpath::measure(impl_type = "DefaultObjectUsecase")] - pub async fn execute_get_object(&self, req: S3Request) -> S3Result> { + async fn execute_get_object_inner(&self, req: S3Request) -> S3Result> { if let Some(context) = &self.context { let _ = context.object_store(); } @@ -7012,8 +7019,15 @@ impl DefaultObjectUsecase { result } + pub fn execute_copy_object( + &self, + req: S3Request, + ) -> std::pin::Pin>> + Send + '_>> { + Box::pin(self.execute_copy_object_inner(req)) + } + #[instrument(level = "debug", skip(self, req))] - pub async fn execute_copy_object(&self, req: S3Request) -> S3Result> { + async fn execute_copy_object_inner(&self, req: S3Request) -> S3Result> { if let Some(context) = &self.context { let _ = context.object_store(); } @@ -16423,8 +16437,12 @@ mod tests { .expect("create self-copy test bucket"); let payload = b"object whose key equals its bucket".to_vec(); let mut reader = PutObjReader::from_vec(payload.clone()); + let setup_opts = ObjectOptions { + no_lock: true, + ..Default::default() + }; store - .put_object(&bucket, &bucket, &mut reader, &ObjectOptions::default()) + .put_object(&bucket, &bucket, &mut reader, &setup_opts) .await .expect("put object whose key equals its bucket");