Update getSignatureStatuses to return historical statuses (#9314) (#9321)

automerge
This commit is contained in:
mergify[bot]
2020-04-06 04:24:19 -07:00
committed by GitHub
parent e61392b057
commit 23b8c95cc4
6 changed files with 257 additions and 26 deletions

View File

@@ -94,7 +94,7 @@ impl GenericRpcClientRequest for MockRpcClientRequest {
Some(TransactionStatus {
status,
slot: 1,
confirmations: Some(0),
confirmations: None,
err,
})
};

View File

@@ -81,13 +81,13 @@ impl RpcClient {
signature: &Signature,
commitment_config: CommitmentConfig,
) -> RpcResult<bool> {
let Response { context, value } =
self.get_signature_statuses_with_commitment(&[*signature], commitment_config)?;
let Response { context, value } = self.get_signature_statuses(&[*signature])?;
Ok(Response {
context,
value: value[0]
.as_ref()
.filter(|result| result.satisfies_commitment(commitment_config))
.map(|result| result.status.is_ok())
.unwrap_or_default(),
})
@@ -116,17 +116,14 @@ impl RpcClient {
self.get_signature_status_with_commitment(signature, CommitmentConfig::default())
}
pub fn get_signature_statuses_with_commitment(
pub fn get_signature_statuses(
&self,
signatures: &[Signature],
commitment_config: CommitmentConfig,
) -> RpcResult<Vec<Option<TransactionStatus>>> {
let signatures: Vec<_> = signatures.iter().map(|s| s.to_string()).collect();
let signature_status = self.client.send(
&RpcRequest::GetSignatureStatuses,
json!([&signatures, commitment_config]),
5,
)?;
let signature_status =
self.client
.send(&RpcRequest::GetSignatureStatuses, json!([signatures]), 5)?;
Ok(serde_json::from_value(signature_status)
.map_err(|err| ClientError::new_with_command(err.into(), "GetSignatureStatuses"))?)
}
@@ -138,7 +135,7 @@ impl RpcClient {
) -> ClientResult<Option<transaction::Result<()>>> {
let signature_status = self.client.send(
&RpcRequest::GetSignatureStatuses,
json!([[signature.to_string()], commitment_config]),
json!([[signature.to_string()]]),
5,
)?;
let result: Response<Vec<Option<TransactionStatus>>> =
@@ -146,6 +143,7 @@ impl RpcClient {
.map_err(|err| ClientError::new_with_command(err.into(), "GetSignatureStatuses"))?;
Ok(result.value[0]
.clone()
.filter(|result| result.satisfies_commitment(commitment_config))
.map(|status_meta| status_meta.status))
}
@@ -944,7 +942,7 @@ impl RpcClient {
.client
.send(
&RpcRequest::GetSignatureStatuses,
json!([[signature.to_string()], CommitmentConfig::recent().ok()]),
json!([[signature.to_string()]]),
1,
)
.map_err(|err| err.into_with_command("GetSignatureStatuses"))?;