From 83ef1f7641d5ff696441875882e8b7d0d4a32bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien?= <3535019+leruaa@users.noreply.github.com> Date: Tue, 25 Jun 2024 23:30:12 +0200 Subject: [PATCH] Add a metric for blob transactions nonce gaps (#9106) --- crates/transaction-pool/src/metrics.rs | 2 ++ crates/transaction-pool/src/pool/txpool.rs | 2 ++ etc/grafana/dashboards/reth-mempool.json | 17 +++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/crates/transaction-pool/src/metrics.rs b/crates/transaction-pool/src/metrics.rs index 90d46854d43c..d61816831294 100644 --- a/crates/transaction-pool/src/metrics.rs +++ b/crates/transaction-pool/src/metrics.rs @@ -104,4 +104,6 @@ pub struct AllTransactionsMetrics { pub(crate) all_transactions_by_id: Gauge, /// Number of all transactions by all senders in the pool pub(crate) all_transactions_by_all_senders: Gauge, + /// Number of blob transactions nonce gaps. + pub(crate) blob_transactions_nonce_gaps: Counter, } diff --git a/crates/transaction-pool/src/pool/txpool.rs b/crates/transaction-pool/src/pool/txpool.rs index 48048412eba0..3e22bb9ca99b 100644 --- a/crates/transaction-pool/src/pool/txpool.rs +++ b/crates/transaction-pool/src/pool/txpool.rs @@ -1335,11 +1335,13 @@ impl AllTransactions { if let Some(ancestor) = ancestor { let Some(ancestor_tx) = self.txs.get(&ancestor) else { // ancestor tx is missing, so we can't insert the new blob + self.metrics.blob_transactions_nonce_gaps.increment(1); return Err(InsertErr::BlobTxHasNonceGap { transaction: Arc::new(new_blob_tx) }) }; if ancestor_tx.state.has_nonce_gap() { // the ancestor transaction already has a nonce gap, so we can't insert the new // blob + self.metrics.blob_transactions_nonce_gaps.increment(1); return Err(InsertErr::BlobTxHasNonceGap { transaction: Arc::new(new_blob_tx) }) } diff --git a/etc/grafana/dashboards/reth-mempool.json b/etc/grafana/dashboards/reth-mempool.json index 092faaccb878..90fe5ba8d2d3 100644 --- a/etc/grafana/dashboards/reth-mempool.json +++ b/etc/grafana/dashboards/reth-mempool.json @@ -1719,6 +1719,23 @@ "range": true, "refId": "C", "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "reth_transaction_pool_blob_transactions_nonce_gaps{instance=~\"$instance\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "Blob transactions nonce gaps", + "range": true, + "refId": "D", + "useBackend": false } ], "title": "All Transactions metrics",