use nodedb_types::{DatabaseId, TenantId};
use crate::engine::EngineId;
#[derive(Debug, thiserror::Error)]
pub enum MemError {
#[error(
"memory budget exhausted for {engine:?}: requested {requested} bytes, \
available {available} bytes (limit: {limit} bytes)"
)]
BudgetExhausted {
engine: EngineId,
requested: usize,
available: usize,
limit: usize,
},
#[error(
"global memory ceiling exceeded: total allocated {allocated} bytes, \
ceiling {ceiling} bytes, requested {requested} bytes"
)]
GlobalCeilingExceeded {
allocated: usize,
ceiling: usize,
requested: usize,
},
#[error(
"database memory budget exhausted for database {db:?}: \
requested {requested} bytes, available {available} bytes (limit: {limit} bytes)"
)]
DatabaseBudgetExhausted {
db: DatabaseId,
requested: usize,
available: usize,
limit: usize,
},
#[error(
"tenant memory budget exhausted for tenant {tenant:?} in database {db:?}: \
requested {requested} bytes, available {available} bytes (limit: {limit} bytes)"
)]
TenantBudgetExhausted {
db: DatabaseId,
tenant: TenantId,
requested: usize,
available: usize,
limit: usize,
},
#[error("unknown engine: {0:?}")]
UnknownEngine(EngineId),
#[error("jemalloc error: {0}")]
Jemalloc(String),
}
pub type Result<T> = std::result::Result<T, MemError>;