From d03262f5902d73add4af4bcba33d148383624604 Mon Sep 17 00:00:00 2001 From: Simon Wicky Date: Thu, 18 Dec 2025 16:52:12 +0100 Subject: [PATCH] fix credential db locking --- common/credential-storage/src/backends/sqlite.rs | 7 +++++-- common/credential-storage/src/persistent_storage/mod.rs | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/common/credential-storage/src/backends/sqlite.rs b/common/credential-storage/src/backends/sqlite.rs index d196cad049..459085e7c9 100644 --- a/common/credential-storage/src/backends/sqlite.rs +++ b/common/credential-storage/src/backends/sqlite.rs @@ -39,8 +39,11 @@ impl SqliteEcashTicketbookManager { Ok(()) } - pub(crate) async fn begin_storage_tx(&self) -> Result, sqlx::Error> { - self.connection_pool.begin().await + /// Starts a write (IMMEDIATE) transaction, to prevent issue when upgrading from a read one to a write one + pub(crate) async fn begin_storage_write_tx( + &self, + ) -> Result, sqlx::Error> { + self.connection_pool.begin_with("BEGIN IMMEDIATE").await } pub(crate) async fn insert_pending_ticketbook( diff --git a/common/credential-storage/src/persistent_storage/mod.rs b/common/credential-storage/src/persistent_storage/mod.rs index b3302983ee..dab13395b5 100644 --- a/common/credential-storage/src/persistent_storage/mod.rs +++ b/common/credential-storage/src/persistent_storage/mod.rs @@ -243,7 +243,7 @@ impl Storage for PersistentStorage { tickets: u32, ) -> Result, Self::StorageError> { let deadline = ecash_today().ecash_date(); - let mut tx = self.storage_manager.begin_storage_tx().await?; + let mut tx = self.storage_manager.begin_storage_write_tx().await?; // we don't want ticketbooks with expiration in the past let Some(raw) =