derives Error trait for ClusterInfoError and core::result::Error (#27208)
This commit is contained in:
parent
225cddcffb
commit
fea66c8b63
|
@ -3,53 +3,42 @@
|
||||||
use {
|
use {
|
||||||
solana_gossip::{cluster_info, gossip_error::GossipError},
|
solana_gossip::{cluster_info, gossip_error::GossipError},
|
||||||
solana_ledger::blockstore,
|
solana_ledger::blockstore,
|
||||||
|
thiserror::Error,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Error)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
Io(std::io::Error),
|
#[error(transparent)]
|
||||||
Recv(crossbeam_channel::RecvError),
|
Blockstore(#[from] blockstore::BlockstoreError),
|
||||||
|
#[error(transparent)]
|
||||||
|
ClusterInfo(#[from] cluster_info::ClusterInfoError),
|
||||||
|
#[error(transparent)]
|
||||||
|
Gossip(#[from] GossipError),
|
||||||
|
#[error(transparent)]
|
||||||
|
Io(#[from] std::io::Error),
|
||||||
|
#[error("ReadyTimeout")]
|
||||||
ReadyTimeout,
|
ReadyTimeout,
|
||||||
RecvTimeout(crossbeam_channel::RecvTimeoutError),
|
#[error(transparent)]
|
||||||
TrySend,
|
Recv(#[from] crossbeam_channel::RecvError),
|
||||||
Serialize(std::boxed::Box<bincode::ErrorKind>),
|
#[error(transparent)]
|
||||||
ClusterInfo(cluster_info::ClusterInfoError),
|
RecvTimeout(#[from] crossbeam_channel::RecvTimeoutError),
|
||||||
|
#[error("Send")]
|
||||||
Send,
|
Send,
|
||||||
Blockstore(blockstore::BlockstoreError),
|
#[error("TrySend")]
|
||||||
WeightedIndex(rand::distributions::weighted::WeightedError),
|
TrySend,
|
||||||
Gossip(GossipError),
|
#[error(transparent)]
|
||||||
|
Serialize(#[from] std::boxed::Box<bincode::ErrorKind>),
|
||||||
|
#[error(transparent)]
|
||||||
|
WeightedIndex(#[from] rand::distributions::weighted::WeightedError),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type Result<T> = std::result::Result<T, Error>;
|
pub type Result<T> = std::result::Result<T, Error>;
|
||||||
|
|
||||||
impl std::fmt::Display for Error {
|
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
||||||
write!(f, "solana error")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::error::Error for Error {}
|
|
||||||
|
|
||||||
impl std::convert::From<crossbeam_channel::RecvError> for Error {
|
|
||||||
fn from(e: crossbeam_channel::RecvError) -> Error {
|
|
||||||
Error::Recv(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl std::convert::From<crossbeam_channel::ReadyTimeoutError> for Error {
|
impl std::convert::From<crossbeam_channel::ReadyTimeoutError> for Error {
|
||||||
fn from(_e: crossbeam_channel::ReadyTimeoutError) -> Error {
|
fn from(_e: crossbeam_channel::ReadyTimeoutError) -> Error {
|
||||||
Error::ReadyTimeout
|
Error::ReadyTimeout
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl std::convert::From<crossbeam_channel::RecvTimeoutError> for Error {
|
|
||||||
fn from(e: crossbeam_channel::RecvTimeoutError) -> Error {
|
|
||||||
Error::RecvTimeout(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl std::convert::From<cluster_info::ClusterInfoError> for Error {
|
|
||||||
fn from(e: cluster_info::ClusterInfoError) -> Error {
|
|
||||||
Error::ClusterInfo(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl<T> std::convert::From<crossbeam_channel::TrySendError<T>> for Error {
|
impl<T> std::convert::From<crossbeam_channel::TrySendError<T>> for Error {
|
||||||
fn from(_e: crossbeam_channel::TrySendError<T>) -> Error {
|
fn from(_e: crossbeam_channel::TrySendError<T>) -> Error {
|
||||||
Error::TrySend
|
Error::TrySend
|
||||||
|
@ -60,31 +49,6 @@ impl<T> std::convert::From<crossbeam_channel::SendError<T>> for Error {
|
||||||
Error::Send
|
Error::Send
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl std::convert::From<std::io::Error> for Error {
|
|
||||||
fn from(e: std::io::Error) -> Error {
|
|
||||||
Error::Io(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl std::convert::From<std::boxed::Box<bincode::ErrorKind>> for Error {
|
|
||||||
fn from(e: std::boxed::Box<bincode::ErrorKind>) -> Error {
|
|
||||||
Error::Serialize(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl std::convert::From<blockstore::BlockstoreError> for Error {
|
|
||||||
fn from(e: blockstore::BlockstoreError) -> Error {
|
|
||||||
Error::Blockstore(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl std::convert::From<rand::distributions::weighted::WeightedError> for Error {
|
|
||||||
fn from(e: rand::distributions::weighted::WeightedError) -> Error {
|
|
||||||
Error::WeightedIndex(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl std::convert::From<GossipError> for Error {
|
|
||||||
fn from(e: GossipError) -> Error {
|
|
||||||
Error::Gossip(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
|
@ -92,6 +92,7 @@ use {
|
||||||
thread::{sleep, Builder, JoinHandle},
|
thread::{sleep, Builder, JoinHandle},
|
||||||
time::{Duration, Instant},
|
time::{Duration, Instant},
|
||||||
},
|
},
|
||||||
|
thiserror::Error,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The Data plane fanout size, also used as the neighborhood size
|
/// The Data plane fanout size, also used as the neighborhood size
|
||||||
|
@ -138,12 +139,17 @@ const MIN_STAKE_FOR_GOSSIP: u64 = solana_sdk::native_token::LAMPORTS_PER_SOL;
|
||||||
/// Minimum number of staked nodes for enforcing stakes in gossip.
|
/// Minimum number of staked nodes for enforcing stakes in gossip.
|
||||||
const MIN_NUM_STAKED_NODES: usize = 500;
|
const MIN_NUM_STAKED_NODES: usize = 500;
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, PartialEq, Eq, Error)]
|
||||||
pub enum ClusterInfoError {
|
pub enum ClusterInfoError {
|
||||||
|
#[error("NoPeers")]
|
||||||
NoPeers,
|
NoPeers,
|
||||||
|
#[error("NoLeader")]
|
||||||
NoLeader,
|
NoLeader,
|
||||||
|
#[error("BadContactInfo")]
|
||||||
BadContactInfo,
|
BadContactInfo,
|
||||||
|
#[error("BadGossipAddress")]
|
||||||
BadGossipAddress,
|
BadGossipAddress,
|
||||||
|
#[error("TooManyIncrementalSnapshotHashes")]
|
||||||
TooManyIncrementalSnapshotHashes,
|
TooManyIncrementalSnapshotHashes,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue