mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-01 17:58:22 +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:
@@ -406,6 +406,25 @@ where
|
||||
Ok(data)
|
||||
}
|
||||
|
||||
pub(crate) async fn read_config_limited_preserve_empty<S>(api: Arc<S>, file: &str, max_bytes: usize) -> Result<Vec<u8>>
|
||||
where
|
||||
S: EcstoreObjectIO,
|
||||
{
|
||||
let (data, _obj) = read_config_limited_preserve_empty_with_metadata(api, file, max_bytes).await?;
|
||||
Ok(data)
|
||||
}
|
||||
|
||||
pub(crate) async fn read_config_limited_preserve_empty_with_metadata<S>(
|
||||
api: Arc<S>,
|
||||
file: &str,
|
||||
max_bytes: usize,
|
||||
) -> Result<(Vec<u8>, ObjectInfo)>
|
||||
where
|
||||
S: EcstoreObjectIO,
|
||||
{
|
||||
read_config_with_metadata_inner(api, file, &ObjectOptions::default(), true, Some(max_bytes)).await
|
||||
}
|
||||
|
||||
/// Read an existing config object without treating an empty payload as absent.
|
||||
/// Callers that validate their own payload format need to distinguish corruption
|
||||
/// from `ConfigNotFound`.
|
||||
|
||||
Reference in New Issue
Block a user