-
Notifications
You must be signed in to change notification settings - Fork 746
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Relay chain coretime assigner does not support more assignments than fit in a single XCM message (currently 28) #6102
Comments
Just copying the initial idea here that I had when this first popped up:
and we just need to never call it more than once for the same core and begin combination. But we still need to change the relay logic to drop the requirement for each assign_core call to contain a fully scheduled core. As part of that we'd need to add logic in there to pad an underscheduled core with Idle, then when a further underscheduled assignment comes in within a timeslice (for example) it should try to remove the Idle padding, "append" the new parts and recompute the padding again. |
Hello, |
Hi, yes this is free to take on |
Totally understandable |
#6397 is the issue if you're interested |
The system allows interlacing right down to the single block level (80 assignments per timeslice, each with a CoreMask with one bit set)
The problem is that it creates a call that doesn't actually fit in an XCM message (we can fit max 28 assignments in a single XCM)
We can easily chunk that on the Coretime Chain side and send it over as four messages, however with the current design that means we need to call
assign_core
multiple times on the relay for a given timeslice which is disallowed by design due to some assumptions made by the scheduler.Mitigation in the mean time:
28 assignments is the limit, but 27 assignments that don't add up to a complete mask will be rejected due to the requirement for a full mask on the relay. Therefore we take the first 27 and append an
Idle
assignment, taking it to 28.This will make anybody who interlaces more than 27 times lose some assignments, but it's better than the current system, which just drops the entire core's assignments because the message is too big. Once this is missed, it's gone from the workplan and is a total mess. Far preferable to truncate and assign everything we can until we can drop some assumptions in the scheduler on the relay.
Mitigation for the Polkadot launch: polkadot-fellows/runtimes#434
Testnets mitigation: #6022
The text was updated successfully, but these errors were encountered: