feat(scanner): coordinate usage and workload boundaries (#7093)

* test(scanner): wire usage and heal rebuild gates

* docs(scanner): define usage authority protocol

* docs(heal): clarify scanner and ecstore boundaries

* refactor(scanner): split metrics from contracts

* feat(scanner): use shared workload snapshots

* fix(ecstore): recheck capacity before decommission drain
This commit is contained in:
houseme
2026-09-03 17:02:43 +08:00
committed by GitHub
parent 3ab7a1921f
commit 0e6ee3bf62
57 changed files with 632 additions and 134 deletions
+1 -1
View File
@@ -53,7 +53,7 @@ hotpath-cpu = [
hotpath.workspace = true
async-trait.workspace = true
metrics.workspace = true
rustfs-scanner-contracts.workspace = true
rustfs-scanner-metrics.workspace = true
rustfs-config = { workspace = true, features = ["constants"] }
rustfs-replication.workspace = true
rustfs-storage-api.workspace = true
+1 -1
View File
@@ -62,7 +62,7 @@ const ERR_LIFECYCLE_EXPIRED_OBJECT_DELETE_MARKER_WITH_TAGS: &str =
const ERR_LIFECYCLE_RULE_MUST_HAVE_ACTION: &str = "Rule must have at least one of Expiration, Transition, NoncurrentVersionExpiration, NoncurrentVersionTransition, or DelMarkerExpiration";
const ERR_LIFECYCLE_PREFIX_FILTER_CONFLICT: &str = "Legacy Prefix and Filter cannot both be present in a lifecycle rule. Use Filter.Prefix instead of the top-level Prefix element.";
pub use rustfs_scanner_contracts::metrics::IlmAction;
pub use rustfs_scanner_metrics::metrics::IlmAction;
#[async_trait::async_trait]
pub trait RuleValidate {
+2 -2
View File
@@ -19,7 +19,7 @@ use time::OffsetDateTime;
use tracing::info;
use rustfs_replication::ReplicationStatusType;
use rustfs_scanner_contracts::metrics::IlmAction;
use rustfs_scanner_metrics::metrics::IlmAction;
use crate::object_lock;
use crate::{Event, Lifecycle, ObjectOpts};
@@ -197,7 +197,7 @@ mod tests {
use std::collections::HashMap;
use std::sync::Arc;
use rustfs_scanner_contracts::metrics::IlmAction;
use rustfs_scanner_metrics::metrics::IlmAction;
use s3s::dto::{
BucketLifecycleConfiguration, DefaultRetention, ExpirationStatus, LifecycleExpiration, LifecycleRule,
NoncurrentVersionExpiration, ObjectLockConfiguration, ObjectLockEnabled, ObjectLockRetentionMode, ObjectLockRule,
+1 -1
View File
@@ -21,4 +21,4 @@ mod tagging;
pub use core::*;
pub use evaluator::Evaluator;
pub use rustfs_replication::{ReplicationStatusType, VersionPurgeStatusType};
pub use rustfs_scanner_contracts::metrics::IlmAction;
pub use rustfs_scanner_metrics::metrics::IlmAction;