mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-21 04:01:01 +00:00
Specialize metadata errors (#633)
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
This commit is contained in:
@@ -47,7 +47,11 @@ impl<T: Config, Client: OfflineClientT<T>> ConstantsClient<T, Client> {
|
|||||||
.metadata()
|
.metadata()
|
||||||
.constant_hash(address.pallet_name(), address.constant_name())?;
|
.constant_hash(address.pallet_name(), address.constant_name())?;
|
||||||
if actual_hash != expected_hash {
|
if actual_hash != expected_hash {
|
||||||
return Err(MetadataError::IncompatibleMetadata.into())
|
return Err(MetadataError::IncompatibleConstantMetadata(
|
||||||
|
address.pallet_name().into(),
|
||||||
|
address.constant_name().into(),
|
||||||
|
)
|
||||||
|
.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -60,9 +60,15 @@ pub enum MetadataError {
|
|||||||
/// Type is not in metadata.
|
/// Type is not in metadata.
|
||||||
#[error("Type {0} missing from type registry")]
|
#[error("Type {0} missing from type registry")]
|
||||||
TypeNotFound(u32),
|
TypeNotFound(u32),
|
||||||
/// Runtime pallet metadata is incompatible with the static one.
|
/// Runtime constant metadata is incompatible with the static one.
|
||||||
#[error("Pallet {0} has incompatible metadata")]
|
#[error("Pallet {0} Constant {0} has incompatible metadata")]
|
||||||
IncompatiblePalletMetadata(&'static str),
|
IncompatibleConstantMetadata(String, String),
|
||||||
|
/// Runtime call metadata is incompatible with the static one.
|
||||||
|
#[error("Pallet {0} Call {0} has incompatible metadata")]
|
||||||
|
IncompatibleCallMetadata(String, String),
|
||||||
|
/// Runtime storage metadata is incompatible with the static one.
|
||||||
|
#[error("Pallet {0} Storage {0} has incompatible metadata")]
|
||||||
|
IncompatibleStorageMetadata(String, String),
|
||||||
/// Runtime metadata is not fully compatible with the static one.
|
/// Runtime metadata is not fully compatible with the static one.
|
||||||
#[error("Node metadata is not fully compatible")]
|
#[error("Node metadata is not fully compatible")]
|
||||||
IncompatibleMetadata,
|
IncompatibleMetadata,
|
||||||
|
|||||||
@@ -386,7 +386,13 @@ fn validate_storage(
|
|||||||
};
|
};
|
||||||
match expected_hash == hash {
|
match expected_hash == hash {
|
||||||
true => Ok(()),
|
true => Ok(()),
|
||||||
false => Err(crate::error::MetadataError::IncompatibleMetadata.into()),
|
false => {
|
||||||
|
Err(crate::error::MetadataError::IncompatibleStorageMetadata(
|
||||||
|
pallet_name.into(),
|
||||||
|
storage_name.into(),
|
||||||
|
)
|
||||||
|
.into())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,11 @@ impl<T: Config, C: OfflineClientT<T>> TxClient<T, C> {
|
|||||||
let expected_hash =
|
let expected_hash =
|
||||||
metadata.call_hash(call.pallet_name(), call.call_name())?;
|
metadata.call_hash(call.pallet_name(), call.call_name())?;
|
||||||
if actual_hash != expected_hash {
|
if actual_hash != expected_hash {
|
||||||
return Err(crate::metadata::MetadataError::IncompatibleMetadata.into())
|
return Err(crate::metadata::MetadataError::IncompatibleCallMetadata(
|
||||||
|
call.pallet_name().into(),
|
||||||
|
call.call_name().into(),
|
||||||
|
)
|
||||||
|
.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
Reference in New Issue
Block a user