From 9b67eb0e77e848edd342f6007c77faec9bf89c9e Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Mon, 28 Jul 2025 12:49:28 +0300 Subject: [PATCH] core: Fix transaction cleanup in Connection::close() --- core/lib.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/lib.rs b/core/lib.rs index d1e17b2f3..d222f8982 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -1114,6 +1114,26 @@ impl Connection { return Ok(()); } self.closed.set(true); + + match self.transaction_state.get() { + TransactionState::Write { schema_did_change } => { + let _result = self.pager.borrow().end_tx( + true, // rollback = true for close + schema_did_change, + self, + self.wal_checkpoint_disabled.get(), + ); + self.transaction_state.set(TransactionState::None); + } + TransactionState::Read => { + let _result = self.pager.borrow().end_read_tx(); + self.transaction_state.set(TransactionState::None); + } + TransactionState::None => { + // No active transaction + } + } + self.pager .borrow() .checkpoint_shutdown(self.wal_checkpoint_disabled.get())