From 0b0fc42dc0259a3025531e2f1fa5caf72f0f68be Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Mon, 31 Jan 2022 14:44:11 +0300 Subject: [PATCH] Use raw balance value if tokenDecimals property is missing (#1299) * use raw balance value if tokenDecimals property is missing * fmt --- .../lib-substrate-relay/src/messages_metrics.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/relays/lib-substrate-relay/src/messages_metrics.rs b/relays/lib-substrate-relay/src/messages_metrics.rs index d2206094fe..00686ac4fd 100644 --- a/relays/lib-substrate-relay/src/messages_metrics.rs +++ b/relays/lib-substrate-relay/src/messages_metrics.rs @@ -202,9 +202,20 @@ where return Ok(metrics) } - let token_decimals = client.token_decimals().await?.ok_or_else(|| { - SubstrateError::Custom(format!("Missing token decimals from {} system properties", C::NAME)) - })?; + // if `tokenDecimals` is missing from system properties, we'll be using + let token_decimals = client + .token_decimals() + .await? + .map(|token_decimals| { + log::info!(target: "bridge", "Read `tokenDecimals` for {}: {}", C::NAME, token_decimals); + token_decimals + }) + .unwrap_or_else(|| { + // turns out it is normal not to have this property - e.g. when polkadot binary is + // started using `polkadot-local` chain. Let's use minimal nominal here + log::info!(target: "bridge", "Using default (zero) `tokenDecimals` value for {}", C::NAME); + 0 + }); let token_decimals = u32::try_from(token_decimals).map_err(|e| { anyhow::format_err!( "Token decimals value ({}) of {} doesn't fit into u32: {:?}",