diff --git a/rustfs/src/storage/ecfs.rs b/rustfs/src/storage/ecfs.rs index 1a96ade56..cda98ad9c 100644 --- a/rustfs/src/storage/ecfs.rs +++ b/rustfs/src/storage/ecfs.rs @@ -531,7 +531,8 @@ impl S3 for FS { &self, req: S3Request, ) -> S3Result> { - let helper = OperationHelper::new(&req, EventName::ObjectCreatedCompleteMultipartUpload, "s3:CompleteMultipartUpload"); + let mut helper = + OperationHelper::new(&req, EventName::ObjectCreatedCompleteMultipartUpload, "s3:CompleteMultipartUpload"); let input = req.input; let CompleteMultipartUploadInput { multipart_upload, @@ -698,6 +699,7 @@ impl S3 for FS { let mpu_key = key.clone(); let mpu_version = obj_info.version_id.map(|v| v.to_string()); let mpu_version_clone = mpu_version.clone(); + let mpu_version_for_event = mpu_version.clone(); tokio::spawn(async move { manager .invalidate_cache_versioned(&mpu_bucket, &mpu_key, mpu_version_clone.as_deref()) @@ -782,12 +784,19 @@ impl S3 for FS { if dsc.replicate_any() { warn!("need multipart replication"); - schedule_replication(obj_info, store, dsc, ReplicationType::Object).await; + schedule_replication(obj_info.clone(), store, dsc, ReplicationType::Object).await; } info!( "TDD: About to return S3Response with output: SSE={:?}, KMS={:?}", output.server_side_encryption, output.ssekms_key_id ); + + // Set object info for event notification + helper = helper.object(obj_info.clone()); + if let Some(version_id) = &mpu_version_for_event { + helper = helper.version_id(version_id.clone()); + } + let helper_result = Ok(S3Response::new(helper_output)); let _ = helper.complete(&helper_result); Ok(S3Response::new(output))