Streamline block routing from gossip to clearance #7546
Merged
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.
In order to avoid unnecessary
Forky
/Forked
transitions and reduce the risk for block / blob / column / fork confusion, this PR simplifies the block processor to predominantly work withForky
types and sidecars typed accordingly.To achieve this, the
AsyncQueue
is replaced withAsyncLock
that ends up working in a similar way for the given use case, ie both maintain a list of pending work - the advantage ofAsyncLock
is that we don't have to make extra copies of the block and instead queue the in-flight future (and its closure context where the block lives) inside the lock.Apart from the performance and memory usage benefits of not having to make so many copies along the call chain, this also reduces the risk of sidecar type contamination across different forks.