From a40745bab9090cb232aeeca90b19fb16c56fd605 Mon Sep 17 00:00:00 2001 From: Bjerg Date: Mon, 6 Feb 2023 12:30:49 +0100 Subject: [PATCH] feat: add `db.commit` metric (#1188) --- Cargo.lock | 2 ++ crates/storage/db/Cargo.toml | 3 +++ crates/storage/db/src/implementation/mdbx/tx.rs | 8 ++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 76f28eecb..84fd27d13 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4103,6 +4103,7 @@ dependencies = [ "futures", "heapless", "iai", + "metrics", "modular-bitfield", "page_size", "parity-scale-codec", @@ -4707,6 +4708,7 @@ dependencies = [ "reth-eth-wire", "reth-executor", "reth-interfaces", + "reth-metrics-derive", "reth-primitives", "reth-provider", "reth-rlp", diff --git a/crates/storage/db/Cargo.toml b/crates/storage/db/Cargo.toml index 5638755c3..9f516fb12 100644 --- a/crates/storage/db/Cargo.toml +++ b/crates/storage/db/Cargo.toml @@ -29,6 +29,9 @@ secp256k1 = { version = "0.24.2", default-features = false, features = [ ], optional = true } modular-bitfield = "0.11.2" +# metrics +metrics = "0.20.1" + # misc bytes = "1.2.1" page_size = "0.4.2" diff --git a/crates/storage/db/src/implementation/mdbx/tx.rs b/crates/storage/db/src/implementation/mdbx/tx.rs index d40ddae42..bfb1cd5d6 100644 --- a/crates/storage/db/src/implementation/mdbx/tx.rs +++ b/crates/storage/db/src/implementation/mdbx/tx.rs @@ -7,8 +7,9 @@ use crate::{ transaction::{DbTx, DbTxGAT, DbTxMut, DbTxMutGAT}, Error, }; +use metrics::histogram; use reth_libmdbx::{EnvironmentKind, Transaction, TransactionKind, WriteFlags, RW}; -use std::marker::PhantomData; +use std::{marker::PhantomData, time::Instant}; /// Wrapper for the libmdbx transaction. #[derive(Debug)] @@ -68,7 +69,10 @@ impl<'tx, K: TransactionKind, E: EnvironmentKind> DbTx<'tx> for Tx<'tx, K, E> { } fn commit(self) -> Result { - self.inner.commit().map_err(|e| Error::Commit(e.into())) + let start = Instant::now(); + let result = self.inner.commit().map_err(|e| Error::Commit(e.into())); + histogram!("tx.commit", start.elapsed()); + result } fn get(&self, key: T::Key) -> Result::Value>, Error> {