mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 11:01:01 +00:00
Use specific error for case when para head is missing from the bridge pallet (#1829)
* use specific error for case when para head is missing from the bridge pallet * fix match to support both error types
This commit is contained in:
committed by
Bastian Köcher
parent
4689dfaf2c
commit
606768bc6a
@@ -61,6 +61,9 @@ pub enum Error {
|
|||||||
/// The bridge pallet is not yet initialized and all transactions will be rejected.
|
/// The bridge pallet is not yet initialized and all transactions will be rejected.
|
||||||
#[error("Bridge pallet is not initialized.")]
|
#[error("Bridge pallet is not initialized.")]
|
||||||
BridgePalletIsNotInitialized,
|
BridgePalletIsNotInitialized,
|
||||||
|
/// There's no best head of the parachain at the `pallet-bridge-parachains` at the target side.
|
||||||
|
#[error("No head of the ParaId({0}) at the bridge parachains pallet at {1}.")]
|
||||||
|
NoParachainHeadAtTarget(u32, String),
|
||||||
/// An error has happened when we have tried to parse storage proof.
|
/// An error has happened when we have tried to parse storage proof.
|
||||||
#[error("Error when parsing storage proof: {0:?}.")]
|
#[error("Error when parsing storage proof: {0:?}.")]
|
||||||
StorageProofError(bp_runtime::StorageProofError),
|
StorageProofError(bp_runtime::StorageProofError),
|
||||||
|
|||||||
@@ -473,12 +473,13 @@ where
|
|||||||
P::SourceParachain,
|
P::SourceParachain,
|
||||||
>(target.client(), best_target_block_hash)
|
>(target.client(), best_target_block_hash)
|
||||||
.await;
|
.await;
|
||||||
// if there are no parachain heads at the target (`BridgePalletIsNotInitialized`), we'll need
|
// if there are no parachain heads at the target (`NoParachainHeadAtTarget`), we'll need to
|
||||||
// to submit at least one. Otherwise the pallet will be treated as uninitialized and messages
|
// submit at least one. Otherwise the pallet will be treated as uninitialized and messages
|
||||||
// sync will stall.
|
// sync will stall.
|
||||||
let para_header_at_target = match para_header_at_target {
|
let para_header_at_target = match para_header_at_target {
|
||||||
Ok(para_header_at_target) => Some(para_header_at_target.0),
|
Ok(para_header_at_target) => Some(para_header_at_target.0),
|
||||||
Err(SubstrateError::BridgePalletIsNotInitialized) => None,
|
Err(SubstrateError::BridgePalletIsNotInitialized) |
|
||||||
|
Err(SubstrateError::NoParachainHeadAtTarget(_, _)) => None,
|
||||||
Err(e) => return Err(map_target_err(e)),
|
Err(e) => return Err(map_target_err(e)),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ use parachains_relay::{
|
|||||||
};
|
};
|
||||||
use relay_substrate_client::{
|
use relay_substrate_client::{
|
||||||
AccountIdOf, AccountKeyPairOf, BlockNumberOf, Chain, Client, Error as SubstrateError, HashOf,
|
AccountIdOf, AccountKeyPairOf, BlockNumberOf, Chain, Client, Error as SubstrateError, HashOf,
|
||||||
HeaderIdOf, RelayChain, TransactionEra, TransactionTracker, UnsignedTransaction,
|
HeaderIdOf, ParachainBase, RelayChain, TransactionEra, TransactionTracker, UnsignedTransaction,
|
||||||
};
|
};
|
||||||
use relay_utils::{relay_loop::Client as RelayClient, HeaderId};
|
use relay_utils::{relay_loop::Client as RelayClient, HeaderId};
|
||||||
use sp_core::{Bytes, Pair};
|
use sp_core::{Bytes, Pair};
|
||||||
@@ -110,7 +110,10 @@ where
|
|||||||
)
|
)
|
||||||
.map_err(SubstrateError::ResponseParseFailed)?
|
.map_err(SubstrateError::ResponseParseFailed)?
|
||||||
.map(Ok)
|
.map(Ok)
|
||||||
.unwrap_or(Err(SubstrateError::BridgePalletIsNotInitialized))
|
.unwrap_or(Err(SubstrateError::NoParachainHeadAtTarget(
|
||||||
|
P::SourceParachain::PARACHAIN_ID,
|
||||||
|
P::TargetChain::NAME.into(),
|
||||||
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn parachain_head(
|
async fn parachain_head(
|
||||||
|
|||||||
Reference in New Issue
Block a user