From f57bfbcd0822e342293ba022663edbb37c75f959 Mon Sep 17 00:00:00 2001 From: Christopher Angelo Date: Tue, 16 Dec 2025 03:54:51 +0700 Subject: [PATCH] log & optimize mqtt reconnect --- src-tauri/src/mqtt.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/mqtt.rs b/src-tauri/src/mqtt.rs index f6aa620..117ae49 100644 --- a/src-tauri/src/mqtt.rs +++ b/src-tauri/src/mqtt.rs @@ -281,13 +281,18 @@ pub fn run_loop(e: EventLoop, ct: CancellationToken) -> tokio::task::JoinHandle< } async fn run_loop_inner(mut e: EventLoop, ct: CancellationToken) { + let mut was_disconnected = false; let mut retry_strategy = generate_default_backoff(); loop { select! { e = e.poll() => { if e.is_ok() { - retry_strategy = generate_default_backoff(); + if was_disconnected { + info!("MQTT reconnected!"); + retry_strategy = generate_default_backoff(); + was_disconnected = false; + } continue; } @@ -300,8 +305,9 @@ async fn run_loop_inner(mut e: EventLoop, ct: CancellationToken) { e => error!("MQTT connection error occurred - {e:?}") } + was_disconnected = true; let sleep_time = retry_strategy.next().unwrap(); - error!("Waiting for {} to retry poll", sleep_time.as_secs()); + error!("Waiting for {} secs to retry poll", sleep_time.as_secs()); tokio::time::sleep(sleep_time).await; } _ = ct.cancelled() => { @@ -313,5 +319,5 @@ async fn run_loop_inner(mut e: EventLoop, ct: CancellationToken) { } fn generate_default_backoff() -> ExponentialFactorBackoff { - ExponentialFactorBackoff::from_millis(5_000, 1.5).max_delay(Duration::from_secs(60)) + ExponentialFactorBackoff::from_millis(5_000, 2.0).max_delay(Duration::from_secs(60)) } -- knotmirror 0.0.1