Make New Storage Layer Truly Default (#11918)

* with storage layer truly default

* fmt

Co-authored-by: parity-processbot <>
This commit is contained in:
Shawn Tabrizi
2022-07-26 18:49:11 +01:00
committed by GitHub
parent 7bdeb960c3
commit 72522429a7
6 changed files with 9 additions and 41 deletions
@@ -2735,7 +2735,7 @@ mod unbond {
// when: unbonding more than our active: error
assert_noop!(
frame_support::storage::in_storage_layer(|| Pools::unbond(
frame_support::storage::with_storage_layer(|| Pools::unbond(
Origin::signed(10),
10,
5
@@ -2787,7 +2787,7 @@ mod unbond {
// when
CurrentEra::set(2);
assert_noop!(
frame_support::storage::in_storage_layer(|| Pools::unbond(
frame_support::storage::with_storage_layer(|| Pools::unbond(
Origin::signed(20),
20,
4
@@ -163,19 +163,6 @@ pub fn expand_outer_dispatch(
}
}
}
impl #scrate::traits::DispatchableWithStorageLayer for Call {
type Origin = Origin;
fn dispatch_with_storage_layer(self, origin: Origin) -> #scrate::dispatch::DispatchResultWithPostInfo {
#scrate::storage::with_storage_layer(|| {
#scrate::dispatch::Dispatchable::dispatch(self, origin)
})
}
fn dispatch_bypass_filter_with_storage_layer(self, origin: Origin) -> #scrate::dispatch::DispatchResultWithPostInfo {
#scrate::storage::with_storage_layer(|| {
#scrate::traits::UnfilteredDispatchable::dispatch_bypass_filter(self, origin)
})
}
}
#(
impl #scrate::traits::IsSubType<#scrate::dispatch::CallableCallFor<#pallet_names, #runtime>> for Call {
@@ -267,9 +267,9 @@ pub fn expand_call(def: &mut Def) -> proc_macro2::TokenStream {
#frame_support::sp_tracing::enter_span!(
#frame_support::sp_tracing::trace_span!(stringify!(#fn_name))
);
// We execute all dispatchable in at least one storage layer, allowing them
// We execute all dispatchable in a new storage layer, allowing them
// to return an error at any point, and undoing any storage changes.
#frame_support::storage::in_storage_layer(|| {
#frame_support::storage::with_storage_layer(|| {
<#pallet_ident<#type_use_gen>>::#fn_name(origin, #( #args_name, )* )
.map(Into::into).map_err(Into::into)
})
+3 -4
View File
@@ -29,8 +29,7 @@ pub use crate::{
result,
},
traits::{
CallMetadata, DispatchableWithStorageLayer, GetCallMetadata, GetCallName,
GetStorageVersion, UnfilteredDispatchable,
CallMetadata, GetCallMetadata, GetCallName, GetStorageVersion, UnfilteredDispatchable,
},
weights::{
ClassifyDispatch, DispatchInfo, GetDispatchInfo, PaysFee, PostDispatchInfo,
@@ -1473,9 +1472,9 @@ macro_rules! decl_module {
$ignore:ident
$mod_type:ident<$trait_instance:ident $(, $instance:ident)?> $fn_name:ident $origin:ident $system:ident [ $( $param_name:ident),* ]
) => {
// We execute all dispatchable in at least one storage layer, allowing them
// We execute all dispatchable in a new storage layer, allowing them
// to return an error at any point, and undoing any storage changes.
$crate::storage::in_storage_layer(|| {
$crate::storage::with_storage_layer(|| {
<$mod_type<$trait_instance $(, $instance)?>>::$fn_name( $origin $(, $param_name )* ).map(Into::into).map_err(Into::into)
})
};
+2 -3
View File
@@ -96,9 +96,8 @@ mod dispatch;
#[allow(deprecated)]
pub use dispatch::EnsureOneOf;
pub use dispatch::{
AsEnsureOriginWithArg, DispatchableWithStorageLayer, EitherOf, EitherOfDiverse, EnsureOrigin,
EnsureOriginWithArg, MapSuccess, NeverEnsureOrigin, OriginTrait, TryMapSuccess,
UnfilteredDispatchable,
AsEnsureOriginWithArg, EitherOf, EitherOfDiverse, EnsureOrigin, EnsureOriginWithArg,
MapSuccess, NeverEnsureOrigin, OriginTrait, TryMapSuccess, UnfilteredDispatchable,
};
mod voting;
@@ -236,23 +236,6 @@ pub trait UnfilteredDispatchable {
fn dispatch_bypass_filter(self, origin: Self::Origin) -> DispatchResultWithPostInfo;
}
/// Type that can be dispatched with an additional storage layer which is used to execute the call.
pub trait DispatchableWithStorageLayer {
/// The origin type of the runtime, (i.e. `frame_system::Config::Origin`).
type Origin;
/// Same as `dispatch` from the [`frame_support::dispatch::Dispatchable`] trait, but
/// specifically spawns a new storage layer to execute the call inside of.
fn dispatch_with_storage_layer(self, origin: Self::Origin) -> DispatchResultWithPostInfo;
/// Same as `dispatch_bypass_filter` from the [`UnfilteredDispatchable`] trait, but specifically
/// spawns a new storage layer to execute the call inside of.
fn dispatch_bypass_filter_with_storage_layer(
self,
origin: Self::Origin,
) -> DispatchResultWithPostInfo;
}
/// Methods available on `frame_system::Config::Origin`.
pub trait OriginTrait: Sized {
/// Runtime call type, as in `frame_system::Config::Call`