mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-11 16:31:07 +00:00
[FRAME] Use 'ready' pages in XCMP suspend logic (#2393)
Changes: - `QueueFootprint` gets a new field; `ready_pages` that contains the non-overweight and not yet processed pages. - `XCMP` queue pallet is change to use the `ready_pages` instead of `pages` to calculate the channel suspension thresholds. This should give the XCMP queue pallet a more correct view of when to suspend channels. --------- Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
This commit is contained in:
committed by
GitHub
parent
c367ac2488
commit
329c077236
@@ -1064,13 +1064,13 @@ fn footprint_num_pages_works() {
|
||||
MessageQueue::enqueue_message(msg("weight=2"), Here);
|
||||
MessageQueue::enqueue_message(msg("weight=3"), Here);
|
||||
|
||||
assert_eq!(MessageQueue::footprint(Here), fp(2, 2, 16));
|
||||
assert_eq!(MessageQueue::footprint(Here), fp(2, 2, 2, 16));
|
||||
|
||||
// Mark the messages as overweight.
|
||||
assert_eq!(MessageQueue::service_queues(1.into_weight()), 0.into_weight());
|
||||
assert_eq!(System::events().len(), 2);
|
||||
// Overweight does not change the footprint.
|
||||
assert_eq!(MessageQueue::footprint(Here), fp(2, 2, 16));
|
||||
// `ready_pages` decreases but `page` count does not.
|
||||
assert_eq!(MessageQueue::footprint(Here), fp(2, 0, 2, 16));
|
||||
|
||||
// Now execute the second message.
|
||||
assert_eq!(
|
||||
@@ -1078,7 +1078,7 @@ fn footprint_num_pages_works() {
|
||||
.unwrap(),
|
||||
3.into_weight()
|
||||
);
|
||||
assert_eq!(MessageQueue::footprint(Here), fp(1, 1, 8));
|
||||
assert_eq!(MessageQueue::footprint(Here), fp(1, 0, 1, 8));
|
||||
// And the first one:
|
||||
assert_eq!(
|
||||
<MessageQueue as ServiceQueues>::execute_overweight(2.into_weight(), (Here, 0, 0))
|
||||
@@ -1086,6 +1086,11 @@ fn footprint_num_pages_works() {
|
||||
2.into_weight()
|
||||
);
|
||||
assert_eq!(MessageQueue::footprint(Here), Default::default());
|
||||
assert_eq!(MessageQueue::footprint(Here), fp(0, 0, 0, 0));
|
||||
|
||||
// `ready_pages` and normal `pages` increases again:
|
||||
MessageQueue::enqueue_message(msg("weight=3"), Here);
|
||||
assert_eq!(MessageQueue::footprint(Here), fp(1, 1, 1, 8));
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user