From e77962ee66e0c5055d909e5b7f910461d6fb0df1 Mon Sep 17 00:00:00 2001 From: Omar Abdulla Date: Mon, 28 Jul 2025 17:45:58 +0300 Subject: [PATCH] Attempt to improve the geth tx indexing issue. We're facing an issue where Geth transaction indexing can sometimes stall on some of the nodes we're running. The logs show that for all transactions we always need 1 second of waiting time. However, during certain runs we sometimes run into an issue with some of the nodes where it seems like their transaction indexer fails (either at the start or after some amount of time) which leads us to never get the receipts back from these specific nodes. This is not a load issue as it appears like all of the other nodes handle it just fine. However, it looks like once a node gets into this state it can not get out of it and its bricked for the entire run. This commit adds some more command line arguments to the geth command in hopes of improving this issue. --- crates/node/src/geth.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/node/src/geth.rs b/crates/node/src/geth.rs index 7679171..9795893 100644 --- a/crates/node/src/geth.rs +++ b/crates/node/src/geth.rs @@ -152,6 +152,10 @@ impl Instance { .arg("--nodiscover") .arg("--maxpeers") .arg("0") + .arg("--txlookuplimit") + .arg("0") + .arg("--cache.blocklogs") + .arg("512") .stderr(stderr_logs_file.try_clone()?) .stdout(stdout_logs_file.try_clone()?) .spawn()? @@ -294,7 +298,10 @@ impl EthereumNode for Instance { } match provider.get_transaction_receipt(*transaction_hash).await { - Ok(Some(receipt)) => break Ok(receipt), + Ok(Some(receipt)) => { + tracing::info!(?total_wait_duration, "Found receipt"); + break Ok(receipt); + } Ok(None) => {} Err(error) => { let error_string = error.to_string();