RPC Client: Use Tokio's RwLock instead of std to make using in async easier (#23299)

This commit is contained in:
Bruno 2022-02-23 18:33:32 +01:00 committed by GitHub
parent 2996f1f783
commit 2e3eafaa11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 4 deletions

View File

@ -52,10 +52,9 @@ use {
cmp::min,
net::SocketAddr,
str::FromStr,
sync::RwLock,
time::{Duration, Instant},
},
tokio::time::sleep,
tokio::{sync::RwLock, time::sleep},
};
/// A client of a remote Solana node.
@ -442,12 +441,12 @@ impl RpcClient {
}
async fn get_node_version(&self) -> Result<semver::Version, RpcError> {
let r_node_version = self.node_version.read().unwrap();
let r_node_version = self.node_version.read().await;
if let Some(version) = &*r_node_version {
Ok(version.clone())
} else {
drop(r_node_version);
let mut w_node_version = self.node_version.write().unwrap();
let mut w_node_version = self.node_version.write().await;
let node_version = self.get_version().await.map_err(|e| {
RpcError::RpcRequestError(format!("cluster version query failed: {}", e))
})?;