diff --git a/crates/storage/libmdbx-rs/src/txn_manager.rs b/crates/storage/libmdbx-rs/src/txn_manager.rs index 57e41e4592..a31e4f3963 100644 --- a/crates/storage/libmdbx-rs/src/txn_manager.rs +++ b/crates/storage/libmdbx-rs/src/txn_manager.rs @@ -4,7 +4,7 @@ use crate::{ CommitLatency, }; use std::{ - ptr, + fmt, ptr, sync::mpsc::{sync_channel, Receiver, SyncSender}, }; @@ -19,6 +19,18 @@ pub(crate) enum TxnManagerMessage { Commit { tx: TxnPtr, sender: SyncSender> }, } +impl fmt::Debug for TxnManagerMessage { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Begin { parent, flags, sender: _ } => { + f.debug_struct("Begin").field("parent", parent).field("flags", flags).finish() + } + Self::Abort { tx, sender: _ } => f.debug_struct("Abort").field("tx", tx).finish(), + Self::Commit { tx, sender: _ } => f.debug_struct("Commit").field("tx", tx).finish(), + } + } +} + /// Manages transactions by doing two things: /// - Opening, aborting, and committing transactions using [`TxnManager::send_message`] with the /// corresponding [`TxnManagerMessage`] @@ -55,7 +67,9 @@ impl TxnManager { let task = move || { let env = env; loop { - match rx.recv() { + let msg = rx.recv(); + tracing::debug!(target: "libmdbx::txn", ?msg, "txn-mngr received"); + match msg { Ok(msg) => match msg { TxnManagerMessage::Begin { parent, flags, sender } => { let _span =