From 4ccb0da242d813a8cd11aba38ae9a28f884fb1dc Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 30 Jun 2026 09:56:08 -0400 Subject: [PATCH] log progress --- .../src/job/backfill_user_summaries.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/crates/service/job/user_spend_analytics_job/src/job/backfill_user_summaries.rs b/crates/service/job/user_spend_analytics_job/src/job/backfill_user_summaries.rs index 6c09197c5b..97563ee0c2 100644 --- a/crates/service/job/user_spend_analytics_job/src/job/backfill_user_summaries.rs +++ b/crates/service/job/user_spend_analytics_job/src/job/backfill_user_summaries.rs @@ -28,6 +28,8 @@ use crate::job::reengagement_score::reengagement_score; use crate::job_dependencies::JobDependencies; const DAYS_PER_WEEK: i64 = 7; +/// Emit a progress line every N users during the (long, otherwise silent) summaries pass. +const SUMMARY_LOG_EVERY: u64 = 200; /// Recompute `user_spend_summaries` for every (user, namespace) with spend /// activity. Window/cadence/score fields are time-relative, so all users are @@ -66,8 +68,10 @@ pub async fn backfill_user_summaries(deps: &JobDependencies) { } async fn backfill_namespace(deps: &JobDependencies, namespace: PaymentsNamespace, now: DateTime) -> u64 { + info!("User-summaries: backfilling namespace '{}'…", namespace.to_str()); let mut after_user_token = String::new(); let mut upserted = 0u64; + let mut processed = 0u64; loop { if deps.application_shutdown.get() { @@ -115,12 +119,23 @@ async fn backfill_namespace(deps: &JobDependencies, namespace: PaymentsNamespace tokio::time::sleep(deps.error_recovery).await; } } + processed += 1; + if processed % SUMMARY_LOG_EVERY == 0 { + info!( + " user-summaries [{}]: {processed} processed, {upserted} upserted so far…", + namespace.to_str(), + ); + } tokio::time::sleep(deps.query_delay).await; } after_user_token = user_tokens.last().expect("non-empty page").as_str().to_string(); } + info!( + "User-summaries: namespace '{}' done — {processed} processed, {upserted} upserted.", + namespace.to_str(), + ); upserted }