1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, RaftError>;
4
5#[derive(Debug, Error)]
6pub enum RaftError {
7 #[error("not leader (leader hint: {leader_hint:?})")]
8 NotLeader { leader_hint: Option<u64> },
9
10 #[error("log compacted: requested index {requested}, first available {first_available}")]
11 LogCompacted {
12 requested: u64,
13 first_available: u64,
14 },
15
16 #[error("proposal rejected: {reason}")]
17 ProposalRejected { reason: String },
18
19 #[error("group {group_id} not found on this node")]
20 GroupNotFound { group_id: u64 },
21
22 #[error("transport error: {detail}")]
23 Transport { detail: String },
24
25 #[error("storage error: {detail}")]
26 Storage { detail: String },
27
28 #[error("serialization error: {detail}")]
29 Serialization { detail: String },
30
31 #[error("shutdown in progress")]
32 Shutdown,
33}