mirror of
https://github.com/logos-blockchain/logos-blockchain-testing.git
synced 2026-06-07 09:29:25 +00:00
Handle poisoned locks in node clients
This commit is contained in:
parent
cad6255c3d
commit
d886cbc048
@ -56,7 +56,7 @@ impl NodeClients {
|
|||||||
pub fn validator_clients(&self) -> Vec<ApiClient> {
|
pub fn validator_clients(&self) -> Vec<ApiClient> {
|
||||||
self.inner
|
self.inner
|
||||||
.read()
|
.read()
|
||||||
.expect("node clients lock poisoned")
|
.unwrap_or_else(|poisoned| poisoned.into_inner())
|
||||||
.validators
|
.validators
|
||||||
.clone()
|
.clone()
|
||||||
}
|
}
|
||||||
@ -66,7 +66,7 @@ impl NodeClients {
|
|||||||
pub fn executor_clients(&self) -> Vec<ApiClient> {
|
pub fn executor_clients(&self) -> Vec<ApiClient> {
|
||||||
self.inner
|
self.inner
|
||||||
.read()
|
.read()
|
||||||
.expect("node clients lock poisoned")
|
.unwrap_or_else(|poisoned| poisoned.into_inner())
|
||||||
.executors
|
.executors
|
||||||
.clone()
|
.clone()
|
||||||
}
|
}
|
||||||
@ -97,7 +97,11 @@ impl NodeClients {
|
|||||||
|
|
||||||
/// Iterator over all clients.
|
/// Iterator over all clients.
|
||||||
pub fn all_clients(&self) -> Vec<ApiClient> {
|
pub fn all_clients(&self) -> Vec<ApiClient> {
|
||||||
let guard = self.inner.read().expect("node clients lock poisoned");
|
let guard = self
|
||||||
|
.inner
|
||||||
|
.read()
|
||||||
|
.unwrap_or_else(|poisoned| poisoned.into_inner());
|
||||||
|
|
||||||
guard
|
guard
|
||||||
.validators
|
.validators
|
||||||
.iter()
|
.iter()
|
||||||
@ -109,7 +113,11 @@ impl NodeClients {
|
|||||||
#[must_use]
|
#[must_use]
|
||||||
/// Choose any random client from validators+executors.
|
/// Choose any random client from validators+executors.
|
||||||
pub fn any_client(&self) -> Option<ApiClient> {
|
pub fn any_client(&self) -> Option<ApiClient> {
|
||||||
let guard = self.inner.read().expect("node clients lock poisoned");
|
let guard = self
|
||||||
|
.inner
|
||||||
|
.read()
|
||||||
|
.unwrap_or_else(|poisoned| poisoned.into_inner());
|
||||||
|
|
||||||
let validator_count = guard.validators.len();
|
let validator_count = guard.validators.len();
|
||||||
let executor_count = guard.executors.len();
|
let executor_count = guard.executors.len();
|
||||||
let total = validator_count + executor_count;
|
let total = validator_count + executor_count;
|
||||||
@ -132,12 +140,20 @@ impl NodeClients {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_validator(&self, client: ApiClient) {
|
pub fn add_validator(&self, client: ApiClient) {
|
||||||
let mut guard = self.inner.write().expect("node clients lock poisoned");
|
let mut guard = self
|
||||||
|
.inner
|
||||||
|
.write()
|
||||||
|
.unwrap_or_else(|poisoned| poisoned.into_inner());
|
||||||
|
|
||||||
guard.validators.push(client);
|
guard.validators.push(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_executor(&self, client: ApiClient) {
|
pub fn add_executor(&self, client: ApiClient) {
|
||||||
let mut guard = self.inner.write().expect("node clients lock poisoned");
|
let mut guard = self
|
||||||
|
.inner
|
||||||
|
.write()
|
||||||
|
.unwrap_or_else(|poisoned| poisoned.into_inner());
|
||||||
|
|
||||||
guard.executors.push(client);
|
guard.executors.push(client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user