From 8dbbf5dd5addda6a378ffe8347b925e73fca0140 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Mon, 1 Aug 2022 11:55:51 +0100 Subject: [PATCH] Use Saturating Math in XCM (#5845) * saturating xcm * Even more saturating Signed-off-by: Oliver Tale-Yazdi Co-authored-by: Oliver Tale-Yazdi --- polkadot/xcm/pallet-xcm/src/lib.rs | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/polkadot/xcm/pallet-xcm/src/lib.rs b/polkadot/xcm/pallet-xcm/src/lib.rs index 4959c440ff..6fc6285a60 100644 --- a/polkadot/xcm/pallet-xcm/src/lib.rs +++ b/polkadot/xcm/pallet-xcm/src/lib.rs @@ -417,13 +417,13 @@ pub mod pallet { // by the destinations being most sent to. let mut q = VersionDiscoveryQueue::::take().into_inner(); // TODO: correct weights. - weight_used += T::DbWeight::get().read + T::DbWeight::get().write; + weight_used.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); q.sort_by_key(|i| i.1); while let Some((versioned_dest, _)) = q.pop() { if let Ok(dest) = MultiLocation::try_from(versioned_dest) { if Self::request_version_notify(dest).is_ok() { // TODO: correct weights. - weight_used += T::DbWeight::get().read + T::DbWeight::get().write; + weight_used.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); break } } @@ -490,7 +490,7 @@ pub mod pallet { WithdrawAsset(assets), InitiateTeleport { assets: Wild(All), dest, xcm: Xcm(vec![]) }, ]); - T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w) + T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000.saturating_add(w)) }, _ => Weight::max_value(), } @@ -528,7 +528,7 @@ pub mod pallet { let mut message = Xcm(vec![ TransferReserveAsset { assets, dest, xcm: Xcm(vec![]) } ]); - T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w) + T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000.saturating_add(w)) }, _ => Weight::max_value(), } @@ -690,7 +690,7 @@ pub mod pallet { let mut message = Xcm(vec![ TransferReserveAsset { assets, dest, xcm: Xcm(vec![]) } ]); - T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w) + T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000.saturating_add(w)) }, _ => Weight::max_value(), } @@ -740,7 +740,7 @@ pub mod pallet { WithdrawAsset(assets), InitiateTeleport { assets: Wild(All), dest, xcm: Xcm(vec![]) }, ]); - T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w) + T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000.saturating_add(w)) }, _ => Weight::max_value(), } @@ -889,17 +889,13 @@ pub mod pallet { let mut weight_used = 0; // TODO: Correct weights for the components of this: - let todo_sv_migrate_weight: Weight = T::DbWeight::get().read + T::DbWeight::get().write; - let todo_vn_migrate_weight: Weight = T::DbWeight::get().read + T::DbWeight::get().write; + let todo_sv_migrate_weight: Weight = T::DbWeight::get().reads_writes(1, 1); + let todo_vn_migrate_weight: Weight = T::DbWeight::get().reads_writes(1, 1); let todo_vnt_already_notified_weight: Weight = T::DbWeight::get().read; - let todo_vnt_notify_weight: Weight = - T::DbWeight::get().read + T::DbWeight::get().write * 3; - let todo_vnt_migrate_weight: Weight = - T::DbWeight::get().read + T::DbWeight::get().write; - let todo_vnt_migrate_fail_weight: Weight = - T::DbWeight::get().read + T::DbWeight::get().write; - let todo_vnt_notify_migrate_weight: Weight = - T::DbWeight::get().read + T::DbWeight::get().write * 3; + let todo_vnt_notify_weight: Weight = T::DbWeight::get().reads_writes(1, 3); + let todo_vnt_migrate_weight: Weight = T::DbWeight::get().reads_writes(1, 1); + let todo_vnt_migrate_fail_weight: Weight = T::DbWeight::get().reads_writes(1, 1); + let todo_vnt_notify_migrate_weight: Weight = T::DbWeight::get().reads_writes(1, 3); use VersionMigrationStage::*;