feat: respect sigterm
Some checks failed
continuous-integration/drone/push Build is failing

Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
2024-11-19 16:40:44 +01:00
parent ff350f9193
commit d51716893f
2 changed files with 85 additions and 82 deletions

View File

@@ -1,6 +1,7 @@
use futures::stream::FuturesUnordered;
use futures_util::StreamExt;
use std::{fmt::Display, sync::Arc};
use tokio::signal::unix::{signal, SignalKind};
use tokio_util::sync::CancellationToken;
@@ -156,6 +157,9 @@ impl Mad {
_ = tokio::signal::ctrl_c() => {
error_tx.send(CompletionResult { res: Ok(()) , name }).await
}
_ = signal_unix_terminate() => {
error_tx.send(CompletionResult { res: Ok(()) , name }).await
}
}
});
}
@@ -209,6 +213,11 @@ impl Mad {
}
}
async fn signal_unix_terminate() {
let mut sigterm = signal(SignalKind::terminate()).expect("Failed to bind SIGTERM handler");
sigterm.recv().await;
}
#[async_trait::async_trait]
pub trait Component {
fn name(&self) -> Option<String> {