Open
Conversation
Two issues caused the GenServer to stall for 30+ minutes after restart with 229 blocks needing data column downloads: 1. column_present? called get_data_column_sidecar which reads the full sidecar from LevelDB AND deserializes it from SSZ — just to check existence. Added has_column? that only does Db.get without SSZ decode. 2. Each block in add_block_fulu scheduled its own retry_download_columns timer. With 229 blocks, this created 229 retry messages, each scanning all 229 blocks × 4 custody columns = ~210K LevelDB reads. The handler also scheduled another timer per invocation, compounding the problem. Added drain_messages to deduplicate pending retry messages.
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.
Motivation
Since development on this project halted, Ethereum transitioned to its next hard fork: Fulu/Fusaka. We need to add support for it to be able to test our client against live testnets and mainnet.
Description
This PR adds support for the Fulu fork.
Code for supporting Electra was kept, but it might not be working completely. We may remove this code on a later PR.
It also introduces timing logs for the block processing pipeline and some fixes for bugs already on
mainthat were found while debugging.Some notable changes are:
Left for other PRs:
How to run
As said above, instructions will be added to the readme in another PR.