mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-21 17:55:42 +00:00
chainHead: Backport error codes from spec (#2539)
This PR backports the error codes from the spec. This relies on two specs for defining the error codes: - Our rpc-spec-v2 https://github.com/paritytech/json-rpc-interface-spec. - JSON-RPC spec https://www.jsonrpc.org/specification#error_object. To better describe the error codes, they are divided into two separate modules `rpc_spec_v2` and `json_rpc_spec` respectively. The `InvalidSubscriptionID` and `FetchBlockHeader` are merged into the JSON-RPC spec `INTERNAL_ERROR`. While the other error codes are adjusted from spec. Errors that are currently in use: - -32801 block hash not reported by chainHead_follow or block hash has been unpinned - -32802 chainHead_follow started with withRuntime == false - -32803 chainHead_follow did not generate an operationWaitingForContinue event The following are errors defined in the [JSON-RPC spec](https://www.jsonrpc.org/specification#error_object): - -32602 The provided parameter isn't one of the expected values, has different format or is missing - -32603 Internal server error Note: Error `-32801` must be introduced and generated by the outstanding https://github.com/paritytech/polkadot-sdk/issues/1505 Closes: https://github.com/paritytech/polkadot-sdk/issues/2530 --------- Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
This commit is contained in:
@@ -198,7 +198,9 @@ where
|
||||
let sub_id = match self.accept_subscription(&mut sink) {
|
||||
Ok(sub_id) => sub_id,
|
||||
Err(err) => {
|
||||
sink.close(ChainHeadRpcError::InvalidSubscriptionID);
|
||||
sink.close(ChainHeadRpcError::InternalError(
|
||||
"Cannot generate subscription ID".into(),
|
||||
));
|
||||
return Err(err)
|
||||
},
|
||||
};
|
||||
@@ -306,7 +308,7 @@ where
|
||||
self.client
|
||||
.header(hash)
|
||||
.map(|opt_header| opt_header.map(|h| hex_string(&h.encode())))
|
||||
.map_err(ChainHeadRpcError::FetchBlockHeader)
|
||||
.map_err(|err| ChainHeadRpcError::InternalError(err.to_string()))
|
||||
.map_err(Into::into)
|
||||
}
|
||||
|
||||
@@ -393,7 +395,7 @@ where
|
||||
|
||||
// Reject subscription if with_runtime is false.
|
||||
if !block_guard.has_runtime() {
|
||||
return Err(ChainHeadRpcError::InvalidParam(
|
||||
return Err(ChainHeadRpcError::InvalidRuntimeCall(
|
||||
"The runtime updates flag must be set".to_string(),
|
||||
)
|
||||
.into())
|
||||
|
||||
Reference in New Issue
Block a user