mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-26 05:56:50 +00:00
fix(ecstore): preserve ILM state during pool decommission (#6369)
* fix(ecstore): migrate ILM metadata during decommission * fix(ecstore): verify ILM metadata before decommission * fix(ecstore): track ILM recovery across decommission * fix(ecstore): close ILM receipt recovery gaps * fix(ecstore): anchor decommission ILM receipts * fix(ecstore): re-export durable ILM checkpoint * fix(ecstore): avoid terminal receipt shadowing * fix(ecstore): harden durable ILM cursor receipts * fix(ecstore): repair durable ILM receipt recovery * test(ecstore): cover durable ILM recovery boundaries * test(ecstore): serialize multi-source ILM recovery * test(ecstore): compile multi-source ILM recovery * test(ecstore): isolate durable ILM scenario stack * fix(ecstore): preserve active ILM source journals * fix(ecstore): distinguish active ILM target cleanup * fix(ecstore): restore decommission test imports * fix(ecstore): drop removed decommission test import * fix(ecstore): remove duplicate decommission error helper * fix(ecstore): fence final decommission sweep * test(ecstore): cover final sweep cancel fence * fix(ecstore): fence decommission cancellation * fix(ecstore): remove redundant clone in test * fix(ecstore): keep manual transition progress compatible * fix(ecstore): restore decommission worker wrapper * fix(ecstore): restore decommission compile contracts * test(ecstore): adapt reload worker canceler
This commit is contained in:
@@ -37,7 +37,7 @@ use crate::bucket::lifecycle::{
|
||||
transition_transaction::{
|
||||
TransitionRemoteVersion, TransitionSourceIdentity, TransitionSourceVersionMode, TransitionTransaction,
|
||||
TransitionTransactionInit, TransitionTransactionState, delete_transition_transaction_record,
|
||||
save_transition_transaction_record,
|
||||
load_transition_transaction_record, save_transition_transaction_record,
|
||||
},
|
||||
};
|
||||
use crate::bucket::quota::reservation;
|
||||
@@ -4248,7 +4248,12 @@ fn record_transition_uploaded_save_attempt(transaction: &TransitionTransaction,
|
||||
|
||||
async fn delete_transition_transaction_if_available(api: Option<&Arc<ECStore>>, transaction_id: Uuid) -> Result<()> {
|
||||
if let Some(api) = api {
|
||||
return delete_transition_transaction_record(api.clone(), transaction_id).await;
|
||||
let transaction = match load_transition_transaction_record(api.clone(), transaction_id).await {
|
||||
Ok(transaction) => transaction,
|
||||
Err(Error::ConfigNotFound) => return Ok(()),
|
||||
Err(err) => return Err(err),
|
||||
};
|
||||
return delete_transition_transaction_record(api.clone(), &transaction).await;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user