From 475e7a147676a4e7a9d255ddc7969dd35ea22882 Mon Sep 17 00:00:00 2001 From: PG Herveou <pgherveou@gmail.com> Date: Wed, 6 Mar 2024 07:47:33 +0100 Subject: [PATCH] Contracts: Charge min amount when processing deletion queue (#2934) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alexander Theißen <alex.theissen@me.com> --- substrate/frame/contracts/src/storage.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/substrate/frame/contracts/src/storage.rs b/substrate/frame/contracts/src/storage.rs index 3304166607d..52c5150ca21 100644 --- a/substrate/frame/contracts/src/storage.rs +++ b/substrate/frame/contracts/src/storage.rs @@ -322,7 +322,8 @@ impl<T: Config> ContractInfo<T> { KillStorageResult::SomeRemaining(_) => return weight_limit, KillStorageResult::AllRemoved(keys_removed) => { entry.remove(); - remaining_key_budget = remaining_key_budget.saturating_sub(keys_removed); + // charge at least one key even if none were removed. + remaining_key_budget = remaining_key_budget.saturating_sub(keys_removed.max(1)); }, }; } -- GitLab