@@ -8,7 +8,7 @@ use std::time::Duration;
8
8
use std:: { collections:: HashMap , path:: PathBuf } ;
9
9
use tokio:: {
10
10
signal:: unix:: { signal, SignalKind } ,
11
- sync:: oneshot ,
11
+ sync:: watch ,
12
12
task:: JoinSet ,
13
13
} ;
14
14
@@ -244,6 +244,8 @@ async fn main() -> StdResult<()> {
244
244
root_logger. clone ( ) ,
245
245
) ;
246
246
247
+ let ( stop_tx, stop_rx) = watch:: channel ( ( ) ) ;
248
+
247
249
let mut join_set = JoinSet :: new ( ) ;
248
250
join_set. spawn ( async move {
249
251
state_machine
@@ -269,17 +271,17 @@ async fn main() -> StdResult<()> {
269
271
}
270
272
} ) ;
271
273
272
- let ( metrics_server_shutdown_tx, metrics_server_shutdown_rx) = oneshot:: channel ( ) ;
273
274
if config. enable_metrics_server {
274
275
let metrics_logger = root_logger. clone ( ) ;
276
+ let stop_rx_clone = stop_rx. clone ( ) ;
275
277
join_set. spawn ( async move {
276
278
MetricsServer :: new (
277
279
& config. metrics_server_ip ,
278
280
config. metrics_server_port ,
279
281
metrics_service,
280
282
metrics_logger. clone ( ) ,
281
283
)
282
- . start ( metrics_server_shutdown_rx )
284
+ . start ( stop_rx_clone )
283
285
. await
284
286
. map_err ( |e| anyhow ! ( e) )
285
287
. map ( |_| None )
@@ -320,9 +322,9 @@ async fn main() -> StdResult<()> {
320
322
None => None ,
321
323
} ;
322
324
323
- metrics_server_shutdown_tx
325
+ stop_tx
324
326
. send ( ( ) )
325
- . map_err ( |e| anyhow ! ( "Metrics server shutdown signal could not be sent: {e:?}" ) ) ?;
327
+ . map_err ( |e| anyhow ! ( "Stop signal could not be sent: {e:?}" ) ) ?;
326
328
327
329
join_set. shutdown ( ) . await ;
328
330
0 commit comments