From a372fd6394e748ba766d778627b860e5833637b3 Mon Sep 17 00:00:00 2001 From: Serban Iorga <serban@parity.io> Date: Fri, 21 Oct 2022 13:43:59 +0300 Subject: [PATCH] Fix parachains_loop::tests::minimal_working_case --- bridges/relays/parachains/src/parachains_loop.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/bridges/relays/parachains/src/parachains_loop.rs b/bridges/relays/parachains/src/parachains_loop.rs index 6648f2efc72..3ef9a7f7a73 100644 --- a/bridges/relays/parachains/src/parachains_loop.rs +++ b/bridges/relays/parachains/src/parachains_loop.rs @@ -24,7 +24,7 @@ use bp_polkadot_core::{ }; use futures::{ future::{FutureExt, Shared}, - poll, select, + poll, select_biased, }; use relay_substrate_client::{BlockNumberOf, Chain, HeaderIdOf}; use relay_utils::{ @@ -216,10 +216,12 @@ where // regular errors. loop { - // either wait for new block, or exit signal - select! { - _ = async_std::task::sleep(min_block_interval).fuse() => {}, + // Either wait for new block, or exit signal. + // Please note that we are prioritizing the exit signal since if both events happen at once + // it doesn't make sense to perform one more loop iteration. + select_biased! { _ = exit_signal => return Ok(()), + _ = async_std::task::sleep(min_block_interval).fuse() => {}, } // if source client is not yet synced, we'll need to sleep. Otherwise we risk submitting too -- GitLab