-
Notifications
You must be signed in to change notification settings - Fork 1.2k
set_validation_data register weight manually, do not use refund when the pre dispatch is zero.
#7327
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
set_validation_data register weight manually, do not use refund when the pre dispatch is zero.
#7327
Changes from 4 commits
e5a9dab
360d7f5
a4d8a01
26abf9a
46827d4
e988d2b
15d6c29
a9e8ed8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -692,7 +692,12 @@ pub mod pallet { | |
| vfp.relay_parent_number, | ||
| )); | ||
|
|
||
| Ok(PostDispatchInfo { actual_weight: Some(total_weight), pays_fee: Pays::No }) | ||
| frame_system::Pallet::<T>::register_extra_weight_unchecked( | ||
| total_weight, | ||
| DispatchClass::Mandatory, | ||
| ); | ||
|
|
||
| Ok(Pays::No.into()) | ||
|
||
| } | ||
|
|
||
| #[pallet::call_index(1)] | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| title: Correctly register the weight n `set_validation_data` in `cumulus-pallet-parachain-system` | ||
|
|
||
| doc: | ||
| - audience: Runtime Dev | ||
| description: | | ||
| The actual weight of the call was register as a refund, but the pre-dispatch weight is 0, | ||
| and we can't refund from 0. Now the actual weight is registered manually instead of ignored. | ||
|
|
||
| crates: | ||
| - name: cumulus-pallet-parachain-system | ||
| bump: patch |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I assume we don't know an upper bound for this value pre-dispatch because it is calculated ad-hoc?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes but it's once per block and we register the weight, meaning it will be correctly accounted for in the following transactions.
If we go with the worst case weight here before dispatching, we might greatly underestimate the block space we have since those stuctures in
ParachainInherentDatacan grow a lot as far as I'm aware. This model works best IMO.