From 7839400f1203b1c1de2ff84db5f5ffcf31e20d87 Mon Sep 17 00:00:00 2001
From: georgepisaltu <52418509+georgepisaltu@users.noreply.github.com>
Date: Tue, 12 Mar 2024 00:12:58 +0200
Subject: [PATCH] [Collator Selection] Fix weight refund for
 `set_candidacy_bond` (#3643)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes #3642

This PR implements the weight refund of
`pallet_collator_selection::set_candidacy_bond` to account for no
iterations when the bond is decreased.

---------

Signed-off-by: georgepisaltu <george.pisaltu@parity.io>
Co-authored-by: Bastian Köcher <git@kchr.de>
---
 cumulus/pallets/collator-selection/src/lib.rs |  6 +++++-
 prdoc/pr_3643.prdoc                           | 12 ++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 prdoc/pr_3643.prdoc

diff --git a/cumulus/pallets/collator-selection/src/lib.rs b/cumulus/pallets/collator-selection/src/lib.rs
index fb4c4a445df..62c00737f91 100644
--- a/cumulus/pallets/collator-selection/src/lib.rs
+++ b/cumulus/pallets/collator-selection/src/lib.rs
@@ -495,7 +495,11 @@ pub mod pallet {
 				})
 				.unwrap_or_default();
 			Self::deposit_event(Event::NewCandidacyBond { bond_amount: bond });
-			Ok(Some(T::WeightInfo::set_candidacy_bond(initial_len as u32, kicked as u32)).into())
+			Ok(Some(T::WeightInfo::set_candidacy_bond(
+				bond_increased.then(|| initial_len as u32).unwrap_or_default(),
+				kicked as u32,
+			))
+			.into())
 		}
 
 		/// Register this account as a collator candidate. The account must (a) already have
diff --git a/prdoc/pr_3643.prdoc b/prdoc/pr_3643.prdoc
new file mode 100644
index 00000000000..6e85af8d99a
--- /dev/null
+++ b/prdoc/pr_3643.prdoc
@@ -0,0 +1,12 @@
+# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0
+# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json
+
+title: Fix weight refund for `pallet_collator_selection::set_candidacy_bond`
+
+doc:
+  - audience: Runtime Dev
+    description: |
+      This PR implements the weight refund of `pallet_collator_selection::set_candidacy_bond` to
+      account for no iterations over the candidate list when the candidacy bond is decreased.
+crates:
+  - name: pallet-collator-selection
-- 
GitLab