Skip to main content

haagenti_serverless/
error.rs

1//! Error types for serverless deployment
2
3use thiserror::Error;
4
5/// Serverless deployment errors
6#[derive(Debug, Error)]
7pub enum ServerlessError {
8    /// Cold start timeout
9    #[error("Cold start timeout: {0}ms exceeded")]
10    ColdStartTimeout(u64),
11
12    /// Fragment pool error
13    #[error("Fragment pool error: {0}")]
14    PoolError(String),
15
16    /// Snapshot error
17    #[error("Snapshot error: {0}")]
18    SnapshotError(String),
19
20    /// State serialization error
21    #[error("State serialization error: {0}")]
22    SerializationError(String),
23
24    /// State deserialization error
25    #[error("State deserialization error: {0}")]
26    DeserializationError(String),
27
28    /// Provider error
29    #[error("Provider error: {0}")]
30    ProviderError(String),
31
32    /// Memory limit exceeded
33    #[error("Memory limit exceeded: {used_mb}MB / {limit_mb}MB")]
34    MemoryLimitExceeded { used_mb: u64, limit_mb: u64 },
35
36    /// GPU not available
37    #[error("GPU not available in this environment")]
38    GpuNotAvailable,
39
40    /// Warmup failed
41    #[error("Warmup failed: {0}")]
42    WarmupFailed(String),
43
44    /// IO error
45    #[error("IO error: {0}")]
46    IoError(#[from] std::io::Error),
47
48    /// Configuration error
49    #[error("Configuration error: {0}")]
50    ConfigError(String),
51}
52
53/// Result type for serverless operations
54pub type Result<T> = std::result::Result<T, ServerlessError>;