fix(exex): update batch threadshold calculate processed blocks (#17551)

This commit is contained in:
nk_ysg
2025-07-22 21:35:16 +08:00
committed by GitHub
parent d8451e54e7
commit ca645b40ee
2 changed files with 92 additions and 45 deletions

87
Cargo.lock generated
View File

@@ -97,9 +97,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]]
name = "alloy-chains"
version = "0.2.6"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4195a29a4b87137b2bb02105e746102873bc03561805cf45c0e510c961f160e6"
checksum = "5674914c2cfdb866c21cb0c09d82374ee39a1395cf512e7515f4c014083b3fff"
dependencies = [
"alloy-primitives",
"alloy-rlp",
@@ -107,7 +107,7 @@ dependencies = [
"num_enum",
"proptest",
"serde",
"strum 0.27.2",
"strum 0.27.1",
]
[[package]]
@@ -640,7 +640,7 @@ dependencies = [
"jsonwebtoken",
"rand 0.8.5",
"serde",
"strum 0.27.2",
"strum 0.27.1",
]
[[package]]
@@ -1922,9 +1922,9 @@ dependencies = [
[[package]]
name = "bytemuck_derive"
version = "1.10.0"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "441473f2b4b0459a68628c744bc61d23e730fb00128b841d30fa4bb3972257e4"
checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1"
dependencies = [
"proc-macro2",
"quote",
@@ -2613,9 +2613,9 @@ dependencies = [
[[package]]
name = "curve25519-dalek"
version = "4.1.3"
version = "4.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
checksum = "373b7c5dbd637569a2cca66e8d66b8c446a1e7bf064ea321d265d7b3dfe7c97e"
dependencies = [
"cfg-if",
"cpufeatures",
@@ -3715,9 +3715,9 @@ dependencies = [
[[package]]
name = "fiat-crypto"
version = "0.2.9"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24"
[[package]]
name = "filetime"
@@ -4389,7 +4389,7 @@ dependencies = [
"tokio",
"tokio-rustls",
"tower-service",
"webpki-roots 1.0.2",
"webpki-roots 1.0.1",
]
[[package]]
@@ -4793,9 +4793,9 @@ dependencies = [
[[package]]
name = "instability"
version = "0.3.9"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "435d80800b936787d62688c927b6490e887c7ef5ff9ce922c6c6050fca75eb9a"
checksum = "0bf9fed6d91cfb734e7476a06bde8300a1b94e217e1b523b6f0cd1a01998c71d"
dependencies = [
"darling",
"indoc",
@@ -5281,9 +5281,9 @@ dependencies = [
[[package]]
name = "libredox"
version = "0.1.6"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4488594b9328dee448adb906d8b126d9b7deb7cf5c22161ee591610bb1be83c0"
checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638"
dependencies = [
"bitflags 2.9.1",
"libc",
@@ -7139,7 +7139,7 @@ dependencies = [
"wasm-bindgen-futures",
"wasm-streams",
"web-sys",
"webpki-roots 1.0.2",
"webpki-roots 1.0.1",
]
[[package]]
@@ -7559,7 +7559,7 @@ dependencies = [
"rustc-hash 2.1.1",
"serde",
"serde_json",
"strum 0.27.2",
"strum 0.27.1",
"sysinfo",
"tempfile",
"thiserror 2.0.12",
@@ -8909,7 +8909,7 @@ dependencies = [
"secp256k1 0.30.0",
"serde",
"shellexpand",
"strum 0.27.2",
"strum 0.27.1",
"thiserror 2.0.12",
"tokio",
"toml",
@@ -9641,7 +9641,7 @@ dependencies = [
"revm-database",
"revm-database-interface",
"revm-state",
"strum 0.27.2",
"strum 0.27.1",
"tempfile",
"tokio",
"tracing",
@@ -9717,8 +9717,8 @@ dependencies = [
"reth-ress-protocol",
"reth-storage-errors",
"reth-tracing",
"strum 0.27.2",
"strum_macros 0.27.2",
"strum 0.27.1",
"strum_macros 0.27.1",
"tokio",
"tokio-stream",
"tracing",
@@ -10140,7 +10140,7 @@ dependencies = [
"reth-errors",
"reth-network-api",
"serde",
"strum 0.27.2",
"strum 0.27.1",
]
[[package]]
@@ -10308,7 +10308,7 @@ dependencies = [
"derive_more",
"reth-nippy-jar",
"serde",
"strum 0.27.2",
"strum 0.27.1",
]
[[package]]
@@ -11128,15 +11128,15 @@ dependencies = [
[[package]]
name = "rustix"
version = "1.0.8"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
dependencies = [
"bitflags 2.9.1",
"errno",
"libc",
"linux-raw-sys 0.9.4",
"windows-sys 0.60.2",
"windows-sys 0.59.0",
]
[[package]]
@@ -11458,9 +11458,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.141"
version = "1.0.140"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
dependencies = [
"indexmap 2.10.0",
"itoa",
@@ -11834,11 +11834,11 @@ dependencies = [
[[package]]
name = "strum"
version = "0.27.2"
version = "0.27.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32"
dependencies = [
"strum_macros 0.27.2",
"strum_macros 0.27.1",
]
[[package]]
@@ -11856,13 +11856,14 @@ dependencies = [
[[package]]
name = "strum_macros"
version = "0.27.2"
version = "0.27.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8"
dependencies = [
"heck",
"proc-macro2",
"quote",
"rustversion",
"syn 2.0.104",
]
@@ -11983,7 +11984,7 @@ dependencies = [
"fastrand 2.3.0",
"getrandom 0.3.3",
"once_cell",
"rustix 1.0.8",
"rustix 1.0.7",
"windows-sys 0.59.0",
]
@@ -12626,9 +12627,9 @@ dependencies = [
[[package]]
name = "tracy-client-sys"
version = "0.26.1"
version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "319c70195101a93f56db4c74733e272d720768e13471f400c78406a326b172b0"
checksum = "5f9612d9503675b07b244922ea6f6f3cdd88c43add1b3498084613fc88cdf69d"
dependencies = [
"cc",
"windows-targets 0.52.6",
@@ -13119,14 +13120,14 @@ version = "0.26.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e"
dependencies = [
"webpki-root-certs 1.0.2",
"webpki-root-certs 1.0.1",
]
[[package]]
name = "webpki-root-certs"
version = "1.0.2"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a"
checksum = "86138b15b2b7d561bc4469e77027b8dd005a43dc502e9031d1f5afc8ce1f280e"
dependencies = [
"rustls-pki-types",
]
@@ -13137,14 +13138,14 @@ version = "0.26.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
dependencies = [
"webpki-roots 1.0.2",
"webpki-roots 1.0.1",
]
[[package]]
name = "webpki-roots"
version = "1.0.2"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2"
checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502"
dependencies = [
"rustls-pki-types",
]
@@ -13782,7 +13783,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909"
dependencies = [
"libc",
"rustix 1.0.8",
"rustix 1.0.7",
]
[[package]]

View File

@@ -124,7 +124,7 @@ where
blocks.push(block);
// Check if we should commit now
if self.thresholds.is_end_of_batch(
block_number - *self.range.start(),
block_number - *self.range.start() + 1,
executor.size_hint() as u64,
cumulative_gas,
batch_start.elapsed(),
@@ -243,7 +243,10 @@ impl<E, P> From<BackfillJob<E, P>> for SingleBlockBackfillJob<E, P> {
#[cfg(test)]
mod tests {
use crate::{
backfill::test_utils::{blocks_and_execution_outputs, chain_spec, to_execution_outcome},
backfill::{
job::ExecutionStageThresholds,
test_utils::{blocks_and_execution_outputs, chain_spec, to_execution_outcome},
},
BackfillJobFactory,
};
use reth_db_common::init::init_genesis;
@@ -333,4 +336,47 @@ mod tests {
Ok(())
}
#[test]
fn test_backfill_with_batch_threshold() -> eyre::Result<()> {
reth_tracing::init_test_tracing();
// Create a key pair for the sender
let key_pair = generators::generate_key(&mut generators::rng());
let address = public_key_to_address(key_pair.public_key());
let chain_spec = chain_spec(address);
let executor = EthEvmConfig::ethereum(chain_spec.clone());
let provider_factory = create_test_provider_factory_with_chain_spec(chain_spec.clone());
init_genesis(&provider_factory)?;
let blockchain_db = BlockchainProvider::new(provider_factory.clone())?;
let blocks_and_execution_outputs =
blocks_and_execution_outputs(provider_factory, chain_spec, key_pair)?;
let (block1, output1) = blocks_and_execution_outputs[0].clone();
let (block2, output2) = blocks_and_execution_outputs[1].clone();
// Backfill with max_blocks=1, expect two separate chains
let factory = BackfillJobFactory::new(executor, blockchain_db).with_thresholds(
ExecutionStageThresholds { max_blocks: Some(1), ..Default::default() },
);
let job = factory.backfill(1..=2);
let chains = job.collect::<Result<Vec<_>, _>>()?;
// Assert two chains, each with one block
assert_eq!(chains.len(), 2);
let mut chain1 = chains[0].clone();
chain1.execution_outcome_mut().bundle.reverts.sort();
assert_eq!(chain1.blocks(), &[(1, block1)].into());
assert_eq!(chain1.execution_outcome(), &to_execution_outcome(1, &output1));
let mut chain2 = chains[1].clone();
chain2.execution_outcome_mut().bundle.reverts.sort();
assert_eq!(chain2.blocks(), &[(2, block2)].into());
assert_eq!(chain2.execution_outcome(), &to_execution_outcome(2, &output2));
Ok(())
}
}