Skip to content

Commit 656dc1a

Browse files
committed
sentry - Application - graceful shutdown (Ctrl+C)
1 parent ac6945e commit 656dc1a

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

sentry/src/application.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,9 @@ impl<C: Locked + 'static> Application<C> {
183183
}
184184
});
185185

186-
let server = Server::bind(&socket_addr).serve(make_service);
186+
let server = Server::bind(&socket_addr)
187+
.serve(make_service)
188+
.with_graceful_shutdown(shutdown_signal(logger.clone()));
187189

188190
if let Err(e) = server.await {
189191
error!(&logger, "server error: {}", e; "main" => "run");
@@ -201,7 +203,10 @@ impl<C: Locked + 'static> Application<C> {
201203
});
202204

203205
// TODO: Find a way to redirect to HTTPS
204-
let mut server = Server::builder(listener).serve(make_service);
206+
let server = Server::builder(listener)
207+
.serve(make_service)
208+
.with_graceful_shutdown(shutdown_signal(logger.clone()));
209+
tokio::pin!(server);
205210

206211
while let Err(e) = (&mut server).await {
207212
// This is usually caused by trying to connect on HTTP instead of HTTPS
@@ -273,6 +278,16 @@ pub struct Auth {
273278
pub chain: primitives::Chain,
274279
}
275280

281+
/// A Ctrl+C signal to gracefully shutdown the server
282+
async fn shutdown_signal(logger: Logger) {
283+
// Wait for the Ctrl+C signal
284+
tokio::signal::ctrl_c()
285+
.await
286+
.expect("failed to install CTRL+C signal handler");
287+
288+
info!(&logger, "Received Ctrl+C signal. Shutting down..")
289+
}
290+
276291
#[cfg(test)]
277292
mod test {
278293
use serde_json::json;

0 commit comments

Comments
 (0)