diff --git a/src/meta-srv/src/election/postgres.rs b/src/meta-srv/src/election/postgres.rs index ac18c74da571..787f3023bc61 100644 --- a/src/meta-srv/src/election/postgres.rs +++ b/src/meta-srv/src/election/postgres.rs @@ -733,7 +733,8 @@ mod tests { use tokio_postgres::{Client, NoTls}; use super::*; - use crate::{election::CANDIDATE_KEEP_ALIVE_INTERVAL_SECS, error::PostgresExecutionSnafu}; + use crate::election::CANDIDATE_KEEP_ALIVE_INTERVAL_SECS; + use crate::error::PostgresExecutionSnafu; async fn create_postgres_client(table_name: Option<&str>) -> Result { let endpoint = env::var("GT_POSTGRES_ENDPOINTS").unwrap_or_default(); diff --git a/src/meta-srv/src/metasrv.rs b/src/meta-srv/src/metasrv.rs index 19deceb1a01a..f258333b73eb 100644 --- a/src/meta-srv/src/metasrv.rs +++ b/src/meta-srv/src/metasrv.rs @@ -494,23 +494,20 @@ impl Metasrv { let node_info = self.node_info(); let _handle = common_runtime::spawn_global(async move { while started.load(Ordering::Relaxed) { - loop { - let res = election.register_candidate(&node_info).await; - if let Err(e) = res { - warn!(e; "Metasrv register candidate error"); - continue; - } + if let Err(e) = election.register_candidate(&node_info).await { + warn!(e; "Metasrv register candidate error"); + } else { break; } - loop { - let mut keep_alive_interval = tokio::time::interval( - Duration::from_secs(CANDIDATE_KEEP_ALIVE_INTERVAL_SECS), - ); - keep_alive_interval.tick().await; - let res = election.candidate_keep_alive(&node_info).await; - if let Err(e) = res { - warn!(e; "Metasrv keep lease error"); - } + } + while started.load(Ordering::Relaxed) { + let mut keep_alive_interval = tokio::time::interval(Duration::from_secs( + CANDIDATE_KEEP_ALIVE_INTERVAL_SECS, + )); + keep_alive_interval.tick().await; + let res = election.candidate_keep_alive(&node_info).await; + if let Err(e) = res { + warn!(e; "Metasrv keep lease error"); } } });