diff --git a/.gitlab/pipeline/check.yml b/.gitlab/pipeline/check.yml
index 4071fdf975..429491fb17 100644
--- a/.gitlab/pipeline/check.yml
+++ b/.gitlab/pipeline/check.yml
@@ -151,6 +151,31 @@ check-runtime-migration-asset-hub-westend:
PACKAGE: "asset-hub-westend-runtime"
WASM: "asset_hub_westend_runtime.compact.compressed.wasm"
URI: "wss://westend-asset-hub-rpc.polkadot.io:443"
+
+check-runtime-migration-asset-hub-rococo:
+ stage: check
+ extends:
+ - .docker-env
+ - .test-pr-refs
+ - .check-runtime-migration
+ variables:
+ NETWORK: "asset-hub-rococo"
+ PACKAGE: "asset-hub-rococo-runtime"
+ WASM: "asset_hub_rococo_runtime.compact.compressed.wasm"
+ URI: "wss://rococo-asset-hub-rpc.polkadot.io:443"
+
+# Check runtime migrations for Parity managed bridge hub chains
+check-runtime-migration-bridge-hub-westend:
+ stage: check
+ extends:
+ - .docker-env
+ - .test-pr-refs
+ - .check-runtime-migration
+ variables:
+ NETWORK: "bridge-hub-westend"
+ PACKAGE: "bridge-hub-westend-runtime"
+ WASM: "bridge_hub_westend_runtime.compact.compressed.wasm"
+ URI: "wss://westend-bridge-hub-rpc.polkadot.io:443"
check-runtime-migration-bridge-hub-rococo:
stage: check
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs
index 4b4ae61a3e..b274f45877 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs
@@ -39,7 +39,9 @@ use sp_api::impl_runtime_apis;
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
use sp_runtime::{
create_runtime_str, generic, impl_opaque_keys,
- traits::{AccountIdConversion, AccountIdLookup, BlakeTwo256, Block as BlockT, Verify},
+ traits::{
+ AccountIdConversion, AccountIdLookup, BlakeTwo256, Block as BlockT, Saturating, Verify,
+ },
transaction_validity::{TransactionSource, TransactionValidity},
ApplyExtrinsicResult, Permill,
};
@@ -959,7 +961,60 @@ pub type SignedExtra = (
pub type UncheckedExtrinsic =
generic::UncheckedExtrinsic
;
/// Migrations to apply on runtime upgrade.
-pub type Migrations = (pallet_collator_selection::migration::v1::MigrateToV1,);
+pub type Migrations =
+ (pallet_collator_selection::migration::v1::MigrateToV1, InitStorageVersions);
+
+/// Migration to initialize storage versions for pallets added after genesis.
+///
+/// This is now done automatically (see ),
+/// but some pallets had made it in and had storage set in them for this parachain before it was
+/// merged.
+pub struct InitStorageVersions;
+
+impl frame_support::traits::OnRuntimeUpgrade for InitStorageVersions {
+ fn on_runtime_upgrade() -> Weight {
+ use frame_support::traits::{GetStorageVersion, StorageVersion};
+
+ let mut writes = 0;
+
+ if PolkadotXcm::on_chain_storage_version() == StorageVersion::new(0) {
+ PolkadotXcm::current_storage_version().put::();
+ writes.saturating_inc();
+ }
+
+ if Multisig::on_chain_storage_version() == StorageVersion::new(0) {
+ Multisig::current_storage_version().put::();
+ writes.saturating_inc();
+ }
+
+ if Assets::on_chain_storage_version() == StorageVersion::new(0) {
+ Assets::current_storage_version().put::();
+ writes.saturating_inc();
+ }
+
+ if Uniques::on_chain_storage_version() == StorageVersion::new(0) {
+ Uniques::current_storage_version().put::();
+ writes.saturating_inc();
+ }
+
+ if Nfts::on_chain_storage_version() == StorageVersion::new(0) {
+ Nfts::current_storage_version().put::();
+ writes.saturating_inc();
+ }
+
+ if ForeignAssets::on_chain_storage_version() == StorageVersion::new(0) {
+ ForeignAssets::current_storage_version().put::();
+ writes.saturating_inc();
+ }
+
+ if PoolAssets::on_chain_storage_version() == StorageVersion::new(0) {
+ PoolAssets::current_storage_version().put::();
+ writes.saturating_inc();
+ }
+
+ ::DbWeight::get().reads_writes(7, writes)
+ }
+}
/// Executive: handles dispatch to the various modules.
pub type Executive = frame_executive::Executive<
diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs
index 5b828bad0c..9d6a53c5ed 100644
--- a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs
+++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs
@@ -405,7 +405,6 @@ construct_runtime!(
XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 30,
PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 31,
CumulusXcm: cumulus_pallet_xcm::{Pallet, Event, Origin} = 32,
- DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 33,
MessageQueue: pallet_message_queue::{Pallet, Call, Storage, Event} = 34,
// Smart Contracts.
diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs
index faee1c68fe..2ac93aed3f 100644
--- a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs
+++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs
@@ -304,9 +304,3 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
parameter_types! {
pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent;
}
-
-impl cumulus_pallet_dmp_queue::Config for Runtime {
- type WeightInfo = cumulus_pallet_dmp_queue::weights::SubstrateWeight;
- type RuntimeEvent = crate::RuntimeEvent;
- type DmpSink = frame_support::traits::EnqueueWithOrigin;
-}