Skip to main content

tempest_kv/
error.rs

1use crate::{base::KeyKind, manifest::ManifestError};
2use derive_more::{Display, Error, From};
3use num_enum::TryFromPrimitiveError;
4
5#[derive(Debug, Display, Error, From)]
6pub enum StorageError {
7    #[display("i/o error: {}", _0)]
8    IoError(std::io::Error),
9
10    #[display("failed to encode: {}", _0)]
11    BincodeError(bincode::Error),
12
13    //#[display("wal: {}", _0)]
14    //Wal(WalError),
15    #[display("manifest: {}", _0)]
16    Manifest(ManifestError),
17
18    //#[display("failed to read sst: {}", _0)]
19    //SstRead(SstReadError),
20    #[display("invalid key kind: {}", _0.number)]
21    InvalidKeyKind(TryFromPrimitiveError<KeyKind>),
22
23    #[display("wal header corrupted: expected filenum {} but got {}", expected, got)]
24    WalCorruption { expected: u64, got: u64 },
25
26    #[display("storage worker died")]
27    WorkerDied,
28}