From fbc457231c3fac361cb7576d6d184ea601dc0a38 Mon Sep 17 00:00:00 2001
From: Georgy Moshkin <gmoshkin@picodata.io>
Date: Fri, 16 Dec 2022 17:22:14 +0300
Subject: [PATCH] fix(governor): used to loop infinitely sometimes

---
 src/governor/mod.rs | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/governor/mod.rs b/src/governor/mod.rs
index eb3454bcf9..2cafdc52ac 100644
--- a/src/governor/mod.rs
+++ b/src/governor/mod.rs
@@ -112,6 +112,11 @@ impl Loop {
                 .await;
                 if let Err(e) = res {
                     tlog!(Warning, ::std::concat!("failed ", $desc, ": {}"), e, $(; $($kv)*)?);
+                    // TODO: better api needed in library
+                    if waker.has_changed() {
+                        // This resolves immediately
+                        _ = waker.changed().await;
+                    }
                     _ = waker.changed().timeout(Loop::RETRY_TIMEOUT).await;
                     return Continue;
                 }
-- 
GitLab