From 3179391cfdc3ef8592aa6cc3868da53426b81262 Mon Sep 17 00:00:00 2001 From: Emilia Hane Date: Wed, 28 Feb 2024 12:22:37 +0100 Subject: [PATCH] fix(storage): add active txn before sending result (#6840) --- crates/storage/libmdbx-rs/src/txn_manager.rs | 26 +++++++++----------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/crates/storage/libmdbx-rs/src/txn_manager.rs b/crates/storage/libmdbx-rs/src/txn_manager.rs index cc00b7111f..99328457cd 100644 --- a/crates/storage/libmdbx-rs/src/txn_manager.rs +++ b/crates/storage/libmdbx-rs/src/txn_manager.rs @@ -63,31 +63,29 @@ impl TxnManager { Ok(msg) => match msg { TxnManagerMessage::Begin { parent, flags, sender } => { let mut txn: *mut ffi::MDBX_txn = ptr::null_mut(); - sender - .send( - mdbx_result(unsafe { - ffi::mdbx_txn_begin_ex( - env.0, - parent.0, - flags, - &mut txn, - ptr::null_mut(), - ) - }) - .map(|_| TxnPtr(txn)), + let res = mdbx_result(unsafe { + ffi::mdbx_txn_begin_ex( + env.0, + parent.0, + flags, + &mut txn, + ptr::null_mut(), ) - .unwrap(); + }) + .map(|_| TxnPtr(txn)); #[cfg(feature = "read-tx-timeouts")] { use crate::transaction::TransactionKind; - if flags == crate::transaction::RO::OPEN_FLAGS { + if res.is_ok() && flags == crate::transaction::RO::OPEN_FLAGS { if let Some(read_transactions) = &read_transactions { read_transactions.add_active(txn); } } } + + sender.send(res).unwrap(); } TxnManagerMessage::Abort { tx, sender } => { #[cfg(feature = "read-tx-timeouts")]