scouter_dataframe/
error.rs1use 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}