@@ -134,6 +134,8 @@ use crate::scheduler::common::Assignment;
134
134
use serde:: { Deserialize , Serialize } ;
135
135
136
136
pub use crate :: Origin as ParachainOrigin ;
137
+ use crate :: { scheduler, inclusion, dmp} ;
138
+
137
139
138
140
#[ cfg( feature = "runtime-benchmarks" ) ]
139
141
pub mod benchmarking;
@@ -611,6 +613,20 @@ impl WeightInfo for TestWeightInfo {
611
613
}
612
614
}
613
615
616
+ pub trait FreezeParaStoragesAccess {
617
+ type Scheduler : scheduler:: Config ;
618
+ type Inclusion : inclusion:: Config ;
619
+ type Dmp : dmp:: Config ;
620
+ }
621
+
622
+ pub type SchedulerAccess < T > =
623
+ <<T as Config >:: FreezeParaStoragesAccess as FreezeParaStoragesAccess >:: Scheduler ;
624
+ pub type InclusionAccess < T > =
625
+ <<T as Config >:: FreezeParaStoragesAccess as FreezeParaStoragesAccess >:: Inclusion ;
626
+ pub type DmpAccess < T > =
627
+ <<T as Config >:: FreezeParaStoragesAccess as FreezeParaStoragesAccess >:: Dmp ;
628
+
629
+
614
630
#[ frame_support:: pallet]
615
631
pub mod pallet {
616
632
use super :: * ;
@@ -655,6 +671,9 @@ pub mod pallet {
655
671
///
656
672
/// TODO: Remove once coretime is the standard across all chains.
657
673
type AssignCoretime : AssignCoretime ;
674
+
675
+ /// Helper trait to access Freeze Parachain related storage
676
+ type FreezeParaStoragesAccess : FreezeParaStoragesAccess ;
658
677
}
659
678
660
679
#[ pallet:: event]
@@ -1174,18 +1193,22 @@ pub mod pallet {
1174
1193
pub fn freeze_parachain ( origin : OriginFor < T > , para_id : ParaId ) -> DispatchResult {
1175
1194
ensure_root ( origin) ?;
1176
1195
// clean any ongoing activies on the parablock
1177
- crate :: scheduler:: ClaimQueue :: < T > :: mutate ( |cq|{
1196
+ scheduler:: ClaimQueue :: < SchedulerAccess < T > > :: mutate ( |cq|{
1178
1197
for assignments in cq. values_mut ( ) {
1179
- assignments. retain ( |& assignment| {
1198
+ assignments. retain ( |assignment| {
1180
1199
let assigned_para_id = match assignment {
1181
1200
Assignment :: Bulk ( id) => id,
1182
1201
Assignment :: Pool { para_id, ..} => para_id
1183
1202
} ;
1184
- para_id != assigned_para_id
1203
+ para_id != * assigned_para_id
1185
1204
} )
1186
1205
}
1187
1206
} ) ;
1188
- // TODO
1207
+
1208
+ inclusion:: PendingAvailability :: < InclusionAccess < T > > :: remove ( para_id) ;
1209
+ dmp:: DownwardMessageQueues :: < DmpAccess < T > > :: remove ( para_id) ;
1210
+ dmp:: DownwardMessageQueueHeads :: < DmpAccess < T > > :: remove ( para_id) ;
1211
+
1189
1212
FrozenParas :: < T > :: mutate ( |paras|{
1190
1213
paras. push ( para_id)
1191
1214
} ) ;
0 commit comments