cumulus: unincluded segment submission with every RC slot#12228
Draft
iulianbarbu wants to merge 27 commits into
Draft
cumulus: unincluded segment submission with every RC slot#12228iulianbarbu wants to merge 27 commits into
iulianbarbu wants to merge 27 commits into
Conversation
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
For V3, build on the parachain best head directly instead of the relay-parent-anchored fork search. The scheduling parent already pins the included head via the relay chain's persisted validation data, so find_parent_v3 takes the best head and verifies it descends from that included head; V1/V2 keep the existing find_parent search. Reuses fetch_included from the unincluded-segment walker. Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Replace the standalone resubmission task with a ResubmissionManager owned by the collation task. The collation task's select! loop now reacts to both the regular collator channel and the resubmission channel, converging on the same handle_segment_message submission path. Renames resubmission_task.rs to resubmission.rs. Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Make resubmission the unified V3 submission path instead of a "segment full" exception. Every slot the first core submits the prior unincluded segment (resubmitted, signed) prepended to the blocks it builds this slot; other (elastic-scaling) cores submit only their new blocks as initial submissions. Split the work into two phases so the expensive part overlaps block building: a Hydrate request (fired once the scheduling parent is known) walks the prior segment and loads bodies/proofs; a Finalize request (after the first core is known) builds the header_chain and signs. The collation task holds the result and prepends the first core's freshly-built blocks before submitting. Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
Signed-off-by: Iulian Barbu <iulian.barbu@parity.io>
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.
Description
Initial resubmission flow based on V4 collator protocol (both collator-side #12172 and validator-side tbd), #12091 & #12097 .
Covers parts of #12036 without the freshness tracker, exceptions to it, or core affinity.
Integration
N/A yet
Review Notes
This is a demonstrative flow which attempts seding the entire unincluded segment always on the first core it gets during an RC slot.
In the near future I'd want:
run_builder_taskloop concerns in an easier to reason about way (compatible with both v2 and v3/v4).