From 0470acee523dff707e70312f3c452a2d27072c42 Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Thu, 29 Dec 2022 11:18:37 +0300 Subject: [PATCH 1/3] expose metrics of on-demand relay chain headers sync from with-parachain complex relays --- .../src/cli/relay_headers_and_messages/mod.rs | 4 +++- .../relay_headers_and_messages/parachain_to_parachain.rs | 4 ++++ .../cli/relay_headers_and_messages/relay_to_parachain.rs | 4 ++++ .../src/cli/relay_headers_and_messages/relay_to_relay.rs | 4 ++++ relays/lib-substrate-relay/src/on_demand/headers.rs | 8 +++++++- 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/relays/bin-substrate/src/cli/relay_headers_and_messages/mod.rs b/relays/bin-substrate/src/cli/relay_headers_and_messages/mod.rs index 1a809a1f48..e3815a0a6d 100644 --- a/relays/bin-substrate/src/cli/relay_headers_and_messages/mod.rs +++ b/relays/bin-substrate/src/cli/relay_headers_and_messages/mod.rs @@ -240,6 +240,7 @@ trait Full2WayBridgeBase: Sized + Send + Sync { /// Start on-demand headers relays. async fn start_on_demand_headers_relayers( &mut self, + metrics_params: &MetricsParams, ) -> anyhow::Result<( Arc>, Arc>, @@ -317,8 +318,9 @@ where } // start on-demand header relays + let metrics_params = self.base().common().metrics_params.clone(); let (left_to_right_on_demand_headers, right_to_left_on_demand_headers) = - self.mut_base().start_on_demand_headers_relayers().await?; + self.mut_base().start_on_demand_headers_relayers(&metrics_params).await?; // add balance-related metrics { diff --git a/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs b/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs index f832722c6b..98fde20bd2 100644 --- a/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs +++ b/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs @@ -27,6 +27,7 @@ use pallet_bridge_parachains::{RelayBlockHash, RelayBlockHasher, RelayBlockNumbe use relay_substrate_client::{ AccountIdOf, AccountKeyPairOf, Chain, ChainWithTransactions, Client, Parachain, }; +use relay_utils::metrics::MetricsParams; use sp_core::Pair; use substrate_relay_helper::{ finality::SubstrateFinalitySyncPipeline, @@ -205,6 +206,7 @@ where async fn start_on_demand_headers_relayers( &mut self, + metrics_params: &MetricsParams, ) -> anyhow::Result<( Arc>, Arc>, @@ -245,6 +247,7 @@ where self.common.right.client.clone(), self.left_headers_to_right_transaction_params.clone(), self.common.shared.only_mandatory_headers, + Some(metrics_params.clone()), ); let right_relay_to_left_on_demand_headers = OnDemandHeadersRelay::<::RelayFinality>::new( @@ -252,6 +255,7 @@ where self.common.left.client.clone(), self.right_headers_to_left_transaction_params.clone(), self.common.shared.only_mandatory_headers, + Some(metrics_params.clone()), ); let left_to_right_on_demand_parachains = OnDemandParachainsRelay::< diff --git a/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs b/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs index 281996534e..12a878c57b 100644 --- a/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs +++ b/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs @@ -30,6 +30,7 @@ use pallet_bridge_parachains::{RelayBlockHash, RelayBlockHasher, RelayBlockNumbe use relay_substrate_client::{ AccountIdOf, AccountKeyPairOf, Chain, ChainWithTransactions, Client, Parachain, }; +use relay_utils::metrics::MetricsParams; use sp_core::Pair; use substrate_relay_helper::{ finality::SubstrateFinalitySyncPipeline, @@ -188,6 +189,7 @@ where async fn start_on_demand_headers_relayers( &mut self, + metrics_params: &MetricsParams, ) -> anyhow::Result<( Arc>, Arc>, @@ -224,6 +226,7 @@ where self.common.right.client.clone(), self.left_headers_to_right_transaction_params.clone(), self.common.shared.only_mandatory_headers, + None, ); let right_relay_to_left_on_demand_headers = OnDemandHeadersRelay::<::RelayFinality>::new( @@ -231,6 +234,7 @@ where self.common.left.client.clone(), self.right_headers_to_left_transaction_params.clone(), self.common.shared.only_mandatory_headers, + Some(metrics_params.clone()), ); let right_to_left_on_demand_parachains = OnDemandParachainsRelay::< ::ParachainFinality, diff --git a/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs b/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs index a2815bb613..1de3acc15a 100644 --- a/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs +++ b/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs @@ -23,6 +23,7 @@ use crate::cli::{ CliChain, }; use relay_substrate_client::{AccountIdOf, AccountKeyPairOf, ChainWithTransactions}; +use relay_utils::metrics::MetricsParams; use sp_core::Pair; use substrate_relay_helper::{ finality::SubstrateFinalitySyncPipeline, @@ -141,6 +142,7 @@ where async fn start_on_demand_headers_relayers( &mut self, + _metrics_params: &MetricsParams, ) -> anyhow::Result<( Arc>, Arc>, @@ -173,6 +175,7 @@ where self.common.right.client.clone(), self.left_to_right_transaction_params.clone(), self.common.shared.only_mandatory_headers, + None, ); let right_to_left_on_demand_headers = OnDemandHeadersRelay::<::Finality>::new( @@ -180,6 +183,7 @@ where self.common.left.client.clone(), self.right_to_left_transaction_params.clone(), self.common.shared.only_mandatory_headers, + None, ); Ok((Arc::new(left_to_right_on_demand_headers), Arc::new(right_to_left_on_demand_headers))) diff --git a/relays/lib-substrate-relay/src/on_demand/headers.rs b/relays/lib-substrate-relay/src/on_demand/headers.rs index 369520f0e9..e9068d0340 100644 --- a/relays/lib-substrate-relay/src/on_demand/headers.rs +++ b/relays/lib-substrate-relay/src/on_demand/headers.rs @@ -64,11 +64,15 @@ pub struct OnDemandHeadersRelay { impl OnDemandHeadersRelay

{ /// Create new on-demand headers relay. + /// + /// If `metrics_params` is `Some(_)`, the metrics of the finalty relay are registered. + /// Otherwise, all required metrics must be exposed outside of this method. pub fn new( source_client: Client, target_client: Client, target_transaction_params: TransactionParams>, only_mandatory_headers: bool, + metrics_params: Option, ) -> Self where AccountIdOf: @@ -87,6 +91,7 @@ impl OnDemandHeadersRelay

{ target_transaction_params, only_mandatory_headers, required_header_number, + metrics_params, ) .await; }); @@ -148,6 +153,7 @@ async fn background_task( target_transaction_params: TransactionParams>, only_mandatory_headers: bool, required_header_number: RequiredHeaderNumberRef, + metrics_params: Option, ) where AccountIdOf: From< as sp_core::Pair>::Public>, { @@ -310,7 +316,7 @@ async fn background_task( stall_timeout, only_mandatory_headers, }, - MetricsParams::disabled(), + metrics_params.clone().unwrap_or_else(|| MetricsParams::disabled()), futures::future::pending(), ) .fuse(), From 5caa054836260dac2eefc27ecaf3e002b562c577 Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Thu, 29 Dec 2022 11:24:19 +0300 Subject: [PATCH 2/3] spelling --- relays/lib-substrate-relay/src/on_demand/headers.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relays/lib-substrate-relay/src/on_demand/headers.rs b/relays/lib-substrate-relay/src/on_demand/headers.rs index e9068d0340..465b03c04a 100644 --- a/relays/lib-substrate-relay/src/on_demand/headers.rs +++ b/relays/lib-substrate-relay/src/on_demand/headers.rs @@ -65,7 +65,7 @@ pub struct OnDemandHeadersRelay { impl OnDemandHeadersRelay

{ /// Create new on-demand headers relay. /// - /// If `metrics_params` is `Some(_)`, the metrics of the finalty relay are registered. + /// If `metrics_params` is `Some(_)`, the metrics of the finality relay are registered. /// Otherwise, all required metrics must be exposed outside of this method. pub fn new( source_client: Client, From 71e7c662c706027f6f9f63635d01bd180a73798c Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Thu, 29 Dec 2022 11:36:54 +0300 Subject: [PATCH 3/3] remove renundant arg --- .../bin-substrate/src/cli/relay_headers_and_messages/mod.rs | 4 +--- .../relay_headers_and_messages/parachain_to_parachain.rs | 6 ++---- .../cli/relay_headers_and_messages/relay_to_parachain.rs | 4 +--- .../src/cli/relay_headers_and_messages/relay_to_relay.rs | 2 -- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/relays/bin-substrate/src/cli/relay_headers_and_messages/mod.rs b/relays/bin-substrate/src/cli/relay_headers_and_messages/mod.rs index e3815a0a6d..1a809a1f48 100644 --- a/relays/bin-substrate/src/cli/relay_headers_and_messages/mod.rs +++ b/relays/bin-substrate/src/cli/relay_headers_and_messages/mod.rs @@ -240,7 +240,6 @@ trait Full2WayBridgeBase: Sized + Send + Sync { /// Start on-demand headers relays. async fn start_on_demand_headers_relayers( &mut self, - metrics_params: &MetricsParams, ) -> anyhow::Result<( Arc>, Arc>, @@ -318,9 +317,8 @@ where } // start on-demand header relays - let metrics_params = self.base().common().metrics_params.clone(); let (left_to_right_on_demand_headers, right_to_left_on_demand_headers) = - self.mut_base().start_on_demand_headers_relayers(&metrics_params).await?; + self.mut_base().start_on_demand_headers_relayers().await?; // add balance-related metrics { diff --git a/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs b/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs index 98fde20bd2..3be07404eb 100644 --- a/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs +++ b/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs @@ -27,7 +27,6 @@ use pallet_bridge_parachains::{RelayBlockHash, RelayBlockHasher, RelayBlockNumbe use relay_substrate_client::{ AccountIdOf, AccountKeyPairOf, Chain, ChainWithTransactions, Client, Parachain, }; -use relay_utils::metrics::MetricsParams; use sp_core::Pair; use substrate_relay_helper::{ finality::SubstrateFinalitySyncPipeline, @@ -206,7 +205,6 @@ where async fn start_on_demand_headers_relayers( &mut self, - metrics_params: &MetricsParams, ) -> anyhow::Result<( Arc>, Arc>, @@ -247,7 +245,7 @@ where self.common.right.client.clone(), self.left_headers_to_right_transaction_params.clone(), self.common.shared.only_mandatory_headers, - Some(metrics_params.clone()), + Some(self.common.metrics_params.clone()), ); let right_relay_to_left_on_demand_headers = OnDemandHeadersRelay::<::RelayFinality>::new( @@ -255,7 +253,7 @@ where self.common.left.client.clone(), self.right_headers_to_left_transaction_params.clone(), self.common.shared.only_mandatory_headers, - Some(metrics_params.clone()), + Some(self.common.metrics_params.clone()), ); let left_to_right_on_demand_parachains = OnDemandParachainsRelay::< diff --git a/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs b/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs index 12a878c57b..babd39e558 100644 --- a/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs +++ b/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs @@ -30,7 +30,6 @@ use pallet_bridge_parachains::{RelayBlockHash, RelayBlockHasher, RelayBlockNumbe use relay_substrate_client::{ AccountIdOf, AccountKeyPairOf, Chain, ChainWithTransactions, Client, Parachain, }; -use relay_utils::metrics::MetricsParams; use sp_core::Pair; use substrate_relay_helper::{ finality::SubstrateFinalitySyncPipeline, @@ -189,7 +188,6 @@ where async fn start_on_demand_headers_relayers( &mut self, - metrics_params: &MetricsParams, ) -> anyhow::Result<( Arc>, Arc>, @@ -234,7 +232,7 @@ where self.common.left.client.clone(), self.right_headers_to_left_transaction_params.clone(), self.common.shared.only_mandatory_headers, - Some(metrics_params.clone()), + Some(self.common.metrics_params.clone()), ); let right_to_left_on_demand_parachains = OnDemandParachainsRelay::< ::ParachainFinality, diff --git a/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs b/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs index 1de3acc15a..071716dedb 100644 --- a/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs +++ b/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs @@ -23,7 +23,6 @@ use crate::cli::{ CliChain, }; use relay_substrate_client::{AccountIdOf, AccountKeyPairOf, ChainWithTransactions}; -use relay_utils::metrics::MetricsParams; use sp_core::Pair; use substrate_relay_helper::{ finality::SubstrateFinalitySyncPipeline, @@ -142,7 +141,6 @@ where async fn start_on_demand_headers_relayers( &mut self, - _metrics_params: &MetricsParams, ) -> anyhow::Result<( Arc>, Arc>,