fix: explicitly close the database on account removal

This commit is contained in:
link2xt
2024-07-29 21:52:02 +00:00
parent 4ec5d12213
commit 0fceb270ca
2 changed files with 9 additions and 1 deletions

View File

@@ -166,6 +166,14 @@ impl Accounts {
.remove(&id)
.with_context(|| format!("no account with id {id}"))?;
ctx.stop_io().await;
// Explicitly close the database.
//
// Stopping I/O aborts the tasks that keep `Context` clones,
// but aborting the task does not immediately drops the future.
// To make sure the database file is closed
// and can be removed on Windows, we drop all the connections manually.
ctx.sql.close().await;
drop(ctx);
if let Some(cfg) = self.config.get_account(id) {

View File

@@ -126,7 +126,7 @@ impl Sql {
}
/// Closes all underlying Sqlite connections.
async fn close(&self) {
pub(crate) async fn close(&self) {
let _ = self.pool.write().await.take();
// drop closes the connection
}