Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework error handling on engine_forkchoiceUpdated failures #2267

Open
shotes opened this issue Dec 15, 2024 · 0 comments
Open

Rework error handling on engine_forkchoiceUpdated failures #2267

shotes opened this issue Dec 15, 2024 · 0 comments

Comments

@shotes
Copy link
Contributor

shotes commented Dec 15, 2024

Beacon-kit currently asynchronously pushes forkchoice updates to the Execution Layer client over the Engine API via go s.sendPostBlockFCU(ctx, st, cBlk). When this forkchoice update fails, the beacon-kit node will simply continue on processing blocks and not updating the EL client on the new finalized block and the current head of the chain.

In my opinion, beacon-kit cannot simply move on with processing blocks if the forkchoiceUpdate is failing for any reason. At the same time, it is difficult to suggest returning error in FinalizeBlock(). Beacon-kit should introduce error handling that attempts to recover from recoverable errors and prevents the node from participating until the issue with the Engine API is resolved.

A potential path forward would be to start the FCU in a goroutine that:

  • retries on ephemeral error, with an exponential backoff that will timeout eventually
  • errors when there is an unrecoverable failure
  • prevents the beacon-kit node from participating (not proposing, verifying proposals, or processing new blocks) until the forkchoice is updated on the EL.
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

No branches or pull requests

1 participant