Skip to content

Commit 56e8700

Browse files
committed
refactor(metric): use watch channel as stop signal in metric server
1 parent c60c37e commit 56e8700

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

internal/mithril-metric/src/server.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use axum::{
88
};
99
use slog::{error, info, warn, Logger};
1010
use std::sync::Arc;
11-
use tokio::sync::oneshot::Receiver;
11+
use tokio::sync::watch::Receiver;
1212

1313
use mithril_common::logging::LoggerExtensions;
1414
use mithril_common::StdResult;
@@ -93,9 +93,10 @@ impl<T: MetricsServiceExporter + 'static> MetricsServer<T> {
9393
.await?;
9494

9595
let serve_logger = self.logger.clone();
96+
let mut shutdown_rx = shutdown_rx;
9697
axum::serve(listener, app)
9798
.with_graceful_shutdown(async move {
98-
shutdown_rx.await.ok();
99+
shutdown_rx.changed().await.ok();
99100
warn!(
100101
serve_logger,
101102
"shutting down HTTP server after receiving signal"
@@ -112,7 +113,7 @@ mod tests {
112113
use anyhow::anyhow;
113114
use reqwest::StatusCode;
114115
use std::time::Duration;
115-
use tokio::{sync::oneshot, task::yield_now, time::sleep};
116+
use tokio::{sync::watch, task::yield_now, time::sleep};
116117

117118
use crate::helper::test_tools::TestLogger;
118119

@@ -135,7 +136,7 @@ mod tests {
135136
#[tokio::test]
136137
async fn test_metrics_server() {
137138
let logger = TestLogger::stdout();
138-
let (shutdown_tx, shutdown_rx) = oneshot::channel();
139+
let (shutdown_tx, shutdown_rx) = watch::channel(());
139140
let metrics_service = Arc::new(PseudoMetricsService::new());
140141
let metrics_server = Arc::new(MetricsServer::new(
141142
"0.0.0.0",

0 commit comments

Comments
 (0)