fix(scanner): clear deleted bucket usage stats (#3822)

* fix(scanner): clear deleted bucket usage stats

* fix(scanner): preserve usage timestamp on bucket cleanup

---------

Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
This commit is contained in:
Henry Guo
2026-06-24 21:08:32 +08:00
committed by GitHub
parent 623fc801f1
commit 90f6371e29
5 changed files with 160 additions and 3 deletions
+3
View File
@@ -839,6 +839,9 @@ impl DefaultBucketUsecase {
.await
.map_err(ApiError::from)?;
rustfs_scanner::clear_dirty_usage_bucket(&input.bucket);
if let Err(err) = super::remove_bucket_usage_from_backend(store.clone(), &input.bucket).await {
warn!(bucket = %input.bucket, error = ?err, "failed to remove deleted bucket from data usage");
}
if let Err(err) = site_replication_delete_bucket_hook(&input.bucket, force).await {
warn!(bucket = %input.bucket, error = ?err, "site replication delete bucket hook failed");
+5 -1
View File
@@ -76,7 +76,7 @@ mod ecstore_config {
mod ecstore_data_usage {
pub(crate) use crate::storage::ecstore_data_usage::{
apply_bucket_usage_memory_overlay, load_data_usage_from_backend, record_bucket_object_delete_memory,
record_bucket_object_write_memory,
record_bucket_object_write_memory, remove_bucket_usage_from_backend,
};
}
@@ -603,6 +603,10 @@ pub(crate) async fn record_bucket_object_write_memory(bucket: &str, previous_cur
ecstore_data_usage::record_bucket_object_write_memory(bucket, previous_current_size, new_size).await;
}
pub(crate) async fn remove_bucket_usage_from_backend(store: Arc<ECStore>, bucket: &str) -> std::result::Result<(), Error> {
ecstore_data_usage::remove_bucket_usage_from_backend(store, bucket).await
}
pub(crate) fn is_all_buckets_not_found(errs: &[Option<DiskError>]) -> bool {
crate::storage::is_all_buckets_not_found(errs)
}
+1 -1
View File
@@ -101,7 +101,7 @@ pub(crate) mod ecstore_config {
pub(crate) mod ecstore_data_usage {
pub(crate) use rustfs_ecstore::api::data_usage::{
apply_bucket_usage_memory_overlay, load_data_usage_from_backend, record_bucket_object_delete_memory,
record_bucket_object_write_memory,
record_bucket_object_write_memory, remove_bucket_usage_from_backend,
};
}