From ad3519ebcbfaec661a4691f6a8726999038d6277 Mon Sep 17 00:00:00 2001 From: "Alex Chi Z." <4198311+skyzh@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:28:22 -0400 Subject: [PATCH] fix(pageserver): report synthetic size = 1 if all tls offloaded (#11648) ## Problem A quick workaround for https://github.com/neondatabase/neon/issues/11631 ## Summary of changes Report synthetic size == 1 if all timelines are offloaded. Signed-off-by: Alex Chi Z --- pageserver/src/consumption_metrics/metrics.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pageserver/src/consumption_metrics/metrics.rs b/pageserver/src/consumption_metrics/metrics.rs index a4bfe74e30..08ab69f349 100644 --- a/pageserver/src/consumption_metrics/metrics.rs +++ b/pageserver/src/consumption_metrics/metrics.rs @@ -263,7 +263,9 @@ where while let Some((tenant_id, tenant)) = tenants.next().await { let mut tenant_resident_size = 0; - for timeline in tenant.list_timelines() { + let timelines = tenant.list_timelines(); + let timelines_len = timelines.len(); + for timeline in timelines { let timeline_id = timeline.timeline_id; match TimelineSnapshot::collect(&timeline, ctx) { @@ -289,6 +291,11 @@ where tenant_resident_size += timeline.resident_physical_size(); } + if timelines_len == 0 { + // Force set it to 1 byte to avoid not being reported -- all timelines are offloaded. + tenant_resident_size = 1; + } + let snap = TenantSnapshot::collect(&tenant, tenant_resident_size); snap.to_metrics(tenant_id, Utc::now(), cache, &mut current_metrics); }