From fc749fa7a0d45c74e2e575dc39ec16418efed902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Vilhelm=20=C3=81sgeirsson?= Date: Thu, 11 Jan 2024 11:44:09 +0000 Subject: [PATCH] Fix coretime migration (#2905) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The XCM instruction limit of 100 was being hit by the 1 large message before. The weight ref time also needed to be bumped for these extrinsics. --------- Co-authored-by: Bastian Köcher --- .../parachains/src/coretime/migration.rs | 40 +++++++++++-------- .../runtime/parachains/src/coretime/mod.rs | 2 +- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/polkadot/runtime/parachains/src/coretime/migration.rs b/polkadot/runtime/parachains/src/coretime/migration.rs index 64c10f7319..c720cf0617 100644 --- a/polkadot/runtime/parachains/src/coretime/migration.rs +++ b/polkadot/runtime/parachains/src/coretime/migration.rs @@ -142,8 +142,8 @@ mod v_coretime { let new_core_count = assigner_coretime::Pallet::::session_core_count(); ensure!(new_core_count == prev_core_count, "Total number of cores need to not change."); ensure!( - dmp_queue_size == prev_dmp_queue_size + 1, - "There should have been enqueued one DMP message." + dmp_queue_size > prev_dmp_queue_size, + "There should have been enqueued at least one DMP messages." ); Ok(()) @@ -264,22 +264,30 @@ mod v_coretime { let message_content = iter::once(Instruction::UnpaidExecution { weight_limit: WeightLimit::Unlimited, check_origin: None, - }) - .chain(reservations) - .chain(pool) - .chain(leases) - .chain(set_core_count) - .collect(); + }); - let message = Xcm(message_content); + let reservation_content = message_content.clone().chain(reservations).collect(); + let pool_content = message_content.clone().chain(pool).collect(); + let leases_content = message_content.clone().chain(leases).collect(); + let set_core_count_content = message_content.clone().chain(set_core_count).collect(); + + let messages = vec![ + Xcm(reservation_content), + Xcm(pool_content), + Xcm(leases_content), + Xcm(set_core_count_content), + ]; + + for message in messages { + send_xcm::( + MultiLocation { + parents: 0, + interior: Junctions::X1(Junction::Parachain(T::BrokerId::get())), + }, + message, + )?; + } - send_xcm::( - MultiLocation { - parents: 0, - interior: Junctions::X1(Junction::Parachain(T::BrokerId::get())), - }, - message, - )?; Ok(()) } } diff --git a/polkadot/runtime/parachains/src/coretime/mod.rs b/polkadot/runtime/parachains/src/coretime/mod.rs index 60bd8f8119..aa074a293c 100644 --- a/polkadot/runtime/parachains/src/coretime/mod.rs +++ b/polkadot/runtime/parachains/src/coretime/mod.rs @@ -252,7 +252,7 @@ fn mk_coretime_call(call: crate::coretime::CoretimeCalls) -> Instruction<()> { origin_kind: OriginKind::Superuser, // Largest call is set_lease with 1526 byte: // Longest call is reserve() with 31_000_000 - require_weight_at_most: Weight::from_parts(110_000_000, 20_000), + require_weight_at_most: Weight::from_parts(170_000_000, 20_000), call: BrokerRuntimePallets::Broker(call).encode().into(), } }