[mq pallet] Custom next queue selectors (#6059)
Changes: - Expose a `force_set_head` function from the `MessageQueue` pallet via a new trait: `ForceSetHead`. This can be used to force the MQ pallet to process this queue next. - The change only exposes an internal function through a trait, no audit is required. ## Context For the Asset Hub Migration (AHM) we need a mechanism to prioritize the inbound upward messages and the inbound downward messages on the AH. To achieve this, a minimal (and no breaking) change is done to the MQ pallet in the form of adding the `force_set_head` function. An example use of how to achieve prioritization is then demonstrated in `integration_test.rs::AhmPrioritizer`. Normally, all queues are scheduled round-robin like this: `| Relay | Para(1) | Para(2) | ... | Relay | ... ` The prioritizer listens to changes to its queue and triggers if either: - The queue processed in the last block (to keep the general round-robin scheduling) - The queue did not process since `n` blocks (to prevent starvation if there are too many other queues) In either situation, it schedules the queue for a streak of three consecutive blocks, such that it would become: `| Relay | Relay | Relay | Para(1) | Para(2) | ... | Relay | Relay | Relay | ... ` It basically transforms the round-robin into an elongated round robin. Although different strategies can be injected into the pallet at runtime, this one seems to strike a good balance between general service level and prioritization. --------- Signed-off-by:Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
muharem <ismailov.m.h@gmail.com>
Showing
- cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_message_queue.rs 113 additions, 92 deletions...sets/asset-hub-rococo/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_message_queue.rs 113 additions, 92 deletions...ets/asset-hub-westend/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_message_queue.rs 115 additions, 94 deletions...ubs/bridge-hub-rococo/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_message_queue.rs 115 additions, 94 deletions...bs/bridge-hub-westend/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_message_queue.rs 110 additions, 89 deletions...s/collectives-westend/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/contracts/contracts-rococo/src/weights/pallet_message_queue.rs 202 additions, 0 deletions...acts/contracts-rococo/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_message_queue.rs 76 additions, 60 deletions...etime/coretime-rococo/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_message_queue.rs 75 additions, 59 deletions...time/coretime-westend/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_message_queue.rs 79 additions, 57 deletions...utton/glutton-westend/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_message_queue.rs 122 additions, 76 deletions.../people/people-rococo/src/weights/pallet_message_queue.rs
- cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_message_queue.rs 122 additions, 76 deletions...people/people-westend/src/weights/pallet_message_queue.rs
- polkadot/runtime/parachains/src/mock.rs 3 additions, 0 deletionspolkadot/runtime/parachains/src/mock.rs
- polkadot/runtime/rococo/src/weights/pallet_message_queue.rs 47 additions, 32 deletionspolkadot/runtime/rococo/src/weights/pallet_message_queue.rs
- polkadot/runtime/westend/src/weights/pallet_message_queue.rs 98 additions, 78 deletionspolkadot/runtime/westend/src/weights/pallet_message_queue.rs
- prdoc/pr_6059.prdoc 56 additions, 0 deletionsprdoc/pr_6059.prdoc
- substrate/frame/message-queue/Cargo.toml 1 addition, 0 deletionssubstrate/frame/message-queue/Cargo.toml
- substrate/frame/message-queue/src/benchmarking.rs 16 additions, 0 deletionssubstrate/frame/message-queue/src/benchmarking.rs
- substrate/frame/message-queue/src/integration_test.rs 212 additions, 3 deletionssubstrate/frame/message-queue/src/integration_test.rs
- substrate/frame/message-queue/src/lib.rs 35 additions, 3 deletionssubstrate/frame/message-queue/src/lib.rs
- substrate/frame/message-queue/src/mock.rs 10 additions, 1 deletionsubstrate/frame/message-queue/src/mock.rs
Please register or sign in to comment