mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix(exex): exhaust backfill job when using a stream (#11578)
This commit is contained in:
182
Cargo.lock
generated
182
Cargo.lock
generated
@ -4,9 +4,9 @@ version = 3
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
version = "0.24.2"
|
||||
version = "0.24.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
|
||||
checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375"
|
||||
dependencies = [
|
||||
"gimli",
|
||||
]
|
||||
@ -97,9 +97,9 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
|
||||
|
||||
[[package]]
|
||||
name = "alloy-chains"
|
||||
version = "0.1.36"
|
||||
version = "0.1.34"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94c225801d42099570d0674701dddd4142f0ef715282aeb5985042e2ec962df7"
|
||||
checksum = "8158b4878c67837e5413721cc44298e6a2d88d39203175ea025e51892a16ba4c"
|
||||
dependencies = [
|
||||
"alloy-rlp",
|
||||
"arbitrary",
|
||||
@ -296,7 +296,7 @@ dependencies = [
|
||||
"getrandom 0.2.15",
|
||||
"hashbrown 0.14.5",
|
||||
"hex-literal",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"itoa",
|
||||
"k256",
|
||||
"keccak-asm",
|
||||
@ -619,7 +619,7 @@ dependencies = [
|
||||
"alloy-sol-macro-input",
|
||||
"const-hex",
|
||||
"heck",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"proc-macro-error2",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -1016,9 +1016,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "async-compression"
|
||||
version = "0.4.13"
|
||||
version = "0.4.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429"
|
||||
checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa"
|
||||
dependencies = [
|
||||
"brotli",
|
||||
"flate2",
|
||||
@ -1203,6 +1203,26 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bindgen"
|
||||
version = "0.69.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"cexpr",
|
||||
"clang-sys",
|
||||
"itertools 0.12.1",
|
||||
"lazy_static",
|
||||
"lazycell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"regex",
|
||||
"rustc-hash 1.1.0",
|
||||
"shlex",
|
||||
"syn 2.0.79",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bindgen"
|
||||
version = "0.70.1"
|
||||
@ -1313,7 +1333,7 @@ dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"boa_interner",
|
||||
"boa_macros",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"num-bigint",
|
||||
"rustc-hash 2.0.0",
|
||||
]
|
||||
@ -1339,7 +1359,7 @@ dependencies = [
|
||||
"fast-float",
|
||||
"hashbrown 0.14.5",
|
||||
"icu_normalizer",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"intrusive-collections",
|
||||
"itertools 0.13.0",
|
||||
"num-bigint",
|
||||
@ -1385,7 +1405,7 @@ dependencies = [
|
||||
"boa_gc",
|
||||
"boa_macros",
|
||||
"hashbrown 0.14.5",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"once_cell",
|
||||
"phf",
|
||||
"rustc-hash 2.0.0",
|
||||
@ -1453,9 +1473,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brotli"
|
||||
version = "7.0.0"
|
||||
version = "6.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd"
|
||||
checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b"
|
||||
dependencies = [
|
||||
"alloc-no-stdlib",
|
||||
"alloc-stdlib",
|
||||
@ -1599,9 +1619,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.1.25"
|
||||
version = "1.1.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e8d9e0b4957f635b8d3da819d0db5603620467ecf1f692d22a8c2717ce27e6d8"
|
||||
checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
"libc",
|
||||
@ -3113,9 +3133,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
|
||||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.31"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
|
||||
checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
@ -3128,9 +3148,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "futures-channel"
|
||||
version = "0.3.31"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
|
||||
checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
@ -3138,15 +3158,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.31"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
|
||||
checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
|
||||
|
||||
[[package]]
|
||||
name = "futures-executor"
|
||||
version = "0.3.31"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
|
||||
checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-task",
|
||||
@ -3155,9 +3175,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.31"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
|
||||
checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
|
||||
|
||||
[[package]]
|
||||
name = "futures-lite"
|
||||
@ -3176,9 +3196,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.31"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
|
||||
checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -3187,15 +3207,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "futures-sink"
|
||||
version = "0.3.31"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
|
||||
checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.31"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
|
||||
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
||||
|
||||
[[package]]
|
||||
name = "futures-timer"
|
||||
@ -3209,9 +3229,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.31"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
|
||||
checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
@ -3291,9 +3311,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.31.1"
|
||||
version = "0.31.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
|
||||
checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64"
|
||||
|
||||
[[package]]
|
||||
name = "glob"
|
||||
@ -3370,7 +3390,7 @@ dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"http",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
@ -3416,12 +3436,6 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
|
||||
|
||||
[[package]]
|
||||
name = "hashlink"
|
||||
version = "0.8.4"
|
||||
@ -3949,13 +3963,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.6.0"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
|
||||
checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
|
||||
dependencies = [
|
||||
"arbitrary",
|
||||
"equivalent",
|
||||
"hashbrown 0.15.0",
|
||||
"hashbrown 0.14.5",
|
||||
"serde",
|
||||
]
|
||||
|
||||
@ -3972,7 +3986,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "232929e1d75fe899576a3d5c7416ad0d88dbfbb3c3d6aa00873a7408a50ddb88"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"is-terminal",
|
||||
"itoa",
|
||||
"log",
|
||||
@ -4070,9 +4084,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ipnet"
|
||||
version = "2.10.1"
|
||||
version = "2.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708"
|
||||
checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4"
|
||||
|
||||
[[package]]
|
||||
name = "iri-string"
|
||||
@ -4110,6 +4124,15 @@ dependencies = [
|
||||
"either",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itertools"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
|
||||
dependencies = [
|
||||
"either",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itertools"
|
||||
version = "0.13.0"
|
||||
@ -4426,6 +4449,12 @@ dependencies = [
|
||||
"spin",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lazycell"
|
||||
version = "1.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.159"
|
||||
@ -4469,11 +4498,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "libproc"
|
||||
version = "0.14.9"
|
||||
version = "0.14.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78cca3586d5efa98fba425856ba227950fd4287525dd5317b352f476ca7d603b"
|
||||
checksum = "ae9ea4b75e1a81675429dafe43441df1caea70081e82246a8cccf514884a88bb"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"bindgen 0.69.4",
|
||||
"errno",
|
||||
"libc",
|
||||
]
|
||||
@ -4694,7 +4723,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4f0c8427b39666bf970460908b213ec09b3b350f20c0c2eabcbba51704a08e6"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"metrics",
|
||||
"metrics-util",
|
||||
"quanta",
|
||||
@ -5105,18 +5134,21 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "object"
|
||||
version = "0.36.5"
|
||||
version = "0.36.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"
|
||||
checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.20.2"
|
||||
version = "1.20.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
|
||||
checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1"
|
||||
dependencies = [
|
||||
"portable-atomic",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "oorandom"
|
||||
@ -5462,18 +5494,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pin-project"
|
||||
version = "1.1.6"
|
||||
version = "1.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec"
|
||||
checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
|
||||
dependencies = [
|
||||
"pin-project-internal",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-internal"
|
||||
version = "1.1.6"
|
||||
version = "1.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8"
|
||||
checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -6009,9 +6041,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "raw-cpuid"
|
||||
version = "11.2.0"
|
||||
version = "11.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0"
|
||||
checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
]
|
||||
@ -7529,7 +7561,7 @@ dependencies = [
|
||||
"criterion",
|
||||
"dashmap 6.1.0",
|
||||
"derive_more 1.0.0",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"parking_lot 0.12.3",
|
||||
"pprof",
|
||||
"rand 0.8.5",
|
||||
@ -7545,7 +7577,7 @@ dependencies = [
|
||||
name = "reth-mdbx-sys"
|
||||
version = "1.0.8"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"bindgen 0.70.1",
|
||||
"cc",
|
||||
]
|
||||
|
||||
@ -9450,9 +9482,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustls"
|
||||
version = "0.23.14"
|
||||
version = "0.23.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8"
|
||||
checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8"
|
||||
dependencies = [
|
||||
"log",
|
||||
"once_cell",
|
||||
@ -9751,7 +9783,7 @@ version = "1.0.128"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
|
||||
dependencies = [
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"itoa",
|
||||
"memchr",
|
||||
"ryu",
|
||||
@ -9803,15 +9835,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "serde_with"
|
||||
version = "3.11.0"
|
||||
version = "3.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817"
|
||||
checksum = "9720086b3357bcb44fce40117d769a4d068c70ecfa190850a980a71755f66fcc"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"chrono",
|
||||
"hex",
|
||||
"indexmap 1.9.3",
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
@ -9821,9 +9853,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "serde_with_macros"
|
||||
version = "3.11.0"
|
||||
version = "3.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
|
||||
checksum = "5f1abbfe725f27678f4663bcacb75a83e829fd464c25d78dd038a3a29e307cec"
|
||||
dependencies = [
|
||||
"darling",
|
||||
"proc-macro2",
|
||||
@ -10621,7 +10653,7 @@ version = "0.22.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
|
||||
dependencies = [
|
||||
"indexmap 2.6.0",
|
||||
"indexmap 2.5.0",
|
||||
"serde",
|
||||
"serde_spanned",
|
||||
"toml_datetime",
|
||||
@ -10970,9 +11002,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "unicode-bidi"
|
||||
version = "0.3.17"
|
||||
version = "0.3.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893"
|
||||
checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
|
||||
@ -18,6 +18,8 @@ use reth_revm::database::StateProviderDatabase;
|
||||
use reth_stages_api::ExecutionStageThresholds;
|
||||
use reth_tracing::tracing::{debug, trace};
|
||||
|
||||
pub(super) type BackfillJobResult<T> = Result<T, BlockExecutionError>;
|
||||
|
||||
/// Backfill job started for a specific range.
|
||||
///
|
||||
/// It implements [`Iterator`] that executes blocks in batches according to the provided thresholds
|
||||
@ -37,7 +39,7 @@ where
|
||||
E: BlockExecutorProvider,
|
||||
P: HeaderProvider + BlockReader + StateProviderFactory,
|
||||
{
|
||||
type Item = Result<Chain, BlockExecutionError>;
|
||||
type Item = BackfillJobResult<Chain>;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
if self.range.is_empty() {
|
||||
@ -63,7 +65,7 @@ where
|
||||
self.into()
|
||||
}
|
||||
|
||||
fn execute_range(&mut self) -> Result<Chain, BlockExecutionError> {
|
||||
fn execute_range(&mut self) -> BackfillJobResult<Chain> {
|
||||
debug!(
|
||||
target: "exex::backfill",
|
||||
range = ?self.range,
|
||||
@ -165,7 +167,7 @@ where
|
||||
E: BlockExecutorProvider,
|
||||
P: HeaderProvider + BlockReader + StateProviderFactory,
|
||||
{
|
||||
type Item = Result<(BlockWithSenders, BlockExecutionOutput<Receipt>), BlockExecutionError>;
|
||||
type Item = BackfillJobResult<(BlockWithSenders, BlockExecutionOutput<Receipt>)>;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
self.range.next().map(|block_number| self.execute_block(block_number))
|
||||
@ -187,7 +189,7 @@ where
|
||||
pub(crate) fn execute_block(
|
||||
&self,
|
||||
block_number: u64,
|
||||
) -> Result<(BlockWithSenders, BlockExecutionOutput<Receipt>), BlockExecutionError> {
|
||||
) -> BackfillJobResult<(BlockWithSenders, BlockExecutionOutput<Receipt>)> {
|
||||
let td = self
|
||||
.provider
|
||||
.header_td_by_number(block_number)?
|
||||
|
||||
@ -18,12 +18,25 @@ use reth_stages_api::ExecutionStageThresholds;
|
||||
use reth_tracing::tracing::debug;
|
||||
use tokio::task::JoinHandle;
|
||||
|
||||
use super::job::BackfillJobResult;
|
||||
|
||||
/// The default parallelism for active tasks in [`StreamBackfillJob`].
|
||||
pub(crate) const DEFAULT_PARALLELISM: usize = 4;
|
||||
/// The default batch size for active tasks in [`StreamBackfillJob`].
|
||||
const DEFAULT_BATCH_SIZE: usize = 100;
|
||||
|
||||
type BackfillTasks<T> = FuturesOrdered<JoinHandle<Result<T, BlockExecutionError>>>;
|
||||
/// Boxed thread-safe iterator that yields [`BackfillJobResult`]s.
|
||||
type BackfillTaskIterator<T> =
|
||||
Box<dyn Iterator<Item = BackfillJobResult<T>> + Send + Sync + 'static>;
|
||||
|
||||
/// Backfill task output.
|
||||
struct BackfillTaskOutput<T> {
|
||||
job: BackfillTaskIterator<T>,
|
||||
result: Option<BackfillJobResult<T>>,
|
||||
}
|
||||
|
||||
/// Ordered queue of [`JoinHandle`]s that yield [`BackfillTaskOutput`]s.
|
||||
type BackfillTasks<T> = FuturesOrdered<JoinHandle<BackfillTaskOutput<T>>>;
|
||||
|
||||
type SingleBlockStreamItem = (BlockWithSenders, BlockExecutionOutput<Receipt>);
|
||||
type BatchBlockStreamItem = Chain;
|
||||
@ -44,7 +57,10 @@ pub struct StreamBackfillJob<E, P, T> {
|
||||
thresholds: ExecutionStageThresholds,
|
||||
}
|
||||
|
||||
impl<E, P, T> StreamBackfillJob<E, P, T> {
|
||||
impl<E, P, T> StreamBackfillJob<E, P, T>
|
||||
where
|
||||
T: Send + Sync + 'static,
|
||||
{
|
||||
/// Configures the parallelism of the [`StreamBackfillJob`] to handle active tasks.
|
||||
pub const fn with_parallelism(mut self, parallelism: usize) -> Self {
|
||||
self.parallelism = parallelism;
|
||||
@ -57,14 +73,30 @@ impl<E, P, T> StreamBackfillJob<E, P, T> {
|
||||
self
|
||||
}
|
||||
|
||||
fn poll_next_task(
|
||||
&mut self,
|
||||
cx: &mut Context<'_>,
|
||||
) -> Poll<Option<Result<T, BlockExecutionError>>> {
|
||||
match ready!(self.tasks.poll_next_unpin(cx)) {
|
||||
Some(res) => Poll::Ready(Some(res.map_err(BlockExecutionError::other)?)),
|
||||
None => Poll::Ready(None),
|
||||
/// Spawns a new task calling the [`BackfillTaskIterator::next`] method and pushes it to the
|
||||
/// [`BackfillTasks`] queue.
|
||||
fn push_task(&mut self, mut job: BackfillTaskIterator<T>) {
|
||||
self.tasks.push_back(tokio::task::spawn_blocking(move || BackfillTaskOutput {
|
||||
result: job.next(),
|
||||
job,
|
||||
}));
|
||||
}
|
||||
|
||||
/// Polls the next task in the [`BackfillTasks`] queue until it returns a non-empty result.
|
||||
fn poll_next_task(&mut self, cx: &mut Context<'_>) -> Poll<Option<BackfillJobResult<T>>> {
|
||||
while let Some(res) = ready!(self.tasks.poll_next_unpin(cx)) {
|
||||
let task_result = res.map_err(BlockExecutionError::other)?;
|
||||
|
||||
if let BackfillTaskOutput { result: Some(job_result), job } = task_result {
|
||||
// If the task returned a non-empty result, a new task advancing the job is created
|
||||
// and pushed to the front of the queue.
|
||||
self.push_task(job);
|
||||
|
||||
return Poll::Ready(Some(job_result))
|
||||
};
|
||||
}
|
||||
|
||||
Poll::Ready(None)
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,27 +105,28 @@ where
|
||||
E: BlockExecutorProvider + Clone + Send + 'static,
|
||||
P: HeaderProvider + BlockReader + StateProviderFactory + Clone + Send + Unpin + 'static,
|
||||
{
|
||||
type Item = Result<SingleBlockStreamItem, BlockExecutionError>;
|
||||
type Item = BackfillJobResult<SingleBlockStreamItem>;
|
||||
|
||||
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
|
||||
let this = self.get_mut();
|
||||
|
||||
// Spawn new tasks only if we are below the parallelism configured.
|
||||
while this.tasks.len() < this.parallelism {
|
||||
// If we have a block number, then we can spawn a new task for that block
|
||||
if let Some(block_number) = this.range.next() {
|
||||
let mut job = SingleBlockBackfillJob {
|
||||
executor: this.executor.clone(),
|
||||
provider: this.provider.clone(),
|
||||
range: block_number..=block_number,
|
||||
stream_parallelism: this.parallelism,
|
||||
};
|
||||
let task =
|
||||
tokio::task::spawn_blocking(move || job.next().expect("non-empty range"));
|
||||
this.tasks.push_back(task);
|
||||
} else {
|
||||
// Get the next block number from the range. If it is empty, we are done.
|
||||
let Some(block_number) = this.range.next() else {
|
||||
debug!(target: "exex::backfill", tasks = %this.tasks.len(), range = ?this.range, "No more single blocks to backfill");
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
// Spawn a new task for that block
|
||||
debug!(target: "exex::backfill", tasks = %this.tasks.len(), ?block_number, "Spawning new single block backfill task");
|
||||
let job = Box::new(SingleBlockBackfillJob {
|
||||
executor: this.executor.clone(),
|
||||
provider: this.provider.clone(),
|
||||
range: block_number..=block_number,
|
||||
stream_parallelism: this.parallelism,
|
||||
}) as BackfillTaskIterator<_>;
|
||||
this.push_task(job);
|
||||
}
|
||||
|
||||
this.poll_next_task(cx)
|
||||
@ -105,7 +138,7 @@ where
|
||||
E: BlockExecutorProvider + Clone + Send + 'static,
|
||||
P: HeaderProvider + BlockReader + StateProviderFactory + Clone + Send + Unpin + 'static,
|
||||
{
|
||||
type Item = Result<BatchBlockStreamItem, BlockExecutionError>;
|
||||
type Item = BackfillJobResult<BatchBlockStreamItem>;
|
||||
|
||||
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
|
||||
let this = self.get_mut();
|
||||
@ -117,24 +150,23 @@ where
|
||||
let start = range.next();
|
||||
let range_bounds = start.zip(range.last().or(start));
|
||||
|
||||
// If we have range bounds, then we can spawn a new task for that range
|
||||
if let Some((first, last)) = range_bounds {
|
||||
let range = first..=last;
|
||||
debug!(target: "exex::backfill", tasks = %this.tasks.len(), ?range, "Spawning new backfill task");
|
||||
let mut job = BackfillJob {
|
||||
executor: this.executor.clone(),
|
||||
provider: this.provider.clone(),
|
||||
prune_modes: this.prune_modes.clone(),
|
||||
thresholds: this.thresholds.clone(),
|
||||
range,
|
||||
stream_parallelism: this.parallelism,
|
||||
};
|
||||
let task =
|
||||
tokio::task::spawn_blocking(move || job.next().expect("non-empty range"));
|
||||
this.tasks.push_back(task);
|
||||
} else {
|
||||
// Create the range from the range bounds. If it is empty, we are done.
|
||||
let Some(range) = range_bounds.map(|(first, last)| first..=last) else {
|
||||
debug!(target: "exex::backfill", tasks = %this.tasks.len(), range = ?this.range, "No more block batches to backfill");
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
// Spawn a new task for that range
|
||||
debug!(target: "exex::backfill", tasks = %this.tasks.len(), ?range, "Spawning new block batch backfill task");
|
||||
let job = Box::new(BackfillJob {
|
||||
executor: this.executor.clone(),
|
||||
provider: this.provider.clone(),
|
||||
prune_modes: this.prune_modes.clone(),
|
||||
thresholds: this.thresholds.clone(),
|
||||
range,
|
||||
stream_parallelism: this.parallelism,
|
||||
}) as BackfillTaskIterator<_>;
|
||||
this.push_task(job);
|
||||
}
|
||||
|
||||
this.poll_next_task(cx)
|
||||
|
||||
@ -338,9 +338,11 @@ where
|
||||
}
|
||||
|
||||
if let Some(backfill_job) = &mut this.backfill_job {
|
||||
if let Some(chain) = ready!(backfill_job.poll_next_unpin(cx)) {
|
||||
debug!(target: "exex::notifications", "Polling backfill job");
|
||||
if let Some(chain) = ready!(backfill_job.poll_next_unpin(cx)).transpose()? {
|
||||
debug!(target: "exex::notifications", range = ?chain.range(), "Backfill job returned a chain");
|
||||
return Poll::Ready(Some(Ok(ExExNotification::ChainCommitted {
|
||||
new: Arc::new(chain?),
|
||||
new: Arc::new(chain),
|
||||
})))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user