Conversation
Lets a FIREHOSE_DISABLED-style kill-switch run the pipeline through the plain executor path instead of erroring. (cherry picked from commit 521c219)
FirehoseBlockExecutor overrode execute() to trace whenever the tracer was initialized, on the assumption that the pipeline executes through it. The execution stage now calls execute_and_trace_one directly, so the override only affected callers that re-execute blocks for other purposes, such as the single-block ExEx backfill job: those blocks were emitted a second time, out of order, and flushed by into_state before the caller validated anything. execute() now keeps the trait default and runs untraced, like every Executor method other than execute_and_trace_one. Claude-Session: https://claude.ai/code/session_017NVMdn2RC1Nv5tfSTCkvro
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
FirehoseBlockExecutoroverrodeExecutor::executeto trace whenever the tracer is initialized, on the assumption that the pipeline executes through it. The execution stage now callsexecute_and_trace_onedirectly, so the override only affects callers that re-execute blocks for other purposes. In reth that is the single-block ExEx backfill job; chains add their own (Morph's proofs-history collector, for example). Those blocks were emitted a second time, out of order, andinto_stateflushed them before the caller validated anything.executenow keeps the trait default and runs untraced, like everyExecutormethod other thanexecute_and_trace_one. The module docs say so.release/bnb-0.x521c219:execute_and_trace_onefalls back to untraced execution instead of erroring when the tracer is not initialized, so an EVM config can returnFirehoseBlockExecutorunconditionally.Testing
reth-firehose-testsintegration binarybatch_executor: with the tracer installed,executeemits nothing andexecute_and_trace_one+into_stateemits the block once. It fails without the fix (executeemitted the block).cargo test -p reth-firehose-tests,cargo test -p reth-firehose --lib.https://claude.ai/code/session_017NVMdn2RC1Nv5tfSTCkvro