Gloas range sync#9362
Conversation
|
Tested on a gloas kurtosis network and mainnet and it works fine. Some cases where we went into optimistic mode because the parent envelope was not downloaded by range sync. Can be handled with #9039 |
|
Some required checks have failed. Could you please take a look @pawanjay176? 🙏 |
eserilev
left a comment
There was a problem hiding this comment.
Looks good on the whole. Had some thoughts about a few things, lmk what you think
4c4f59f to
27de595
Compare
| DataColumnSidecarGloas::<E>::max_size( | ||
| spec.max_blobs_per_block(current_digest_epoch) as usize | ||
| ), | ||
| DataColumnSidecarFulu::<E>::max_size(max_blobs), |
There was a problem hiding this comment.
should be DataColumnSidecarGloas right?
There was a problem hiding this comment.
It should be fulu because the check happens based on wall clock based current_digest_epoch. So if we are in gloas and are requesting fulu columns, we start failing because fulu columns are larger than gloas ones.
eserilev
left a comment
There was a problem hiding this comment.
This is pretty much good to go, just a few minor suggestions
|
Thanks for fixing up stuff @dapplion ! |
Merge Queue Status
This pull request spent 20 minutes 40 seconds in the queue, including 19 minutes 3 seconds running CI. Waiting for
All conditions
ReasonThe merge conditions cannot be satisfied due to failing checks HintYou may have to fix your CI before adding the pull request to the queue again. |
|
@mergify queue |
Merge Queue Status🛑 Queue command has been cancelled |
Merge Queue Status
This pull request spent 29 minutes 33 seconds in the queue, including 27 minutes 59 seconds running CI. Required conditions to merge
|
Issue Addressed
N/A
Proposed Changes
Implement range sync in gloas.
Basically requests blocks and payloads post gloas from the same peer, couples them and sends it for processing.
Does not change sync much at all other than adding the machinery for payloads by range requests.
Main changes are:
RangeSyncBlockwhich used to be a struct is an enum to account for the Gloas case. This allows a clear separation between gloas and pre-gloas code.AvailableBlockDatanow has aBlockInEnvelopevariant. This is to clearly indicate the post gloas case. I feel this is simpler to follow compared toNoDatavariant.Tries to extract post gloas logic into its own functions so that there is minimal logic change in mainnet range sync behaviour.
This is meant as a stable base on which we can iterate further to make range sync cleaner and for unblocking range sync support on devnet. Some ideas for later is removing the retry mechanism in favour of delegating column fetching to lookup sync which can be done post #9155 and batch signature verifying envelopes.