Skip to content

Commit f2fc5ee

Browse files
authored
use schedule traits v3 instead of v1 (#1001)
1 parent 764922f commit f2fc5ee

File tree

2 files changed

+37
-43
lines changed

2 files changed

+37
-43
lines changed

authority/src/lib.rs

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,21 @@ use frame_support::{
3232
pallet_prelude::*,
3333
traits::{
3434
schedule::{DispatchTime, Priority},
35-
EitherOfDiverse, EnsureOrigin, Get, IsType, OriginTrait,
35+
Bounded, EitherOfDiverse, EnsureOrigin, Get, IsType, OriginTrait,
3636
},
3737
};
3838
use frame_system::{pallet_prelude::*, EnsureRoot, EnsureSigned};
3939
use parity_scale_codec::MaxEncodedLen;
4040
use scale_info::TypeInfo;
4141
use sp_core::defer;
42+
use sp_io::hashing::blake2_256;
4243
use sp_runtime::{
4344
traits::{CheckedSub, Dispatchable, Hash, Saturating},
4445
ArithmeticError, DispatchError, DispatchResult, Either, RuntimeDebug,
4546
};
4647
use sp_std::prelude::*;
4748

48-
// Todo: Switch to current v3 api: https://github.com/open-web3-stack/open-runtime-module-library/issues/995
49-
#[allow(deprecated)]
50-
use frame_support::traits::schedule::v1::Named as ScheduleNamed;
49+
use frame_support::traits::schedule::v3::Named as ScheduleNamed;
5150

5251
mod mock;
5352
mod tests;
@@ -201,6 +200,7 @@ pub mod module {
201200
#[pallet::origin]
202201
pub type Origin<T> = DelayedOrigin<BlockNumberFor<T>, <T as Config>::PalletsOrigin>;
203202
pub(crate) type CallOf<T> = <T as Config>::RuntimeCall;
203+
pub(crate) type BoundedCallOf<T> = Bounded<CallOf<T>, <T as frame_system::Config>::Hashing>;
204204

205205
#[pallet::config]
206206
pub trait Config: frame_system::Config {
@@ -221,8 +221,12 @@ pub mod module {
221221
+ GetDispatchInfo;
222222

223223
/// The Scheduler.
224-
#[allow(deprecated)]
225-
type Scheduler: ScheduleNamed<BlockNumberFor<Self>, <Self as Config>::RuntimeCall, Self::PalletsOrigin>;
224+
type Scheduler: ScheduleNamed<
225+
BlockNumberFor<Self>,
226+
<Self as Config>::RuntimeCall,
227+
Self::PalletsOrigin,
228+
Hasher = Self::Hashing,
229+
>;
226230

227231
/// The type represent origin that can be dispatched by other origins.
228232
type AsOriginId: Parameter + AsOriginId<<Self as frame_system::Config>::RuntimeOrigin, Self::PalletsOrigin>;
@@ -337,7 +341,7 @@ pub mod module {
337341
when: DispatchTime<BlockNumberFor<T>>,
338342
priority: Priority,
339343
with_delayed_origin: bool,
340-
call: Box<CallOf<T>>,
344+
call: Box<BoundedCallOf<T>>,
341345
) -> DispatchResult {
342346
T::AuthorityConfig::check_schedule_dispatch(origin.clone(), priority)?;
343347

@@ -364,16 +368,9 @@ pub mod module {
364368
};
365369
let pallets_origin = schedule_origin.caller().clone();
366370

367-
#[allow(deprecated)]
368-
T::Scheduler::schedule_named(
369-
Encode::encode(&(&pallets_origin, id)),
370-
when,
371-
None,
372-
priority,
373-
pallets_origin.clone(),
374-
*call,
375-
)
376-
.map_err(|_| Error::<T>::FailedToSchedule)?;
371+
let task_name = (&pallets_origin, id).using_encoded(blake2_256);
372+
T::Scheduler::schedule_named(task_name, when, None, priority, pallets_origin.clone(), *call)
373+
.map_err(|_| Error::<T>::FailedToSchedule)?;
377374

378375
Self::deposit_event(Event::Scheduled {
379376
origin: pallets_origin,
@@ -402,9 +399,8 @@ pub mod module {
402399
};
403400

404401
T::AuthorityConfig::check_fast_track_schedule(origin, &initial_origin, new_delay)?;
405-
#[allow(deprecated)]
406-
T::Scheduler::reschedule_named((&initial_origin, task_id).encode(), when)
407-
.map_err(|_| Error::<T>::FailedToFastTrack)?;
402+
let task_name = (&initial_origin, task_id).using_encoded(blake2_256);
403+
T::Scheduler::reschedule_named(task_name, when).map_err(|_| Error::<T>::FailedToFastTrack)?;
408404

409405
Self::deposit_event(Event::FastTracked {
410406
origin: *initial_origin,
@@ -425,12 +421,9 @@ pub mod module {
425421
) -> DispatchResult {
426422
T::AuthorityConfig::check_delay_schedule(origin, &initial_origin)?;
427423

428-
#[allow(deprecated)]
429-
T::Scheduler::reschedule_named(
430-
(&initial_origin, task_id).encode(),
431-
DispatchTime::After(additional_delay),
432-
)
433-
.map_err(|_| Error::<T>::FailedToDelay)?;
424+
let task_name = (&initial_origin, task_id).using_encoded(blake2_256);
425+
T::Scheduler::reschedule_named(task_name, DispatchTime::After(additional_delay))
426+
.map_err(|_| Error::<T>::FailedToDelay)?;
434427

435428
let now = frame_system::Pallet::<T>::block_number();
436429
let dispatch_at = now.saturating_add(additional_delay);
@@ -452,8 +445,9 @@ pub mod module {
452445
task_id: ScheduleTaskIndex,
453446
) -> DispatchResult {
454447
T::AuthorityConfig::check_cancel_schedule(origin, &initial_origin)?;
455-
#[allow(deprecated)]
456-
T::Scheduler::cancel_named((&initial_origin, task_id).encode()).map_err(|_| Error::<T>::FailedToCancel)?;
448+
449+
let task_name = (&initial_origin, task_id).using_encoded(blake2_256);
450+
T::Scheduler::cancel_named(task_name).map_err(|_| Error::<T>::FailedToCancel)?;
457451

458452
Self::deposit_event(Event::Cancelled {
459453
origin: *initial_origin,

authority/src/tests.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ use super::*;
66
use frame_support::{
77
assert_noop, assert_ok,
88
dispatch::DispatchErrorWithPostInfo,
9-
traits::{schedule::DispatchTime, OriginTrait},
9+
traits::{schedule::DispatchTime, OriginTrait, StorePreimage},
1010
};
1111
use frame_system::RawOrigin;
1212
use mock::{
13-
authority, run_to_block, Authority, BlockNumber, ExtBuilder, MockAsOriginId, OriginCaller, Runtime, RuntimeCall,
14-
RuntimeOrigin, System,
13+
authority, run_to_block, Authority, BlockNumber, ExtBuilder, MockAsOriginId, OriginCaller, Preimage, Runtime,
14+
RuntimeCall, RuntimeOrigin, System,
1515
};
1616
use parity_scale_codec::MaxEncodedLen;
1717
use sp_io::hashing::blake2_256;
@@ -74,7 +74,7 @@ fn schedule_dispatch_at_work() {
7474
DispatchTime::At(1),
7575
0,
7676
true,
77-
Box::new(call.clone())
77+
Box::new(Preimage::bound(call.clone()).unwrap())
7878
),
7979
Error::<Runtime>::FailedToSchedule
8080
);
@@ -84,7 +84,7 @@ fn schedule_dispatch_at_work() {
8484
DispatchTime::At(2),
8585
0,
8686
true,
87-
Box::new(call.clone())
87+
Box::new(Preimage::bound(call.clone()).unwrap())
8888
));
8989
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
9090
origin: OriginCaller::Authority(DelayedOrigin {
@@ -109,7 +109,7 @@ fn schedule_dispatch_at_work() {
109109
DispatchTime::At(3),
110110
0,
111111
false,
112-
Box::new(call)
112+
Box::new(Preimage::bound(call).unwrap())
113113
));
114114
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
115115
origin: OriginCaller::system(RawOrigin::Root),
@@ -144,7 +144,7 @@ fn schedule_dispatch_after_work() {
144144
DispatchTime::At(0),
145145
0,
146146
true,
147-
Box::new(call.clone())
147+
Box::new(Preimage::bound(call.clone()).unwrap())
148148
),
149149
ArithmeticError::Overflow
150150
);
@@ -154,7 +154,7 @@ fn schedule_dispatch_after_work() {
154154
DispatchTime::After(0),
155155
0,
156156
true,
157-
Box::new(call.clone())
157+
Box::new(Preimage::bound(call.clone()).unwrap())
158158
));
159159
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
160160
origin: OriginCaller::Authority(DelayedOrigin {
@@ -179,7 +179,7 @@ fn schedule_dispatch_after_work() {
179179
DispatchTime::After(0),
180180
0,
181181
false,
182-
Box::new(call)
182+
Box::new(Preimage::bound(call).unwrap())
183183
));
184184
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
185185
origin: OriginCaller::system(RawOrigin::Root),
@@ -214,7 +214,7 @@ fn fast_track_scheduled_dispatch_work() {
214214
DispatchTime::At(2),
215215
0,
216216
true,
217-
Box::new(call.clone())
217+
Box::new(Preimage::bound(call.clone()).unwrap())
218218
));
219219
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
220220
origin: OriginCaller::Authority(DelayedOrigin {
@@ -255,7 +255,7 @@ fn fast_track_scheduled_dispatch_work() {
255255
DispatchTime::At(2),
256256
0,
257257
false,
258-
Box::new(call)
258+
Box::new(Preimage::bound(call.clone()).unwrap())
259259
));
260260
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
261261
origin: OriginCaller::system(RawOrigin::Root),
@@ -293,7 +293,7 @@ fn delay_scheduled_dispatch_work() {
293293
DispatchTime::At(2),
294294
0,
295295
true,
296-
Box::new(call.clone())
296+
Box::new(Preimage::bound(call.clone()).unwrap())
297297
));
298298
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
299299
origin: OriginCaller::Authority(DelayedOrigin {
@@ -334,7 +334,7 @@ fn delay_scheduled_dispatch_work() {
334334
DispatchTime::At(2),
335335
0,
336336
false,
337-
Box::new(call)
337+
Box::new(Preimage::bound(call).unwrap())
338338
));
339339
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
340340
origin: OriginCaller::system(RawOrigin::Root),
@@ -371,7 +371,7 @@ fn cancel_scheduled_dispatch_work() {
371371
DispatchTime::At(2),
372372
0,
373373
true,
374-
Box::new(call.clone())
374+
Box::new(Preimage::bound(call.clone()).unwrap())
375375
));
376376
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
377377
origin: OriginCaller::Authority(DelayedOrigin {
@@ -410,7 +410,7 @@ fn cancel_scheduled_dispatch_work() {
410410
DispatchTime::At(2),
411411
0,
412412
false,
413-
Box::new(call)
413+
Box::new(Preimage::bound(call).unwrap())
414414
));
415415
System::assert_last_event(mock::RuntimeEvent::Authority(Event::Scheduled {
416416
origin: OriginCaller::system(RawOrigin::Root),

0 commit comments

Comments
 (0)