feat(lifecycle): improve ILM compatibility and scanner runtime config (#2534)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: houseme <4829346+houseme@users.noreply.github.com>
Co-authored-by: cxymds <Cxymds@qq.com>
This commit is contained in:
houseme
2026-04-16 18:28:03 +08:00
committed by GitHub
parent af93d2daba
commit 6ce24f3b63
26 changed files with 2672 additions and 527 deletions
+22
View File
@@ -446,6 +446,11 @@ impl ObjectInfo {
.replication_state_internal
.as_ref()
.and_then(|v| v.version_purge_status_internal.clone());
let replication_decision = fi
.replication_state_internal
.as_ref()
.map(|v| v.replicate_decision_str.clone())
.unwrap_or_default();
let mut replication_status = fi.replication_status();
if replication_status.is_empty()
@@ -542,6 +547,7 @@ impl ObjectInfo {
replication_status,
version_purge_status_internal,
version_purge_status,
replication_decision,
..Default::default()
}
}
@@ -1010,6 +1016,7 @@ pub struct ObjectInfoOrErr {
#[cfg(test)]
mod tests {
use super::*;
use rustfs_filemeta::ReplicationState;
#[test]
fn get_actual_size_prefers_actual_size_field() {
@@ -1059,6 +1066,21 @@ mod tests {
assert_eq!(info.get_actual_size().unwrap(), 77);
}
#[test]
fn from_file_info_preserves_replication_decision() {
let fi = rustfs_filemeta::FileInfo {
replication_state_internal: Some(ReplicationState {
replicate_decision_str: "arn=true;false;arn:replication::1:dest;rule-id".to_string(),
..Default::default()
}),
..Default::default()
};
let info = ObjectInfo::from_file_info(&fi, "bucket", "object", true);
assert_eq!(info.replication_decision, "arn=true;false;arn:replication::1:dest;rule-id");
}
#[test]
fn get_actual_size_uses_compressed_parts_actual_size_when_metadata_missing() {
let user_defined = {