Skip to content

Treat a missing parent state as a temporary sim failure - #589

Open
0w3n-d wants to merge 1 commit into
developfrom
od/sim_missing_parent_state
Open

0w3n-d wants to merge 1 commit into
developfrom
od/sim_missing_parent_state

Conversation

@0w3n-d

@0w3n-d 0w3n-d commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Issue: none (small bug fix; say the word and I draft one)

What this PR does

The simulator returns no state found for block <hash> when its node knows the parent header but does not have that block on its head chain (state_by_block_hash in crates/simulator/src/validation/mod.rs). A late parent block, a reorg, or a lagging node causes this. BlockSimError::is_temporary did not match the text, so is_demotable returned true and the relay demoted the builder for a sim-side condition. This was seen on mainnet FR, slot 15185181, builder Titan.

The fix matches the reth text with starts_with, because the message carries the parent hash. It also matches our own builder validator's parent state is not available, which is the same condition.

What this PR deliberately does not do

It does not change the retry or pause behaviour: a temporary error already pauses the simulator tile and the submission retries. It does not touch the simulator node's own head-chain tracking, and it does not remove any past demotion from the database.

Tests

missing_parent_state_never_demotes in crates/common/src/simulator.rs holds the invariant: both texts are temporary and not demotable. The test came before the match arms. The change is a one-line-per-text classification fix, so no new integration test.

Reviewer checklist

  • CI (lint, unit-test) is green
  • Matches the linked issue/step
  • No unexplained scope creep or unrelated files touched

🤖 Generated with Claude Code

The simulator returns "no state found for block <hash>" when its node
knows the parent header but does not have that block on its head chain.
A late parent, a reorg, or a lagging node causes this. `is_temporary`
did not match the text, so the relay demoted the builder for a
sim-side condition. Match the reth text and the builder's own
"parent state is not available".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants