From 2b45d9e5ceffb7857394cbfe0f27a68183c93039 Mon Sep 17 00:00:00 2001 From: WenyXu Date: Mon, 24 Jun 2024 06:19:41 +0000 Subject: [PATCH] feat: use interval instead of sleep --- src/meta-srv/src/region/supervisor.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/meta-srv/src/region/supervisor.rs b/src/meta-srv/src/region/supervisor.rs index d26a3205adee..4159124158c7 100644 --- a/src/meta-srv/src/region/supervisor.rs +++ b/src/meta-srv/src/region/supervisor.rs @@ -28,6 +28,7 @@ use common_time::util::current_time_millis; use snafu::{ensure, OptionExt, ResultExt}; use store_api::storage::RegionId; use tokio::sync::mpsc::{Receiver, Sender}; +use tokio::time::{interval, MissedTickBehavior}; use super::failure_detector::RegionFailureDetector; use crate::error::{self, Result}; @@ -101,12 +102,14 @@ impl RegionSupervisorTicker { let sender = self.sender.clone(); let tick_interval = self.tick_interval; let ticker_loop = tokio::spawn(async move { + let mut interval = interval(tick_interval); + interval.set_missed_tick_behavior(MissedTickBehavior::Skip); if let Err(err) = sender.send(Event::Clear).await { warn!(err; "EventReceiver is dropped, failed to send Event::Clear"); return; } loop { - tokio::time::sleep(tick_interval).await; + interval.tick().await; if let Err(err) = sender.send(Event::Tick).await { warn!(err; "EventReceiver is dropped, tick loop is stopped"); break;