Add RialtoParachain <> Millau bridge to test deployments (#1412)

* add RialtoParachain <> Millau bridge to test deployments

* flush (still not working, but possible fix in comments)

* proper fix

* fixed on-demand parachains relay case: if better relay header is delivered, then we must select para header that may be proved using this relay header

* dashboards

* fmt

* removing debugging code

* more cleanup
This commit is contained in:
Svyatoslav Nikolsky
2022-05-27 17:32:00 +03:00
committed by Bastian Köcher
parent 0a3f8ace26
commit 4001cfb758
4 changed files with 24 additions and 22 deletions
@@ -187,6 +187,8 @@ impl<C: Chain> Client<C> {
params.host, params.host,
params.port, params.port,
); );
log::info!(target: "bridge", "Connecting to {} node at {}", C::NAME, uri);
let client = tokio let client = tokio
.spawn(async move { .spawn(async move {
RpcClientBuilder::default() RpcClientBuilder::default()
@@ -95,9 +95,9 @@ impl<SourceChain: Chain> OnDemandRelay<BlockNumberOf<SourceChain>>
if required_header > *required_header_number { if required_header > *required_header_number {
log::trace!( log::trace!(
target: "bridge", target: "bridge",
"More {} headers required in {} relay. Going to sync up to the {}", "[{}] More {} headers required. Going to sync up to the {}",
SourceChain::NAME,
self.relay_task_name, self.relay_task_name,
SourceChain::NAME,
required_header, required_header,
); );
@@ -184,7 +184,7 @@ async fn background_task<P: SubstrateFinalitySyncPipeline>(
log::trace!( log::trace!(
target: "bridge", target: "bridge",
"Mandatory headers scan range in {}: ({:?}, {:?}, {:?}) -> {:?}", "[{}] Mandatory headers scan range: ({:?}, {:?}, {:?}) -> {:?}",
relay_task_name, relay_task_name,
required_header_number_value, required_header_number_value,
best_finalized_source_header_at_source_fmt, best_finalized_source_header_at_source_fmt,
@@ -213,18 +213,18 @@ async fn background_task<P: SubstrateFinalitySyncPipeline>(
log::trace!( log::trace!(
target: "bridge", target: "bridge",
"No mandatory {} headers in the range {:?} of {} relay", "[{}] No mandatory {} headers in the range {:?}",
relay_task_name,
P::SourceChain::NAME, P::SourceChain::NAME,
mandatory_scan_range, mandatory_scan_range,
relay_task_name,
); );
}, },
Err(e) => { Err(e) => {
log::warn!( log::warn!(
target: "bridge", target: "bridge",
"Failed to scan mandatory {} headers range in {} relay (range: {:?}): {:?}", "[{}] Failed to scan mandatory {} headers range ({:?}): {:?}",
P::SourceChain::NAME,
relay_task_name, relay_task_name,
P::SourceChain::NAME,
mandatory_scan_range, mandatory_scan_range,
e, e,
); );
@@ -253,7 +253,7 @@ async fn background_task<P: SubstrateFinalitySyncPipeline>(
log::info!( log::info!(
target: "bridge", target: "bridge",
"Starting {} relay\n\t\ "[{}] Starting on-demand relay task\n\t\
Only mandatory headers: {}\n\t\ Only mandatory headers: {}\n\t\
Tx mortality: {:?} (~{}m)\n\t\ Tx mortality: {:?} (~{}m)\n\t\
Stall timeout: {:?}", Stall timeout: {:?}",
@@ -347,9 +347,9 @@ async fn relay_mandatory_header_from_range<P: SubstrateFinalitySyncPipeline>(
log::trace!( log::trace!(
target: "bridge", target: "bridge",
"Too many {} headers missing at target in {} relay ({} vs {}). Going to sync up to the mandatory {}", "[{}] Too many {} headers missing at target ({} vs {}). Going to sync up to the mandatory {}",
P::SourceChain::NAME,
relay_task_name, relay_task_name,
P::SourceChain::NAME,
best_finalized_source_header_at_target, best_finalized_source_header_at_target,
range.1, range.1,
mandatory_source_header_number, mandatory_source_header_number,
@@ -369,7 +369,7 @@ async fn best_finalized_source_header_at_source<P: SubstrateFinalitySyncPipeline
finality_source.on_chain_best_finalized_block_number().await.map_err(|error| { finality_source.on_chain_best_finalized_block_number().await.map_err(|error| {
log::error!( log::error!(
target: "bridge", target: "bridge",
"Failed to read best finalized source header from source in {} relay: {:?}", "[{}] Failed to read best finalized source header from source: {:?}",
relay_task_name, relay_task_name,
error, error,
); );
@@ -396,7 +396,7 @@ where
.map_err(|error| { .map_err(|error| {
log::error!( log::error!(
target: "bridge", target: "bridge",
"Failed to read best finalized source header from target in {} relay: {:?}", "[{}] Failed to read best finalized source header from target: {:?}",
relay_task_name, relay_task_name,
error, error,
); );
@@ -429,7 +429,7 @@ async fn find_mandatory_header_in_range<P: SubstrateFinalitySyncPipeline>(
/// On-demand headers relay task name. /// On-demand headers relay task name.
fn on_demand_headers_relay_name<SourceChain: Chain, TargetChain: Chain>() -> String { fn on_demand_headers_relay_name<SourceChain: Chain, TargetChain: Chain>() -> String {
format!("on-demand-{}-to-{}", SourceChain::NAME, TargetChain::NAME) format!("{}-to-{}-on-demand-headers", SourceChain::NAME, TargetChain::NAME)
} }
#[cfg(test)] #[cfg(test)]
@@ -111,10 +111,10 @@ where
if let Err(e) = self.required_header_number_sender.send(required_header).await { if let Err(e) = self.required_header_number_sender.send(required_header).await {
log::trace!( log::trace!(
target: "bridge", target: "bridge",
"Failed to request {} header {:?} in {:?}: {:?}", "[{}] Failed to request {} header {:?}: {:?}",
self.relay_task_name,
SourceParachain::NAME, SourceParachain::NAME,
required_header, required_header,
self.relay_task_name,
e, e,
); );
} }
@@ -164,7 +164,7 @@ async fn background_task<P: SubstrateParachainsPipeline>(
Err(e) => { Err(e) => {
log::error!( log::error!(
target: "bridge", target: "bridge",
"Background task of {} has exited with error: {:?}", "[{}] Background task has exited with error: {:?}",
relay_task_name, relay_task_name,
e, e,
); );
@@ -223,7 +223,7 @@ async fn background_task<P: SubstrateParachainsPipeline>(
relay_state = select_headers_to_relay(&relay_data, relay_state); relay_state = select_headers_to_relay(&relay_data, relay_state);
log::trace!( log::trace!(
target: "bridge", target: "bridge",
"Selected new relay state in {}: {:?} using old state {:?} and data {:?}", "[{}] Selected new relay state: {:?} using old state {:?} and data {:?}",
relay_task_name, relay_task_name,
relay_state, relay_state,
prev_relay_state, prev_relay_state,
@@ -266,7 +266,7 @@ async fn background_task<P: SubstrateParachainsPipeline>(
log::info!( log::info!(
target: "bridge", target: "bridge",
"Starting {} relay\n\t\ "[{}] Starting on-demand-relay task\n\t\
Tx mortality: {:?} (~{}m)\n\t\ Tx mortality: {:?} (~{}m)\n\t\
Stall timeout: {:?}", Stall timeout: {:?}",
relay_task_name, relay_task_name,
@@ -297,7 +297,7 @@ async fn background_task<P: SubstrateParachainsPipeline>(
/// On-demand parachains relay task name. /// On-demand parachains relay task name.
fn on_demand_parachains_relay_name<SourceChain: Chain, TargetChain: Chain>() -> String { fn on_demand_parachains_relay_name<SourceChain: Chain, TargetChain: Chain>() -> String {
format!("on-demand-{}-to-{}", SourceChain::NAME, TargetChain::NAME) format!("{}-to-{}-on-demand-parachain", SourceChain::NAME, TargetChain::NAME)
} }
/// On-demand relay state. /// On-demand relay state.
@@ -349,7 +349,7 @@ where
let map_target_err = |e| { let map_target_err = |e| {
log::error!( log::error!(
target: "bridge", target: "bridge",
"Failed to read {} relay data from {} client: {:?}", "[{}] Failed to read relay data from {} client: {:?}",
on_demand_parachains_relay_name::<P::SourceParachain, P::TargetChain>(), on_demand_parachains_relay_name::<P::SourceParachain, P::TargetChain>(),
P::TargetChain::NAME, P::TargetChain::NAME,
e, e,
@@ -359,7 +359,7 @@ where
let map_source_err = |e| { let map_source_err = |e| {
log::error!( log::error!(
target: "bridge", target: "bridge",
"Failed to read {} relay data from {} client: {:?}", "[{}] Failed to read relay data from {} client: {:?}",
on_demand_parachains_relay_name::<P::SourceParachain, P::TargetChain>(), on_demand_parachains_relay_name::<P::SourceParachain, P::TargetChain>(),
P::SourceRelayChain::NAME, P::SourceRelayChain::NAME,
e, e,
@@ -121,7 +121,7 @@ pub trait TargetClient<P: ParachainsPipeline>: RelayClient {
/// Return prefix that will be used by default to expose Prometheus metrics of the parachains /// Return prefix that will be used by default to expose Prometheus metrics of the parachains
/// sync loop. /// sync loop.
pub fn metrics_prefix<P: ParachainsPipeline>() -> String { pub fn metrics_prefix<P: ParachainsPipeline>() -> String {
format!("{}_to_{}_Sync", P::SourceChain::NAME, P::TargetChain::NAME) format!("{}_to_{}_Parachains", P::SourceChain::NAME, P::TargetChain::NAME)
} }
/// Run parachain heads synchronization. /// Run parachain heads synchronization.