mirror of
https://github.com/rustfs/rustfs.git
synced 2026-10-03 20:20:29 +00:00
fix: skip usage observation metadata recreation
This commit is contained in:
@@ -1296,9 +1296,14 @@ pub(super) fn classify_get_size_failure(item: &ScannerItem, err: &StorageError)
|
||||
return GetSizeFailureAction::Skip;
|
||||
}
|
||||
|
||||
let metadata_object = item.metadata_object_path();
|
||||
if is_scanner_owned_usage_observation(&item.bucket, &metadata_object) {
|
||||
return GetSizeFailureAction::Skip;
|
||||
}
|
||||
|
||||
if is_scanner_metadata_corrupt_error(err) {
|
||||
return GetSizeFailureAction::HealMetadata {
|
||||
object: item.metadata_object_path(),
|
||||
object: metadata_object,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -583,6 +583,32 @@ fn test_classify_get_size_failure_marks_metadata_heal_object_path() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_classify_get_size_failure_skips_scanner_owned_usage_observation() {
|
||||
let temp_dir = std::env::temp_dir();
|
||||
let file_type = std::fs::metadata(&temp_dir)
|
||||
.expect("temp dir metadata should be readable")
|
||||
.file_type();
|
||||
let item = ScannerItem {
|
||||
path: temp_dir.join("internal/buckets/.usage.observed.json/xl.meta").to_string_lossy().to_string(),
|
||||
bucket: crate::RUSTFS_META_BUCKET.to_string(),
|
||||
prefix: crate::data_usage_define::DATA_USAGE_OBSERVED_OBJ_NAME_PATH.to_string(),
|
||||
object_name: "xl.meta".to_string(),
|
||||
file_type,
|
||||
lifecycle: None,
|
||||
object_lock: None,
|
||||
replication: None,
|
||||
heal_enabled: false,
|
||||
heal_bitrot: false,
|
||||
debug: false,
|
||||
};
|
||||
let err = StorageError::other(format!("{}: corrupt metadata", crate::scanner_io::SCANNER_METADATA_CORRUPT_ERROR));
|
||||
|
||||
let action = classify_get_size_failure(&item, &err);
|
||||
|
||||
assert_eq!(action, GetSizeFailureAction::Skip);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_classify_get_size_failure_records_transient_metadata_error_without_heal() {
|
||||
let temp_dir = std::env::temp_dir();
|
||||
|
||||
Reference in New Issue
Block a user