fix(ecstore): distinguish active ILM target cleanup

This commit is contained in:
overtrue
2026-08-22 12:10:41 +08:00
parent c687f95260
commit fe2d166cd3
3 changed files with 35 additions and 12 deletions
+25 -7
View File
@@ -3284,22 +3284,40 @@ mod tests {
let record = validate_durable_ilm_record(&path, &data).expect("tier journal should validate");
let source_zero_receipt = store
.persist_decommission_durable_ilm_receipt_for_test(0, 2, &path, &record, false)
.await
.expect("source pool zero receipt should persist on the target");
store
.persist_decommission_durable_ilm_receipt_for_test(0, 1, &path, &record, false)
.await
.expect("source pool zero receipt may reach another active source first");
.expect("source pool zero receipt should persist on the other active source");
let source_one_receipt = store
.persist_decommission_durable_ilm_receipt_for_test(1, 2, &path, &record, false)
.persist_decommission_durable_ilm_receipt_for_test(1, 0, &path, &record, false)
.await
.expect("source pool one receipt should persist on the target");
.expect("source pool one receipt should persist on the other active source");
assert_ne!(
source_zero_receipt, source_one_receipt,
"active source runs must have distinct receipt paths"
);
let stats = recover_tier_delete_journal_entries(store.clone(), 100, None)
.await
.expect("cross-source receipts should not remove active source journals");
assert_eq!((stats.scanned, stats.deleted, stats.failed), (1, 1, 0));
for pool in &store.pools {
assert_eq!(
com::read_config(pool.clone(), &path)
.await
.expect("cross-source receipts alone must retain every journal copy"),
data
);
}
store
.persist_decommission_durable_ilm_receipt_for_test(0, 2, &path, &record, false)
.await
.expect("source pool zero receipt should persist on the target");
store
.persist_decommission_durable_ilm_receipt_for_test(1, 2, &path, &record, false)
.await
.expect("source pool one receipt should persist on the target");
let stats = recover_tier_delete_journal_entries(store.clone(), 100, None)
.await
.expect("multi-source tier journal recovery should complete");