From a9e284db95dc39d61c91089126bc8848d36fa4f7 Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Fri, 16 Aug 2024 03:06:07 -0400 Subject: windows: stop postgres if we started it --- src/bot.rs | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'src/bot.rs') diff --git a/src/bot.rs b/src/bot.rs index 836fb82..de31c73 100644 --- a/src/bot.rs +++ b/src/bot.rs @@ -396,9 +396,9 @@ fn after_handle(ctx: PoiseContext) -> BoxFuture<()> { pub async fn run() -> anyhow::Result<()> { #[cfg(all(windows, feature = "windows_autostart_postgres"))] - unsafe { - crate::windows_util::ensure_postgres_started()?; - }; + let started_pg = + tokio::task::spawn_blocking(|| unsafe { crate::windows_util::ensure_postgres_started() }) + .await??; let token = &CONFIG.discord.auth.token; @@ -414,16 +414,26 @@ pub async fn run() -> anyhow::Result<()> { let shard_manager = client.shard_manager.clone(); - tokio::spawn(async move { - tokio::signal::ctrl_c().await.unwrap(); - warn!("got ^C"); - - shard_manager.shutdown_all().await; - info!("shutdown"); + let run_handle = tokio::spawn(async move { + info!("connecting to discord"); + client.start().await.expect("running discord client"); }); - info!("starting bot"); - client.start().await?; + tokio::signal::ctrl_c().await?; + warn!("got ^C, gracefully halting discord"); + + shard_manager.shutdown_all().await; + run_handle.await?; + info!("discord shutdown"); + + #[cfg(all(windows, feature = "windows_autostart_postgres"))] + unsafe { + if started_pg { + log::info!("we started postgres, stopping it before shutdown"); + + tokio::task::spawn_blocking(|| crate::windows_util::shutdown_postgres()).await??; + } + } Ok(()) } -- cgit v1.3.1