fix(admin): keep datausage live refresh stable (#4630)

fix(ecstore): keep fuller data usage overlay

Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
This commit is contained in:
Henry Guo
2026-07-10 09:17:35 +08:00
committed by GitHub
parent 7dc03603da
commit 24d0c09347
2 changed files with 96 additions and 1 deletions
+96
View File
@@ -1725,6 +1725,102 @@ mod tests {
);
}
#[tokio::test]
#[serial]
async fn scanner_snapshot_can_reduce_object_layer_refreshed_memory_usage() {
clear_usage_memory_cache_for_test().await;
let now = SystemTime::now();
replace_bucket_usage_memory_from_authoritative(
"bucket-a",
BucketUsageInfo {
objects_count: 100,
versions_count: 100,
size: 1_000,
..Default::default()
},
now,
)
.await;
let scanner_decrease = data_usage_info_for_test("bucket-a", 60, 600, now + Duration::from_secs(10));
replace_bucket_usage_memory_from_info(&scanner_decrease).await;
let mut response = scanner_decrease.clone();
apply_bucket_usage_memory_overlay(&mut response).await;
assert_eq!(response.objects_total_count, 60);
assert_eq!(response.objects_total_size, 600);
assert_eq!(
response
.buckets_usage
.get("bucket-a")
.map(|usage| (usage.objects_count, usage.size)),
Some((60, 600))
);
}
#[tokio::test]
#[serial]
async fn scanner_backend_snapshot_can_reduce_backend_memory_usage() {
clear_usage_memory_cache_for_test().await;
let now = SystemTime::now();
let complete_snapshot = data_usage_info_for_test("bucket-a", 100, 1_000, now);
replace_bucket_usage_memory_from_info(&complete_snapshot).await;
let scanner_decrease = data_usage_info_for_test("bucket-a", 60, 600, now + Duration::from_secs(10));
replace_bucket_usage_memory_from_info(&scanner_decrease).await;
let mut response = scanner_decrease.clone();
apply_bucket_usage_memory_overlay(&mut response).await;
assert_eq!(response.objects_total_count, 60);
assert_eq!(response.objects_total_size, 600);
assert_eq!(
response
.buckets_usage
.get("bucket-a")
.map(|usage| (usage.objects_count, usage.size)),
Some((60, 600))
);
}
#[tokio::test]
#[serial]
async fn authoritative_refresh_can_reduce_memory_usage() {
clear_usage_memory_cache_for_test().await;
let now = SystemTime::now();
let complete_snapshot = data_usage_info_for_test("bucket-a", 100, 1_000, now);
replace_bucket_usage_memory_from_info(&complete_snapshot).await;
replace_bucket_usage_memory_from_authoritative(
"bucket-a",
BucketUsageInfo {
objects_count: 60,
versions_count: 60,
size: 600,
..Default::default()
},
now + Duration::from_secs(10),
)
.await;
let mut response = data_usage_info_for_test("bucket-a", 60, 600, now + Duration::from_secs(10));
apply_bucket_usage_memory_overlay(&mut response).await;
assert_eq!(response.objects_total_count, 60);
assert_eq!(response.objects_total_size, 600);
assert_eq!(
response
.buckets_usage
.get("bucket-a")
.map(|usage| (usage.objects_count, usage.size)),
Some((60, 600))
);
}
#[tokio::test]
#[serial]
async fn scanner_sync_preserves_newer_memory_update() {
-1
View File
@@ -253,7 +253,6 @@ impl DefaultAdminUsecase {
replace_bucket_usage_memory_from_info(&info).await;
apply_bucket_usage_memory_overlay(&mut info).await;
Self::refresh_live_bucket_usage_for_data_usage_info(store.clone(), &mut info).await;
apply_bucket_usage_memory_overlay(&mut info).await;
let storage_info = StorageAdminApi::storage_info(store.as_ref()).await;