fix(gloas): queue gossip data columns for reprocessing when block root is unknown#49
Merged
eserilev merged 1 commit intoMay 21, 2026
Conversation
…t is unknown In ePBS (Gloas), data columns often arrive via gossip BEFORE their corresponding block. Previously these columns were silently ignored (action: 'ignoring'), causing blocks to become stuck with 0/128 columns and preventing head advancement. This fix queues columns with unknown block roots in the reprocess queue. When the block is imported (BlockImported event), the queued columns are released and re-dispatched through the normal gossip column processing path. This addresses the root cause of network degradation observed around epoch 80+ in devnets: columns arrive ~50ms before the block, get discarded, block stays at 0/128 columns, fork choice can't advance, head gets stuck, shuffling diverges from the rest of the network.
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.
Problem
In ePBS (Gloas), data columns frequently arrive via gossip before their corresponding block (~50ms earlier). When this happens, the
GossipDataColumnError::BlockRootUnknownhandler silently ignores the columns. Once ignored, those columns are lost and never re-processed.This causes blocks to get stuck at
data_columns 0/128— the block is imported but never becomes fully data-available. Fork choice can't advance the head, causing:Fix
Add a reprocess queue path for gossip data columns with unknown block roots:
QueuedGossipDataColumnstruct andUnknownBlockDataColumnmessage variantBlockRootUnknownis hit, queue the column with its block rootBlockImported, release all queued columns for that root and re-dispatch them through the normal gossip column processing path (send_gossip_data_column_sidecar)This mirrors the existing pattern for attestations (
UnknownBlockUnaggregate) and envelopes (UnknownBlockForEnvelope).Testing
Tested on a 6-node Kurtosis devnet. Without this fix, network collapses at epoch ~80 when columns arrive before blocks. With this fix, network stays healthy past epoch 80+.