Skip to main content

scouter_dataframe/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum StorageError {
5    #[error(transparent)]
6    DecodeError(#[from] base64::DecodeError),
7
8    #[error(transparent)]
9    UtilError(#[from] scouter_types::error::UtilError),
10
11    #[error(transparent)]
12    ObjectStorageError(#[from] object_store::Error),
13
14    #[error(transparent)]
15    ParseError(#[from] url::ParseError),
16
17    #[error(transparent)]
18    Utf8Error(#[from] std::string::FromUtf8Error),
19
20    #[error(transparent)]
21    IoError(#[from] std::io::Error),
22
23    #[error("Invalid URL: {0}")]
24    InvalidUrl(String),
25}
26
27#[derive(Error, Debug)]
28pub enum DataFrameError {
29    #[error("Failed to read batch: {0}")]
30    ReadBatchError(String),
31
32    #[error("Failed to create batch: {0}")]
33    CreateBatchError(String),
34
35    #[error(transparent)]
36    StorageError(#[from] StorageError),
37
38    #[error("Failed to add year column")]
39    AddYearColumnError(#[source] datafusion::error::DataFusionError),
40
41    #[error("Failed to add month column")]
42    AddMonthColumnError(#[source] datafusion::error::DataFusionError),
43
44    #[error("Failed to add day column")]
45    AddDayColumnError(#[source] datafusion::error::DataFusionError),
46
47    #[error("Failed to add hour column")]
48    AddHourColumnError(#[source] datafusion::error::DataFusionError),
49
50    #[error("Failed to write to parquet")]
51    WriteParquetError(#[source] datafusion::error::DataFusionError),
52
53    #[error("Failed to infer schema")]
54    InferSchemaError(#[source] datafusion::error::DataFusionError),
55
56    #[error("Failed to create listing table")]
57    CreateListingTableError(#[source] datafusion::error::DataFusionError),
58
59    #[error("Failed to register table")]
60    RegisterTableError(#[source] datafusion::error::DataFusionError),
61
62    #[error("Downcast error: {0}")]
63    DowncastError(&'static str),
64
65    #[error("Failed to get column: {0}")]
66    GetColumnError(&'static str),
67
68    #[error("Missing field: {0}")]
69    MissingFieldError(&'static str),
70
71    #[error(transparent)]
72    DatafusionError(#[from] datafusion::error::DataFusionError),
73
74    #[error(transparent)]
75    RecordError(#[from] scouter_types::error::RecordError),
76
77    #[error(transparent)]
78    ArrowError(#[from] arrow::error::ArrowError),
79
80    #[error("Invalid record type provided: {0}")]
81    InvalidRecordTypeError(String),
82
83    #[error("Unsupported operation: {0}")]
84    UnsupportedOperation(String),
85}
86
87#[derive(Error, Debug)]
88pub enum TraceEngineError {
89    #[error(transparent)]
90    DataTableError(#[from] deltalake::DeltaTableError),
91
92    #[error(transparent)]
93    UrlParseError(#[from] url::ParseError),
94
95    #[error("Dataframe table not initialized")]
96    TableNotInitialized,
97
98    #[error(transparent)]
99    StorageError(#[from] StorageError),
100
101    #[error(transparent)]
102    ArrowError(#[from] arrow::error::ArrowError),
103
104    #[error(transparent)]
105    IoError(#[from] std::io::Error),
106
107    #[error("Invalid record type provided: {0}")]
108    InvalidRecordTypeError(String),
109
110    #[error("Unsupported operation: {0}")]
111    UnsupportedOperation(String),
112
113    #[error("Invalid timestamp: {0}")]
114    InvalidTimestamp(&'static str),
115
116    #[error("Invalid hex ID '{0}': {1}")]
117    InvalidHexId(String, String),
118
119    #[error("Downcast error: {0}")]
120    DowncastError(&'static str),
121
122    #[error("Failed to acquire lock: {0}")]
123    LockError(#[from] tokio::sync::AcquireError),
124
125    #[error(transparent)]
126    DatafusionError(#[from] datafusion::error::DataFusionError),
127
128    #[error("Channel closed")]
129    ChannelClosed,
130
131    #[error(transparent)]
132    RecordError(#[from] scouter_types::error::RecordError),
133
134    #[error("Failed to convert RecordBatch to TraceSpanBatch: {0}")]
135    BatchConversion(String),
136}