RPC Client: Use Tokio's RwLock instead of std to make using in async easier (#23299)
This commit is contained in:
parent
2996f1f783
commit
2e3eafaa11
|
@ -52,10 +52,9 @@ use {
|
||||||
cmp::min,
|
cmp::min,
|
||||||
net::SocketAddr,
|
net::SocketAddr,
|
||||||
str::FromStr,
|
str::FromStr,
|
||||||
sync::RwLock,
|
|
||||||
time::{Duration, Instant},
|
time::{Duration, Instant},
|
||||||
},
|
},
|
||||||
tokio::time::sleep,
|
tokio::{sync::RwLock, time::sleep},
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A client of a remote Solana node.
|
/// A client of a remote Solana node.
|
||||||
|
@ -442,12 +441,12 @@ impl RpcClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get_node_version(&self) -> Result<semver::Version, RpcError> {
|
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 {
|
if let Some(version) = &*r_node_version {
|
||||||
Ok(version.clone())
|
Ok(version.clone())
|
||||||
} else {
|
} else {
|
||||||
drop(r_node_version);
|
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| {
|
let node_version = self.get_version().await.map_err(|e| {
|
||||||
RpcError::RpcRequestError(format!("cluster version query failed: {}", e))
|
RpcError::RpcRequestError(format!("cluster version query failed: {}", e))
|
||||||
})?;
|
})?;
|
||||||
|
|
Loading…
Reference in New Issue