mirror of
https://github.com/rustfs/rustfs.git
synced 2026-10-03 20:20:29 +00:00
test(storage): verify rejected rollback inspection on real disks (#8331)
This commit is contained in:
@@ -9887,9 +9887,20 @@ mod tests {
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[tokio::test(flavor = "current_thread")]
|
||||
#[serial_test::serial]
|
||||
#[serial_test::serial(capacity_dirty_scope)]
|
||||
async fn rename_rollback_incomplete_preserves_overwrite_data_dirs_and_staging() {
|
||||
let heal_sender_state = match rustfs_heal_contracts::heal_channel::get_heal_channel_sender() {
|
||||
None => "not_initialized",
|
||||
Some(sender) => {
|
||||
assert!(sender.is_closed(), "the global heal receiver must not admit rollback inspection");
|
||||
"closed"
|
||||
}
|
||||
};
|
||||
// Spawned rollback coordinators share this current-thread recorder.
|
||||
let recorder = crate::test_metrics::CapturingRecorder::default();
|
||||
let _recorder_guard = metrics::set_default_local_recorder(&recorder);
|
||||
temp_env::async_with_vars([(ENV_RUSTFS_PUT_RENAME_EARLY_ACK_ENABLE, Some("true"))], async {
|
||||
for fault in [
|
||||
rollback_fault_injection::Fault::Io,
|
||||
@@ -9941,6 +9952,8 @@ mod tests {
|
||||
let _rename_fault = rename_fault_injection::fail_rename_on(&object, &[2, 3]);
|
||||
let _undo_fault = rollback_fault_injection::arm(&object, 0, fault);
|
||||
let receipt = RenameRollbackReceipt::default();
|
||||
let rejected_inspections_before =
|
||||
recorder.counter_value("rustfs_rename_rollback_inspection_total", &[("admission", "failed")]);
|
||||
assert!(
|
||||
SetDisks::rename_data_owned_with_fence(
|
||||
&disks,
|
||||
@@ -9954,6 +9967,16 @@ mod tests {
|
||||
.is_err()
|
||||
);
|
||||
assert!(receipt.is_incomplete());
|
||||
let rejected_inspections =
|
||||
recorder.counter_value("rustfs_rename_rollback_inspection_total", &[("admission", "failed")]);
|
||||
assert_eq!(
|
||||
rejected_inspections,
|
||||
rejected_inspections_before + 1,
|
||||
"the actual rollback inspection must retain its rejected admission evidence"
|
||||
);
|
||||
eprintln!(
|
||||
"rollback inspection sender={heal_sender_state}, fault={fault:?}, early_ack={early_ack}, failed_admission_total={rejected_inspections}"
|
||||
);
|
||||
if !matches!(fault, rollback_fault_injection::Fault::Io) {
|
||||
assert!(
|
||||
matches!(
|
||||
|
||||
Reference in New Issue
Block a user