fix(engine): restore Firehose live-path tracing in payload validator#11
Merged
sduchesneau merged 5 commits intoJun 4, 2026
Merged
Conversation
Add CHANGELOG.md documenting Firehose-specific changes since reth v2.2.0: flashblocks support, SynchronizedStdout, init_tracer Config refactor, public prestate helpers in reth-firehose-tests, and firehose-tracer 5.1.1.
…dator Blocks arriving through the engine API (newPayload / forkchoiceUpdated) were no longer traced on firehose/2.x: the live-path hooks in the engine-tree payload validator had been dropped during a merge, leaving only the historical/stage execution path instrumented. Restore the SignatureFields bound, the FirehoseBlockTracer guard lifecycle (start before execution, mark_verified after post-execution validation, drop on error), and the execute_and_trace_block dispatch that wraps the executor in FirehoseWrappedExecutor. Propagate the SignatureFields bound to the EngineValidatorBuilder impl.
Drives a real EthereumNode through engine_newPayload (the validate_block_with_state path) with a buffer-backed global tracer and asserts FIRE BLOCK lines are emitted for the live blocks. Fails if the live-path dispatch is missing. Add reth_firehose::init_tracer_with_buffer to install a buffer-backed global tracer for output capture. The test lives in its own integration-test binary so the process-wide tracer stays isolated from the rest of the suite.
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.
Live blocks arriving through the engine API (
newPayload/forkchoiceUpdated) stopped beingtraced on
firehose/2.x: the Firehose live-path hooks in the engine-tree payload validator weredropped during a merge, leaving only the historical/stage execution path instrumented.
Restores the hooks in
validate_block_with_state:SignatureFieldsbound onTxTy<N>(validator method,EngineValidatorimpl, and theEngineValidatorBuilderimpl innode/builder).FirehoseBlockTracerguard lifecycle: start before execution,mark_verified()afterpost-execution validation, drop-on-error discards the block.
execute_and_trace_blockdispatch (gated onis_tracer_initialized()) wrapping the executor inFirehoseWrappedExecutor; the genesis marker (block 1) falls through to the untraced path.Adds a regression test (
crates/engine/tree/tests/firehose_live_tracing.rs) that drives a realnode through
newPayloadwith a buffer-backed global tracer and assertsFIRE BLOCKlines areemitted for live blocks — verified to fail when the dispatch is absent. Supported by a new
reth_firehose::init_tracer_with_bufferhelper for output capture.Note: this branch also carries the in-progress
v2.2.0-fhrelease-prep commits (CHANGELOG /gitignore).