From a989ddfab901b1761b6c31557997ef40765abb85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Wed, 24 Jan 2024 14:10:42 +0100 Subject: [PATCH] statement-distribution: Ensure we deactivate leaves before activating (#3042) As activation can fail, we ensure that we don't miss deactivation of leaves. --- polkadot/node/network/statement-distribution/src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/polkadot/node/network/statement-distribution/src/lib.rs b/polkadot/node/network/statement-distribution/src/lib.rs index a1ba1137b5ac..54567f0d8afa 100644 --- a/polkadot/node/network/statement-distribution/src/lib.rs +++ b/polkadot/node/network/statement-distribution/src/lib.rs @@ -319,8 +319,10 @@ impl StatementDistributionSubsystem { if let Some(ref activated) = activated { let mode = prospective_parachains_mode(ctx.sender(), activated.hash).await?; if let ProspectiveParachainsMode::Enabled { .. } = mode { - v2::handle_active_leaves_update(ctx, state, activated, mode).await?; + // Ensure we deactivate first, before we activate the new block. + // Activation can fail and then we would skip the deactivation. v2::handle_deactivate_leaves(state, &deactivated); + v2::handle_active_leaves_update(ctx, state, activated, mode).await?; } else if let ProspectiveParachainsMode::Disabled = mode { for deactivated in &deactivated { crate::legacy_v1::handle_deactivate_leaf(legacy_v1_state, *deactivated);