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