From 366d386dbb3c33cd64587ec87c1f4ade3fbc26aa Mon Sep 17 00:00:00 2001 From: "Joseph T. Lyons" Date: Tue, 2 Jan 2024 21:47:28 -0500 Subject: [PATCH] Add debounce time back to telemetry queue --- crates/client2/src/telemetry.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/crates/client2/src/telemetry.rs b/crates/client2/src/telemetry.rs index 02dcf9842f..789b627fb0 100644 --- a/crates/client2/src/telemetry.rs +++ b/crates/client2/src/telemetry.rs @@ -28,6 +28,7 @@ struct TelemetryState { app_metadata: AppMetadata, architecture: &'static str, clickhouse_events_queue: Vec, + flush_clickhouse_events_task: Option>, log_file: Option, is_staff: Option, first_event_datetime: Option>, @@ -124,6 +125,12 @@ const MAX_QUEUE_LEN: usize = 1; #[cfg(not(debug_assertions))] const MAX_QUEUE_LEN: usize = 50; +#[cfg(debug_assertions)] +const DEBOUNCE_INTERVAL: Duration = Duration::from_secs(1); + +#[cfg(not(debug_assertions))] +const DEBOUNCE_INTERVAL: Duration = Duration::from_secs(60 * 5); + impl Telemetry { pub fn new(client: Arc, cx: &mut AppContext) -> Arc { let release_channel = if cx.has_global::() { @@ -144,6 +151,7 @@ impl Telemetry { metrics_id: None, session_id: None, clickhouse_events_queue: Default::default(), + flush_clickhouse_events_task: Default::default(), log_file: None, is_staff: None, first_event_datetime: None, @@ -424,6 +432,13 @@ impl Telemetry { if immediate_flush || state.clickhouse_events_queue.len() >= MAX_QUEUE_LEN { drop(state); self.flush_clickhouse_events(); + } else { + let this = self.clone(); + let executor = self.executor.clone(); + state.flush_clickhouse_events_task = Some(self.executor.spawn(async move { + executor.timer(DEBOUNCE_INTERVAL).await; + this.flush_clickhouse_events(); + })); } } } @@ -444,6 +459,7 @@ impl Telemetry { let mut state = self.state.lock(); state.first_event_datetime = None; let mut events = mem::take(&mut state.clickhouse_events_queue); + state.flush_clickhouse_events_task.take(); drop(state); let this = self.clone();