casper_storage/global_state/
error.rs1use std::sync;
2
3use thiserror::Error;
4
5use casper_types::{bytesrepr, Digest, Key};
6
7use crate::global_state::{state::CommitError, trie::TrieRaw};
8
9use super::trie_store::TrieStoreCacheError;
10
11#[derive(Debug, Clone, Error, PartialEq, Eq)]
13#[non_exhaustive]
14pub enum Error {
15 #[error(transparent)]
17 Lmdb(#[from] lmdb::Error),
18
19 #[error("{0}")]
21 BytesRepr(#[from] bytesrepr::Error),
22
23 #[error("Another thread panicked while holding a lock")]
25 Poison,
26
27 #[error(transparent)]
29 Commit(#[from] CommitError),
30
31 #[error("RootNotFound")]
33 RootNotFound,
34
35 #[error("Failed to put a trie into global state because some of its children were missing")]
37 MissingTrieNodeChildren(Digest, TrieRaw, Vec<Digest>),
38
39 #[error("Pruning attempt failed.")]
41 FailedToPrune(Vec<Key>),
42
43 #[error("Attempt to generate proofs using non-empty cache.")]
45 CannotProvideProofsOverCachedData,
46
47 #[error("Cache error")]
49 CacheError(#[from] TrieStoreCacheError),
50}
51
52impl<T> From<sync::PoisonError<T>> for Error {
53 fn from(_error: sync::PoisonError<T>) -> Self {
54 Error::Poison
55 }
56}