diff --git a/crates/ecstore/src/set_disk.rs b/crates/ecstore/src/set_disk.rs index d873dc7b5..e198554bb 100644 --- a/crates/ecstore/src/set_disk.rs +++ b/crates/ecstore/src/set_disk.rs @@ -1204,12 +1204,46 @@ impl ObjectIO for SetDisks { fi.is_latest = true; + if issue3031_diag_enabled() { + let online_success_count = online_disks.iter().filter(|disk| disk.is_some()).count(); + warn!( + target: "rustfs_ecstore::set_disk", + bucket = %bucket, + object = %object, + tmp_dir = %tmp_dir, + data_dir = ?fi.data_dir, + write_quorum, + online_success_count, + op_old_dir = ?op_old_dir, + "issue3031_put_object_commit_succeeded" + ); + } + Ok(ObjectInfo::from_file_info(&fi, bucket, object, opts.versioned || opts.version_suspended)) } .await; + if issue3031_diag_enabled() { + warn!( + target: "rustfs_ecstore::set_disk", + bucket = %bucket, + object = %object, + tmp_dir = %tmp_dir, + result = ?result.as_ref().map(|_| ()).map_err(|err| err.to_string()), + "issue3031_put_object_tmp_cleanup_start" + ); + } + if let Err(err) = self.delete_all(RUSTFS_META_TMP_BUCKET, &tmp_dir).await { warn!(tmp_dir = %tmp_dir, error = ?err, "failed to cleanup put_object temporary data"); + } else if issue3031_diag_enabled() { + warn!( + target: "rustfs_ecstore::set_disk", + bucket = %bucket, + object = %object, + tmp_dir = %tmp_dir, + "issue3031_put_object_tmp_cleanup_done" + ); } result diff --git a/crates/ecstore/src/set_disk/write.rs b/crates/ecstore/src/set_disk/write.rs index d8e7231de..38c52c76a 100644 --- a/crates/ecstore/src/set_disk/write.rs +++ b/crates/ecstore/src/set_disk/write.rs @@ -92,6 +92,34 @@ impl SetDisks { } } + if issue3031_diag_enabled() { + let success_count = errs.iter().filter(|err| err.is_none()).count(); + let failure_count = errs.len().saturating_sub(success_count); + let ignored_failure_count = errs + .iter() + .filter(|err| err.as_ref().is_some_and(|err| OBJECT_OP_IGNORED_ERRS.contains(err))) + .count(); + let data_dir_vote_count = data_dirs.iter().filter(|data_dir| data_dir.is_some()).count(); + let reduced_data_dir = Self::reduce_common_data_dir(&data_dirs, write_quorum); + warn!( + target: "rustfs_ecstore::set_disk", + src_bucket = %src_bucket, + src_object = %src_object, + dst_bucket = %dst_bucket, + dst_object = %dst_object, + write_quorum, + disk_count = errs.len(), + success_count, + failure_count, + ignored_failure_count, + data_dir_vote_count, + reduced_data_dir = ?reduced_data_dir, + errs = ?errs, + data_dirs = ?data_dirs, + "issue3031_rename_data_quorum_context" + ); + } + let mut futures = Vec::with_capacity(disks.len()); if let Some(ret_err) = reduce_write_quorum_errs(&errs, OBJECT_OP_IGNORED_ERRS, write_quorum) { // TODO: add concurrency @@ -128,6 +156,21 @@ impl SetDisks { } } + if issue3031_diag_enabled() { + warn!( + target: "rustfs_ecstore::set_disk", + src_bucket = %src_bucket, + src_object = %src_object, + dst_bucket = %dst_bucket, + dst_object = %dst_object, + write_quorum, + ret_err = %ret_err, + errs = ?errs, + data_dirs = ?data_dirs, + "issue3031_rename_data_quorum_failed" + ); + } + let _ = join_all(futures).await; return Err(ret_err); }