1use nodedb_types::{DatabaseId, TenantId};
4
5use crate::engine::EngineId;
6
7#[derive(Debug, thiserror::Error)]
9pub enum MemError {
10 #[error(
12 "memory budget exhausted for {engine:?}: requested {requested} bytes, \
13 available {available} bytes (limit: {limit} bytes)"
14 )]
15 BudgetExhausted {
16 engine: EngineId,
17 requested: usize,
18 available: usize,
19 limit: usize,
20 },
21
22 #[error(
24 "global memory ceiling exceeded: total allocated {allocated} bytes, \
25 ceiling {ceiling} bytes, requested {requested} bytes"
26 )]
27 GlobalCeilingExceeded {
28 allocated: usize,
29 ceiling: usize,
30 requested: usize,
31 },
32
33 #[error(
35 "database memory budget exhausted for database {db:?}: \
36 requested {requested} bytes, available {available} bytes (limit: {limit} bytes)"
37 )]
38 DatabaseBudgetExhausted {
39 db: DatabaseId,
40 requested: usize,
41 available: usize,
42 limit: usize,
43 },
44
45 #[error(
47 "tenant memory budget exhausted for tenant {tenant:?} in database {db:?}: \
48 requested {requested} bytes, available {available} bytes (limit: {limit} bytes)"
49 )]
50 TenantBudgetExhausted {
51 db: DatabaseId,
52 tenant: TenantId,
53 requested: usize,
54 available: usize,
55 limit: usize,
56 },
57
58 #[error("unknown engine: {0:?}")]
60 UnknownEngine(EngineId),
61
62 #[error("jemalloc error: {0}")]
64 Jemalloc(String),
65}
66
67pub type Result<T> = std::result::Result<T, MemError>;