Feature gate do_task in frame_system (#2707)

https://github.com/paritytech/polkadot-sdk/pull/1343/ introduced Tasks
API. This one moves `do_task` call in frame_system under the
experimental flag, till the previous one is audited.

---------

Co-authored-by: command-bot <>
This commit is contained in:
gupnik
2023-12-15 11:17:19 +05:30
committed by GitHub
parent 2cee874742
commit 11edbaf6c0
8 changed files with 32 additions and 5 deletions
+5
View File
@@ -407,3 +407,8 @@ try-runtime = [
"pallet-whitelist/try-runtime",
"sp-runtime/try-runtime",
]
experimental = [
"frame-support/experimental",
"frame-system/experimental",
"pallet-example-tasks/experimental",
]
@@ -53,3 +53,4 @@ try-runtime = [
"frame-system/try-runtime",
"sp-runtime/try-runtime",
]
experimental = ["frame-support/experimental", "frame-system/experimental"]
+8 -3
View File
@@ -18,10 +18,13 @@
//! Tests for `pallet-example-tasks`.
#![cfg(test)]
use crate::{mock::*, Numbers, Total};
use frame_support::{assert_noop, assert_ok, traits::Task};
use crate::{mock::*, Numbers};
use frame_support::traits::Task;
use sp_runtime::BuildStorage;
#[cfg(feature = "experimental")]
use frame_support::{assert_noop, assert_ok};
// This function basically just builds a genesis storage key/value store according to
// our desired mockup.
pub fn new_test_ext() -> sp_io::TestExternalities {
@@ -89,6 +92,7 @@ fn task_index_works_at_runtime_level() {
});
}
#[cfg(feature = "experimental")]
#[test]
fn task_execution_works() {
new_test_ext().execute_with(|| {
@@ -105,11 +109,12 @@ fn task_execution_works() {
assert_ok!(System::do_task(RuntimeOrigin::signed(1), task.clone(),));
assert_eq!(Numbers::<Runtime>::get(0), Some(1));
assert_eq!(Numbers::<Runtime>::get(1), None);
assert_eq!(Total::<Runtime>::get(), (1, 4));
assert_eq!(crate::Total::<Runtime>::get(), (1, 4));
System::assert_last_event(frame_system::Event::<Runtime>::TaskCompleted { task }.into());
});
}
#[cfg(feature = "experimental")]
#[test]
fn task_execution_fails_for_invalid_task() {
new_test_ext().execute_with(|| {
+4 -1
View File
@@ -61,7 +61,10 @@ std = [
"sp-version/std",
"test-pallet/std",
]
experimental = ["frame-support/experimental"]
experimental = [
"frame-support/experimental",
"frame-system/experimental",
]
try-runtime = [
"frame-executive/try-runtime",
"frame-support/try-runtime",
@@ -90,7 +90,9 @@ fn module_error_outer_enum_expand_explicit() {
frame_system::Error::NonDefaultComposite => (),
frame_system::Error::NonZeroRefCount => (),
frame_system::Error::CallFiltered => (),
#[cfg(feature = "experimental")]
frame_system::Error::InvalidTask => (),
#[cfg(feature = "experimental")]
frame_system::Error::FailedTask => (),
frame_system::Error::__Ignore(_, _) => (),
},
@@ -90,7 +90,9 @@ fn module_error_outer_enum_expand_implicit() {
frame_system::Error::NonDefaultComposite => (),
frame_system::Error::NonZeroRefCount => (),
frame_system::Error::CallFiltered => (),
#[cfg(feature = "experimental")]
frame_system::Error::InvalidTask => (),
#[cfg(feature = "experimental")]
frame_system::Error::FailedTask => (),
frame_system::Error::__Ignore(_, _) => (),
},
+1
View File
@@ -56,6 +56,7 @@ runtime-benchmarks = [
"sp-runtime/runtime-benchmarks",
]
try-runtime = ["frame-support/try-runtime", "sp-runtime/try-runtime"]
experimental = ["frame-support/experimental"]
[[bench]]
name = "bench"
+9 -1
View File
@@ -323,9 +323,11 @@ pub mod pallet {
#[inject_runtime_type]
type RuntimeCall = ();
/// Converts a module to the index of the module, injected by `construct_runtime!`.
/// The aggregated Task type, injected by `construct_runtime!`.
#[inject_runtime_type]
type RuntimeTask = ();
/// Converts a module to the index of the module, injected by `construct_runtime!`.
#[inject_runtime_type]
type PalletInfo = ();
@@ -637,6 +639,7 @@ pub mod pallet {
Ok(().into())
}
#[cfg(feature = "experimental")]
#[pallet::call_index(8)]
#[pallet::weight(task.weight())]
pub fn do_task(origin: OriginFor<T>, task: T::RuntimeTask) -> DispatchResultWithPostInfo {
@@ -675,10 +678,13 @@ pub mod pallet {
KilledAccount { account: T::AccountId },
/// On on-chain remark happened.
Remarked { sender: T::AccountId, hash: T::Hash },
#[cfg(feature = "experimental")]
/// A [`Task`] has started executing
TaskStarted { task: T::RuntimeTask },
#[cfg(feature = "experimental")]
/// A [`Task`] has finished executing.
TaskCompleted { task: T::RuntimeTask },
#[cfg(feature = "experimental")]
/// A [`Task`] failed during execution.
TaskFailed { task: T::RuntimeTask, err: DispatchError },
}
@@ -702,8 +708,10 @@ pub mod pallet {
NonZeroRefCount,
/// The origin filter prevent the call to be dispatched.
CallFiltered,
#[cfg(feature = "experimental")]
/// The specified [`Task`] is not valid.
InvalidTask,
#[cfg(feature = "experimental")]
/// The specified [`Task`] failed during execution.
FailedTask,
}