refactor: remove source and location in snafu display (#2428)

* refactor: remove source pt 1

* refactor: remove source pt 2

* refactor: remove source pt 3

* refactor: remove location pt 1

* refactor: remove location pt 2

* chore: remove rustc files

* chore: fix error case

* chore: fix test

* chore: fix test

* chore: fix cr issue

Co-authored-by: fys <40801205+fengys1996@users.noreply.github.com>

---------

Co-authored-by: fys <40801205+fengys1996@users.noreply.github.com>
This commit is contained in:
shuiyisong
2023-09-21 10:55:24 +08:00
committed by GitHub
parent 9863e501f1
commit 20f4f7971a
51 changed files with 680 additions and 1031 deletions

View File

@@ -34,22 +34,14 @@ pub enum Error {
location: Location,
},
#[snafu(display(
"Failed to convert column default constraint, column: {}, source: {}",
column,
source
))]
#[snafu(display("Failed to convert column default constraint, column: {}", column))]
ConvertColumnDefaultConstraint {
column: String,
location: Location,
source: datatypes::error::Error,
},
#[snafu(display(
"Invalid column default constraint, column: {}, source: {}",
column,
source
))]
#[snafu(display("Invalid column default constraint, column: {}", column))]
InvalidColumnDefaultConstraint {
column: String,
location: Location,

View File

@@ -28,13 +28,13 @@ pub enum Error {
#[snafu(display("Internal state error: {}", msg))]
InternalState { msg: String },
#[snafu(display("IO error, source: {}", source))]
#[snafu(display("IO error"))]
Io {
source: std::io::Error,
location: Location,
},
#[snafu(display("Auth failed, source: {}", source))]
#[snafu(display("Auth failed"))]
AuthBackend {
location: Location,
source: BoxedError,

View File

@@ -26,44 +26,37 @@ use tokio::task::JoinError;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to list catalogs, source: {}", source))]
#[snafu(display("Failed to list catalogs"))]
ListCatalogs {
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to list {}'s schemas, source: {}", catalog, source))]
#[snafu(display("Failed to list {}'s schemas", catalog))]
ListSchemas {
location: Location,
catalog: String,
source: BoxedError,
},
#[snafu(display(
"Failed to re-compile script due to internal error, source: {}",
source
))]
#[snafu(display("Failed to re-compile script due to internal error"))]
CompileScriptInternal {
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to open system catalog table, source: {}", source))]
#[snafu(display("Failed to open system catalog table"))]
OpenSystemCatalog {
location: Location,
source: table::error::Error,
},
#[snafu(display("Failed to create system catalog table, source: {}", source))]
#[snafu(display("Failed to create system catalog table"))]
CreateSystemCatalog {
location: Location,
source: table::error::Error,
},
#[snafu(display(
"Failed to create table, table info: {}, source: {}",
table_info,
source
))]
#[snafu(display("Failed to create table, table info: {}", table_info))]
CreateTable {
table_info: String,
location: Location,
@@ -97,13 +90,13 @@ pub enum Error {
#[snafu(display("Catalog value is not present"))]
EmptyValue { location: Location },
#[snafu(display("Failed to deserialize value, source: {}", source))]
#[snafu(display("Failed to deserialize value"))]
ValueDeserialize {
source: serde_json::error::Error,
location: Location,
},
#[snafu(display("Table engine not found: {}, source: {}", engine_name, source))]
#[snafu(display("Table engine not found: {}", engine_name))]
TableEngineNotFound {
engine_name: String,
location: Location,
@@ -141,14 +134,14 @@ pub enum Error {
#[snafu(display("Operation {} not supported", op))]
NotSupported { op: String, location: Location },
#[snafu(display("Failed to open table {table_id}, source: {source}, at {location}"))]
#[snafu(display("Failed to open table {table_id}"))]
OpenTable {
table_id: TableId,
location: Location,
source: table::error::Error,
},
#[snafu(display("Failed to open table in parallel, source: {}", source))]
#[snafu(display("Failed to open table in parallel"))]
ParallelOpenTable { source: JoinError },
#[snafu(display("Table not found while opening table, table info: {}", table_info))]
@@ -163,58 +156,52 @@ pub enum Error {
source: common_recordbatch::error::Error,
},
#[snafu(display("Failed to create recordbatch, source: {}", source))]
#[snafu(display("Failed to create recordbatch"))]
CreateRecordBatch {
location: Location,
source: common_recordbatch::error::Error,
},
#[snafu(display(
"Failed to insert table creation record to system catalog, source: {}",
source
))]
#[snafu(display("Failed to insert table creation record to system catalog"))]
InsertCatalogRecord {
location: Location,
source: table::error::Error,
},
#[snafu(display("Failed to scan system catalog table, source: {}", source))]
#[snafu(display("Failed to scan system catalog table"))]
SystemCatalogTableScan {
location: Location,
source: table::error::Error,
},
#[snafu(display("{source}"))]
#[snafu(display(""))]
Internal {
location: Location,
source: BoxedError,
},
#[snafu(display(
"Failed to upgrade weak catalog manager reference. location: {}",
location
))]
#[snafu(display("Failed to upgrade weak catalog manager reference"))]
UpgradeWeakCatalogManagerRef { location: Location },
#[snafu(display("Failed to execute system catalog table scan, source: {}", source))]
#[snafu(display("Failed to execute system catalog table scan"))]
SystemCatalogTableScanExec {
location: Location,
source: common_query::error::Error,
},
#[snafu(display("Cannot parse catalog value, source: {}", source))]
#[snafu(display("Cannot parse catalog value"))]
InvalidCatalogValue {
location: Location,
source: common_catalog::error::Error,
},
#[snafu(display("Failed to perform metasrv operation, source: {}", source))]
#[snafu(display("Failed to perform metasrv operation"))]
MetaSrv {
location: Location,
source: meta_client::error::Error,
},
#[snafu(display("Invalid table info in catalog, source: {}", source))]
#[snafu(display("Invalid table info in catalog"))]
InvalidTableInfoInCatalog {
location: Location,
source: datatypes::error::Error,
@@ -223,14 +210,14 @@ pub enum Error {
#[snafu(display("Illegal access to catalog: {} and schema: {}", catalog, schema))]
QueryAccessDenied { catalog: String, schema: String },
#[snafu(display("{}: {}", msg, source))]
#[snafu(display("msg: {}", msg))]
Datafusion {
msg: String,
source: DataFusionError,
location: Location,
},
#[snafu(display("Table schema mismatch, source: {}", source))]
#[snafu(display("Table schema mismatch"))]
TableSchemaMismatch {
location: Location,
source: table::error::Error,
@@ -239,7 +226,7 @@ pub enum Error {
#[snafu(display("A generic error has occurred, msg: {}", msg))]
Generic { msg: String, location: Location },
#[snafu(display("Table metadata manager error: {}", source))]
#[snafu(display("Table metadata manager error"))]
TableMetadataManager {
source: common_meta::error::Error,
location: Location,

View File

@@ -26,30 +26,26 @@ pub enum Error {
#[snafu(display("Illegal Flight messages, reason: {}", reason))]
IllegalFlightMessages { reason: String, location: Location },
#[snafu(display("Failed to do Flight get, code: {}, source: {}", tonic_code, source))]
#[snafu(display("Failed to do Flight get, code: {}", tonic_code))]
FlightGet {
addr: String,
tonic_code: Code,
source: BoxedError,
},
#[snafu(display(
"Failure occurs during handling request, location: {}, source: {}",
location,
source
))]
#[snafu(display("Failure occurs during handling request"))]
HandleRequest {
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to convert FlightData, source: {}", source))]
#[snafu(display("Failed to convert FlightData"))]
ConvertFlightData {
location: Location,
source: common_grpc::Error,
},
#[snafu(display("Column datatype error, source: {}", source))]
#[snafu(display("Column datatype error"))]
ColumnDataType {
location: Location,
source: api::error::Error,
@@ -61,18 +57,14 @@ pub enum Error {
#[snafu(display("Missing required field in protobuf, field: {}", field))]
MissingField { field: String, location: Location },
#[snafu(display(
"Failed to create gRPC channel, peer address: {}, source: {}",
addr,
source
))]
#[snafu(display("Failed to create gRPC channel, peer address: {}", addr))]
CreateChannel {
addr: String,
location: Location,
source: common_grpc::error::Error,
},
#[snafu(display("Failed to request RegionServer, code: {}, source: {}", code, source))]
#[snafu(display("Failed to request RegionServer, code: {}", code))]
RegionServer { code: Code, source: BoxedError },
// Server error carried in Tonic Status's metadata.

View File

@@ -23,55 +23,55 @@ use snafu::{Location, Snafu};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to create default catalog and schema, source: {}", source))]
#[snafu(display("Failed to create default catalog and schema"))]
InitMetadata {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to iter stream, source: {}", source))]
#[snafu(display("Failed to iter stream"))]
IterStream {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to start datanode, source: {}", source))]
#[snafu(display("Failed to start datanode"))]
StartDatanode {
location: Location,
source: datanode::error::Error,
},
#[snafu(display("Failed to shutdown datanode, source: {}", source))]
#[snafu(display("Failed to shutdown datanode"))]
ShutdownDatanode {
location: Location,
source: datanode::error::Error,
},
#[snafu(display("Failed to start frontend, source: {}", source))]
#[snafu(display("Failed to start frontend"))]
StartFrontend {
location: Location,
source: frontend::error::Error,
},
#[snafu(display("Failed to shutdown frontend, source: {}", source))]
#[snafu(display("Failed to shutdown frontend"))]
ShutdownFrontend {
location: Location,
source: frontend::error::Error,
},
#[snafu(display("Failed to build meta server, source: {}", source))]
#[snafu(display("Failed to build meta server"))]
BuildMetaServer {
location: Location,
source: meta_srv::error::Error,
},
#[snafu(display("Failed to start meta server, source: {}", source))]
#[snafu(display("Failed to start meta server"))]
StartMetaServer {
location: Location,
source: meta_srv::error::Error,
},
#[snafu(display("Failed to shutdown meta server, source: {}", source))]
#[snafu(display("Failed to shutdown meta server"))]
ShutdownMetaServer {
location: Location,
source: meta_srv::error::Error,
@@ -83,13 +83,13 @@ pub enum Error {
#[snafu(display("Illegal config: {}", msg))]
IllegalConfig { msg: String, location: Location },
#[snafu(display("Illegal auth config: {}", source))]
#[snafu(display("Illegal auth config"))]
IllegalAuthConfig {
location: Location,
source: auth::error::Error,
},
#[snafu(display("Unsupported selector type, {} source: {}", selector_type, source))]
#[snafu(display("Unsupported selector type: {}", selector_type))]
UnsupportedSelectorType {
selector_type: String,
location: Location,
@@ -99,75 +99,75 @@ pub enum Error {
#[snafu(display("Invalid REPL command: {reason}"))]
InvalidReplCommand { reason: String },
#[snafu(display("Cannot create REPL: {}", source))]
#[snafu(display("Cannot create REPL"))]
ReplCreation {
source: ReadlineError,
location: Location,
},
#[snafu(display("Error reading command: {}", source))]
#[snafu(display("Error reading command"))]
Readline {
source: ReadlineError,
location: Location,
},
#[snafu(display("Failed to request database, sql: {sql}, source: {source}"))]
#[snafu(display("Failed to request database, sql: {sql}"))]
RequestDatabase {
sql: String,
location: Location,
source: client::Error,
},
#[snafu(display("Failed to collect RecordBatches, source: {source}"))]
#[snafu(display("Failed to collect RecordBatches"))]
CollectRecordBatches {
location: Location,
source: common_recordbatch::error::Error,
},
#[snafu(display("Failed to pretty print Recordbatches, source: {source}"))]
#[snafu(display("Failed to pretty print Recordbatches"))]
PrettyPrintRecordBatches {
location: Location,
source: common_recordbatch::error::Error,
},
#[snafu(display("Failed to start Meta client, source: {}", source))]
#[snafu(display("Failed to start Meta client"))]
StartMetaClient {
location: Location,
source: meta_client::error::Error,
},
#[snafu(display("Failed to parse SQL: {}, source: {}", sql, source))]
#[snafu(display("Failed to parse SQL: {}", sql))]
ParseSql {
sql: String,
location: Location,
source: query::error::Error,
},
#[snafu(display("Failed to plan statement, source: {}", source))]
#[snafu(display("Failed to plan statement"))]
PlanStatement {
location: Location,
source: query::error::Error,
},
#[snafu(display("Failed to encode logical plan in substrait, source: {}", source))]
#[snafu(display("Failed to encode logical plan in substrait"))]
SubstraitEncodeLogicalPlan {
location: Location,
source: substrait::error::Error,
},
#[snafu(display("Failed to load layered config, source: {}", source))]
#[snafu(display("Failed to load layered config"))]
LoadLayeredConfig {
source: ConfigError,
location: Location,
},
#[snafu(display("Failed to start catalog manager, source: {}", source))]
#[snafu(display("Failed to start catalog manager"))]
StartCatalogManager {
location: Location,
source: catalog::error::Error,
},
#[snafu(display("Failed to connect to Etcd at {etcd_addr}, source: {}", source))]
#[snafu(display("Failed to connect to Etcd at {etcd_addr}"))]
ConnectEtcd {
etcd_addr: String,
source: etcd_client::Error,

View File

@@ -37,7 +37,7 @@ pub enum Error {
#[snafu(display("Buffer underflow"))]
Underflow { location: Location },
#[snafu(display("IO operation reach EOF, source: {}", source))]
#[snafu(display("IO operation reach EOF"))]
Eof {
source: std::io::Error,
location: Location,

View File

@@ -42,82 +42,82 @@ pub enum Error {
#[snafu(display("empty host: {}", url))]
EmptyHostPath { url: String, location: Location },
#[snafu(display("Invalid url: {}, error :{}", url, source))]
#[snafu(display("Invalid url: {}", url))]
InvalidUrl {
url: String,
source: ParseError,
location: Location,
},
#[snafu(display("Failed to build backend, source: {}", source))]
#[snafu(display("Failed to build backend"))]
BuildBackend {
source: object_store::Error,
location: Location,
},
#[snafu(display("Failed to build orc reader, source: {}", source))]
#[snafu(display("Failed to build orc reader"))]
OrcReader {
location: Location,
source: orc_rust::error::Error,
},
#[snafu(display("Failed to read object from path: {}, source: {}", path, source))]
#[snafu(display("Failed to read object from path: {}", path))]
ReadObject {
path: String,
location: Location,
source: object_store::Error,
},
#[snafu(display("Failed to write object to path: {}, source: {}", path, source))]
#[snafu(display("Failed to write object to path: {}", path))]
WriteObject {
path: String,
location: Location,
source: object_store::Error,
},
#[snafu(display("Failed to write: {}", source))]
#[snafu(display("Failed to write"))]
AsyncWrite {
source: std::io::Error,
location: Location,
},
#[snafu(display("Failed to write record batch: {}", source))]
#[snafu(display("Failed to write record batch"))]
WriteRecordBatch {
location: Location,
source: ArrowError,
},
#[snafu(display("Failed to encode record batch: {}", source))]
#[snafu(display("Failed to encode record batch"))]
EncodeRecordBatch {
location: Location,
source: ParquetError,
},
#[snafu(display("Failed to read record batch: {}", source))]
#[snafu(display("Failed to read record batch"))]
ReadRecordBatch {
location: Location,
source: datafusion::error::DataFusionError,
},
#[snafu(display("Failed to read parquet source: {}", source))]
#[snafu(display("Failed to read parquet"))]
ReadParquetSnafu {
location: Location,
source: datafusion::parquet::errors::ParquetError,
},
#[snafu(display("Failed to convert parquet to schema: {}", source))]
#[snafu(display("Failed to convert parquet to schema"))]
ParquetToSchema {
location: Location,
source: datafusion::parquet::errors::ParquetError,
},
#[snafu(display("Failed to infer schema from file, source: {}", source))]
#[snafu(display("Failed to infer schema from file"))]
InferSchema {
location: Location,
source: arrow_schema::ArrowError,
},
#[snafu(display("Failed to list object in path: {}, source: {}", path, source))]
#[snafu(display("Failed to list object in path: {}", path))]
ListObjects {
path: String,
location: Location,
@@ -127,7 +127,7 @@ pub enum Error {
#[snafu(display("Invalid connection: {}", msg))]
InvalidConnection { msg: String, location: Location },
#[snafu(display("Failed to join handle: {}", source))]
#[snafu(display("Failed to join handle"))]
JoinHandle {
location: Location,
source: tokio::task::JoinError,
@@ -140,7 +140,7 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to merge schema: {}", source))]
#[snafu(display("Failed to merge schema"))]
MergeSchema {
source: arrow_schema::ArrowError,
location: Location,

View File

@@ -24,7 +24,7 @@ pub enum Error {
#[snafu(display("Illegal delete request, reason: {reason}"))]
IllegalDeleteRequest { reason: String, location: Location },
#[snafu(display("Column datatype error, source: {}", source))]
#[snafu(display("Column datatype error"))]
ColumnDataType {
location: Location,
source: api::error::Error,
@@ -49,7 +49,7 @@ pub enum Error {
#[snafu(display("Invalid column proto: {}", err_msg))]
InvalidColumnProto { err_msg: String, location: Location },
#[snafu(display("Failed to create vector, source: {}", source))]
#[snafu(display("Failed to create vector"))]
CreateVector {
location: Location,
source: datatypes::error::Error,
@@ -58,11 +58,7 @@ pub enum Error {
#[snafu(display("Missing required field in protobuf, field: {}", field))]
MissingField { field: String, location: Location },
#[snafu(display(
"Invalid column proto definition, column: {}, source: {}",
column,
source
))]
#[snafu(display("Invalid column proto definition, column: {}", column))]
InvalidColumnDef {
column: String,
location: Location,

View File

@@ -27,7 +27,7 @@ pub enum Error {
#[snafu(display("Invalid client tls config, {}", msg))]
InvalidTlsConfig { msg: String },
#[snafu(display("Invalid config file path, {}", source))]
#[snafu(display("Invalid config file path"))]
InvalidConfigFilePath {
source: io::Error,
location: Location,
@@ -46,13 +46,13 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to create gRPC channel, source: {}", source))]
#[snafu(display("Failed to create gRPC channel"))]
CreateChannel {
source: tonic::transport::Error,
location: Location,
},
#[snafu(display("Failed to create RecordBatch, source: {}", source))]
#[snafu(display("Failed to create RecordBatch"))]
CreateRecordBatch {
location: Location,
source: common_recordbatch::error::Error,
@@ -61,7 +61,7 @@ pub enum Error {
#[snafu(display("Failed to convert Arrow type: {}", from))]
Conversion { from: String, location: Location },
#[snafu(display("Failed to decode FlightData, source: {}", source))]
#[snafu(display("Failed to decode FlightData"))]
DecodeFlightData {
source: api::DecodeError,
location: Location,
@@ -70,7 +70,7 @@ pub enum Error {
#[snafu(display("Invalid FlightData, reason: {}", reason))]
InvalidFlightData { reason: String, location: Location },
#[snafu(display("Failed to convert Arrow Schema, source: {}", source))]
#[snafu(display("Failed to convert Arrow Schema"))]
ConvertArrowSchema {
location: Location,
source: datatypes::error::Error,

View File

@@ -23,7 +23,7 @@ pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("{source}"))]
#[snafu(display(""))]
Internal { source: BoxedError },
#[snafu(display("Memory profiling is not supported"))]

View File

@@ -22,7 +22,7 @@ use snafu::{Location, Snafu};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to read OPT_PROF, source: {}", source))]
#[snafu(display("Failed to read OPT_PROF"))]
ReadOptProf { source: tikv_jemalloc_ctl::Error },
#[snafu(display("Memory profiling is not enabled"))]
@@ -31,17 +31,13 @@ pub enum Error {
#[snafu(display("Failed to build temp file from given path: {:?}", path))]
BuildTempPath { path: PathBuf, location: Location },
#[snafu(display("Failed to open temp file: {}, source: {}", path, source))]
#[snafu(display("Failed to open temp file: {}", path))]
OpenTempFile {
path: String,
source: std::io::Error,
},
#[snafu(display(
"Failed to dump profiling data to temp file: {:?}, source: {}",
path,
source
))]
#[snafu(display("Failed to dump profiling data to temp file: {:?}", path))]
DumpProfileData {
path: PathBuf,
source: tikv_jemalloc_ctl::Error,

View File

@@ -46,56 +46,48 @@ pub enum Error {
location: Location,
},
#[snafu(display(
"Failed to register procedure loader, type name: {}, source: {}",
type_name,
source
))]
#[snafu(display("Failed to register procedure loader, type name: {}", type_name))]
RegisterProcedureLoader {
type_name: String,
location: Location,
source: common_procedure::error::Error,
},
#[snafu(display("Failed to submit procedure, source: {source}"))]
#[snafu(display("Failed to submit procedure"))]
SubmitProcedure {
location: Location,
source: common_procedure::Error,
},
#[snafu(display("Unsupported operation {}, location: {}", operation, location))]
#[snafu(display("Unsupported operation {}", operation))]
Unsupported {
operation: String,
location: Location,
},
#[snafu(display("Failed to wait procedure done, source: {source}"))]
#[snafu(display("Failed to wait procedure done"))]
WaitProcedure {
location: Location,
source: common_procedure::Error,
},
#[snafu(display("Failed to convert RawTableInfo into TableInfo: {}", source))]
#[snafu(display("Failed to convert RawTableInfo into TableInfo"))]
ConvertRawTableInfo {
location: Location,
source: datatypes::Error,
},
#[snafu(display("Primary key '{key}' not found when creating region request, at {location}"))]
#[snafu(display("Primary key '{key}' not found when creating region request"))]
PrimaryKeyNotFound { key: String, location: Location },
#[snafu(display(
"Failed to build table meta for table: {}, source: {}",
table_name,
source
))]
#[snafu(display("Failed to build table meta for table: {}", table_name))]
BuildTableMeta {
table_name: String,
source: table::metadata::TableMetaBuilderError,
location: Location,
},
#[snafu(display("Table occurs error, source: {}", source))]
#[snafu(display("Table occurs error"))]
Table {
location: Location,
source: table::error::Error,
@@ -107,19 +99,19 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to decode protobuf, source: {}", source))]
#[snafu(display("Failed to decode protobuf"))]
DecodeProto {
location: Location,
source: prost::DecodeError,
},
#[snafu(display("Failed to encode object into json, source: {}", source))]
#[snafu(display("Failed to encode object into json"))]
EncodeJson {
location: Location,
source: JsonError,
},
#[snafu(display("Failed to decode object from json, source: {}", source))]
#[snafu(display("Failed to decode object from json"))]
DecodeJson {
location: Location,
source: JsonError,
@@ -131,7 +123,7 @@ pub enum Error {
#[snafu(display("Failed to send message: {err_msg}"))]
SendMessage { err_msg: String, location: Location },
#[snafu(display("Failed to serde json, source: {}", source))]
#[snafu(display("Failed to serde json"))]
SerdeJson {
source: serde_json::error::Error,
location: Location,
@@ -154,13 +146,13 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to convert alter table request, source: {source}, at {location}"))]
#[snafu(display("Failed to convert alter table request"))]
ConvertAlterTableRequest {
source: common_grpc_expr::error::Error,
location: Location,
},
#[snafu(display("Invalid protobuf message: {err_msg}, at {location}"))]
#[snafu(display("Invalid protobuf message: {err_msg}"))]
InvalidProtoMsg { err_msg: String, location: Location },
#[snafu(display("Unexpected: {err_msg}"))]
@@ -182,7 +174,7 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to convert raw key to str, source: {}", source))]
#[snafu(display("Failed to convert raw key to str"))]
ConvertRawKey {
location: Location,
source: Utf8Error,
@@ -222,29 +214,29 @@ pub enum Error {
location: Location,
},
#[snafu(display("Invalid catalog value, source: {}", source))]
#[snafu(display("Invalid catalog value"))]
InvalidCatalogValue {
source: common_catalog::error::Error,
location: Location,
},
#[snafu(display("{}", source))]
#[snafu(display("External error"))]
External {
location: Location,
source: BoxedError,
},
#[snafu(display("Invalid heartbeat response, location: {}", location))]
#[snafu(display("Invalid heartbeat response"))]
InvalidHeartbeatResponse { location: Location },
#[snafu(display("Failed to operate on datanode: {}, source: {}", peer, source))]
#[snafu(display("Failed to operate on datanode: {}", peer))]
OperateDatanode {
location: Location,
peer: Peer,
source: BoxedError,
},
#[snafu(display("Retry later, source: {}", source))]
#[snafu(display("Retry later"))]
RetryLater { source: BoxedError },
}

View File

@@ -26,16 +26,13 @@ use crate::procedure::ProcedureId;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display(
"Failed to execute procedure due to external error, source: {}",
source
))]
#[snafu(display("Failed to execute procedure due to external error"))]
External { source: BoxedError },
#[snafu(display("Loader {} is already registered", name))]
LoaderConflict { name: String, location: Location },
#[snafu(display("Failed to serialize to json, source: {}", source))]
#[snafu(display("Failed to serialize to json"))]
ToJson {
source: serde_json::Error,
location: Location,
@@ -47,83 +44,79 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to put state, key: '{key}', source: {source}"))]
#[snafu(display("Failed to put state, key: '{key}'"))]
PutState {
key: String,
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to delete {}, source: {}", key, source))]
#[snafu(display("Failed to delete {}", key))]
DeleteState {
key: String,
source: object_store::Error,
},
#[snafu(display("Failed to delete keys: '{keys}', source: {source}"))]
#[snafu(display("Failed to delete keys: '{keys}'"))]
DeleteStates {
keys: String,
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to list state, path: '{path}', source: {source}"))]
#[snafu(display("Failed to list state, path: '{path}'"))]
ListState {
path: String,
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to deserialize from json, source: {}", source))]
#[snafu(display("Failed to deserialize from json"))]
FromJson {
source: serde_json::Error,
location: Location,
},
#[snafu(display("Procedure exec failed, source: {}", source))]
#[snafu(display("Procedure exec failed"))]
RetryLater { source: BoxedError },
#[snafu(display("Procedure panics, procedure_id: {}", procedure_id))]
ProcedurePanic { procedure_id: ProcedureId },
#[snafu(display("Failed to wait watcher, source: {}", source))]
#[snafu(display("Failed to wait watcher"))]
WaitWatcher {
source: tokio::sync::watch::error::RecvError,
location: Location,
},
#[snafu(display("Failed to execute procedure, source: {}", source))]
#[snafu(display("Failed to execute procedure"))]
ProcedureExec {
source: Arc<Error>,
location: Location,
},
#[snafu(display(
"Procedure retry exceeded max times, procedure_id: {}, source:{}",
procedure_id,
source
))]
#[snafu(display("Procedure retry exceeded max times, procedure_id: {}", procedure_id))]
RetryTimesExceeded {
source: Arc<Error>,
procedure_id: ProcedureId,
},
#[snafu(display("Corrupted data, error: {source}"))]
#[snafu(display("Corrupted data, error: "))]
CorruptedData { source: FromUtf8Error },
#[snafu(display("Failed to start the remove_outdated_meta method, error: {}", source))]
#[snafu(display("Failed to start the remove_outdated_meta method, error"))]
StartRemoveOutdatedMetaTask {
source: common_runtime::error::Error,
location: Location,
},
#[snafu(display("Failed to stop the remove_outdated_meta method, error: {}", source))]
#[snafu(display("Failed to stop the remove_outdated_meta method, error"))]
StopRemoveOutdatedMetaTask {
source: common_runtime::error::Error,
location: Location,
},
#[snafu(display("Subprocedure {} failed, source: {}", subprocedure_id, source))]
#[snafu(display("Subprocedure {} failed", subprocedure_id))]
SubprocedureFailed {
subprocedure_id: ProcedureId,
source: Arc<Error>,

View File

@@ -460,6 +460,7 @@ mod tests {
use futures_util::future::BoxFuture;
use futures_util::FutureExt;
use object_store::ObjectStore;
use snafu::ErrorCompat;
use super::*;
use crate::local::test_util;
@@ -942,7 +943,14 @@ mod tests {
// Run the runner and execute the procedure.
runner.run().await;
let err = meta.state().error().unwrap().to_string();
let err = meta
.state()
.error()
.unwrap()
.iter_chain()
.last()
.unwrap()
.to_string();
assert!(err.contains("subprocedure failed"), "{err}");
}
}

View File

@@ -29,23 +29,20 @@ use statrs::StatsError;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Fail to execute Python UDF, source: {}", msg))]
#[snafu(display("Failed to execute Python UDF: {}", msg))]
PyUdf {
// TODO(discord9): find a way that prevent circle depend(query<-script<-query) and can use script's error type
msg: String,
location: Location,
},
#[snafu(display(
"Fail to create temporary recordbatch when eval Python UDF, source: {}",
source
))]
#[snafu(display("Failed to create temporary recordbatch when eval Python UDF"))]
UdfTempRecordBatch {
location: Location,
source: RecordbatchError,
},
#[snafu(display("Fail to execute function, source: {}", source))]
#[snafu(display("Failed to execute function"))]
ExecuteFunction {
source: DataFusionError,
location: Location,
@@ -58,25 +55,25 @@ pub enum Error {
location: Location,
},
#[snafu(display("Fail to generate function, source: {}", source))]
#[snafu(display("Failed to generate function"))]
GenerateFunction {
source: StatsError,
location: Location,
},
#[snafu(display("Fail to cast scalar value into vector: {}", source))]
#[snafu(display("Failed to cast scalar value into vector"))]
FromScalarValue {
location: Location,
source: DataTypeError,
},
#[snafu(display("Fail to cast arrow array into vector: {}", source))]
#[snafu(display("Failed to cast arrow array into vector"))]
FromArrowArray {
location: Location,
source: DataTypeError,
},
#[snafu(display("Fail to cast arrow array into vector: {:?}, {}", data_type, source))]
#[snafu(display("Failed to cast arrow array into vector: {:?}", data_type))]
IntoVector {
location: Location,
source: DataTypeError,
@@ -110,56 +107,50 @@ pub enum Error {
#[snafu(display("Not expected to run ExecutionPlan more than once"))]
ExecuteRepeatedly { location: Location },
#[snafu(display("General DataFusion error, source: {}", source))]
#[snafu(display("General DataFusion error"))]
GeneralDataFusion {
source: DataFusionError,
location: Location,
},
#[snafu(display(
"Failed to convert DataFusion's recordbatch stream, source: {}",
source
))]
#[snafu(display("Failed to convert DataFusion's recordbatch stream"))]
ConvertDfRecordBatchStream {
location: Location,
source: common_recordbatch::error::Error,
},
#[snafu(display("Failed to convert arrow schema, source: {}", source))]
#[snafu(display("Failed to convert arrow schema"))]
ConvertArrowSchema {
location: Location,
source: DataTypeError,
},
#[snafu(display("Failed to execute physical plan, source: {}", source))]
#[snafu(display("Failed to execute physical plan"))]
ExecutePhysicalPlan {
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to cast array to {:?}, source: {}", typ, source))]
#[snafu(display("Failed to cast array to {:?}", typ))]
TypeCast {
source: ArrowError,
typ: arrow::datatypes::DataType,
location: Location,
},
#[snafu(display(
"Failed to perform compute operation on arrow arrays, source: {}",
source
))]
#[snafu(display("Failed to perform compute operation on arrow arrays"))]
ArrowCompute {
source: ArrowError,
location: Location,
},
#[snafu(display("Query engine fail to cast value: {}", source))]
#[snafu(display("Query engine fail to cast value"))]
ToScalarValue {
location: Location,
source: DataTypeError,
},
#[snafu(display("Failed to get scalar vector, {}", source))]
#[snafu(display("Failed to get scalar vector"))]
GetScalarVector {
location: Location,
source: DataTypeError,

View File

@@ -25,19 +25,19 @@ pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Fail to create datafusion record batch, source: {}", source))]
#[snafu(display("Fail to create datafusion record batch"))]
NewDfRecordBatch {
source: datatypes::arrow::error::ArrowError,
location: Location,
},
#[snafu(display("Data types error, source: {}", source))]
#[snafu(display("Data types error"))]
DataTypes {
location: Location,
source: datatypes::error::Error,
},
#[snafu(display("External error, location: {}, source: {}", location, source))]
#[snafu(display("External error"))]
External {
location: Location,
source: BoxedError,
@@ -46,35 +46,34 @@ pub enum Error {
#[snafu(display("Failed to create RecordBatches, reason: {}", reason))]
CreateRecordBatches { reason: String, location: Location },
#[snafu(display("Failed to convert Arrow schema, source: {}", source))]
#[snafu(display("Failed to convert Arrow schema"))]
SchemaConversion {
source: datatypes::error::Error,
location: Location,
},
#[snafu(display("Failed to poll stream, source: {}", source))]
#[snafu(display("Failed to poll stream"))]
PollStream {
source: datafusion::error::DataFusionError,
location: Location,
},
#[snafu(display("Fail to format record batch, source: {}", source))]
#[snafu(display("Fail to format record batch"))]
Format {
source: datatypes::arrow::error::ArrowError,
location: Location,
},
#[snafu(display("Failed to init Recordbatch stream, source: {}", source))]
#[snafu(display("Failed to init Recordbatch stream"))]
InitRecordbatchStream {
source: datafusion_common::DataFusionError,
location: Location,
},
#[snafu(display(
"Failed to project Arrow RecordBatch with schema {:?} and projection {:?}, source: {}",
"Failed to project Arrow RecordBatch with schema {:?} and projection {:?}",
schema,
projection,
source
))]
ProjectArrowRecordBatch {
source: datatypes::arrow::error::ArrowError,
@@ -91,10 +90,9 @@ pub enum Error {
},
#[snafu(display(
"Failed to cast vector of type '{:?}' to type '{:?}', source: {}",
"Failed to cast vector of type '{:?}' to type '{:?}'",
from_type,
to_type,
source
))]
CastVector {
from_type: ConcreteDataType,

View File

@@ -23,7 +23,7 @@ pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub(crate)))]
pub enum Error {
#[snafu(display("Failed to build runtime, source: {}", source))]
#[snafu(display("Failed to build runtime"))]
BuildRuntime {
source: std::io::Error,
location: Location,
@@ -32,11 +32,7 @@ pub enum Error {
#[snafu(display("Repeated task {} is already started", name))]
IllegalState { name: String, location: Location },
#[snafu(display(
"Failed to wait for repeated task {} to stop, source: {}",
name,
source
))]
#[snafu(display("Failed to wait for repeated task {} to stop", name))]
WaitGcTaskStop {
name: String,
source: JoinError,

View File

@@ -39,13 +39,13 @@ pub enum Error {
#[snafu(display("Unsupported substrait type: {}", ty))]
UnsupportedSubstraitType { ty: String, location: Location },
#[snafu(display("Failed to decode substrait relation, source: {}", source))]
#[snafu(display("Failed to decode substrait relation"))]
DecodeRel {
source: DecodeError,
location: Location,
},
#[snafu(display("Failed to encode substrait relation, source: {}", source))]
#[snafu(display("Failed to encode substrait relation"))]
EncodeRel {
source: EncodeError,
location: Location,
@@ -67,13 +67,13 @@ pub enum Error {
#[snafu(display("Invalid parameters: {}", reason))]
InvalidParameters { reason: String, location: Location },
#[snafu(display("Internal error from DataFusion: {}", source))]
#[snafu(display("Internal error from DataFusion"))]
DFInternal {
source: DataFusionError,
location: Location,
},
#[snafu(display("Internal error: {}", source))]
#[snafu(display("Internal error"))]
Internal {
location: Location,
source: BoxedError,
@@ -95,26 +95,26 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to convert DataFusion schema, source: {}", source))]
#[snafu(display("Failed to convert DataFusion schema"))]
ConvertDfSchema {
location: Location,
source: datatypes::error::Error,
},
#[snafu(display("Unable to resolve table: {table_name}, error: {source}"))]
#[snafu(display("Unable to resolve table: {table_name}, error: "))]
ResolveTable {
table_name: String,
location: Location,
source: catalog::error::Error,
},
#[snafu(display("Failed to encode DataFusion plan, source: {}", source))]
#[snafu(display("Failed to encode DataFusion plan"))]
EncodeDfPlan {
source: datafusion::error::DataFusionError,
location: Location,
},
#[snafu(display("Failed to decode DataFusion plan, source: {}", source))]
#[snafu(display("Failed to decode DataFusion plan"))]
DecodeDfPlan {
source: datafusion::error::DataFusionError,
location: Location,

View File

@@ -23,7 +23,7 @@ use snafu::{Location, Snafu};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to parse string to date, raw: {}, source: {}", raw, source))]
#[snafu(display("Failed to parse string to date, raw: {}", raw))]
ParseDateStr { raw: String, source: ParseError },
#[snafu(display("Invalid date string, raw: {}", raw))]
@@ -35,7 +35,7 @@ pub enum Error {
#[snafu(display("Failed to parse a string into Interval, raw string: {}", raw))]
ParseInterval { raw: String, location: Location },
#[snafu(display("Current timestamp overflow, source: {}", source))]
#[snafu(display("Current timestamp overflow"))]
TimestampOverflow {
source: TryFromIntError,
location: Location,
@@ -51,7 +51,7 @@ pub enum Error {
location: Location,
},
#[snafu(display("Invalid offset string {raw}: {source}"))]
#[snafu(display("Invalid offset string {raw}: "))]
ParseOffsetStr {
raw: String,
source: ParseIntError,

View File

@@ -27,43 +27,43 @@ use table::error::Error as TableError;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to handle heartbeat response, source: {}", source))]
#[snafu(display("Failed to handle heartbeat response"))]
HandleHeartbeatResponse {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to get info from meta server, source: {}", source))]
#[snafu(display("Failed to get info from meta server"))]
GetMetadata {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to execute sql, source: {}", source))]
#[snafu(display("Failed to execute sql"))]
ExecuteSql {
location: Location,
source: query::error::Error,
},
#[snafu(display("Failed to plan statement, source: {}", source))]
#[snafu(display("Failed to plan statement"))]
PlanStatement {
location: Location,
source: query::error::Error,
},
#[snafu(display("Failed to execute statement, source: {}", source))]
#[snafu(display("Failed to execute statement"))]
ExecuteStatement {
location: Location,
source: query::error::Error,
},
#[snafu(display("Failed to execute logical plan, source: {}", source))]
#[snafu(display("Failed to execute logical plan"))]
ExecuteLogicalPlan {
location: Location,
source: query::error::Error,
},
#[snafu(display("Failed to decode logical plan, source: {}", source))]
#[snafu(display("Failed to decode logical plan"))]
DecodeLogicalPlan {
location: Location,
source: substrait::error::Error,
@@ -78,32 +78,28 @@ pub enum Error {
#[snafu(display("Schema not found: {}", name))]
SchemaNotFound { name: String, location: Location },
#[snafu(display("Failed to create table: {}, source: {}", table_name, source))]
#[snafu(display("Failed to create table: {}", table_name))]
CreateTable {
table_name: String,
location: Location,
source: TableError,
},
#[snafu(display("Failed to drop table {}, source: {}", table_name, source))]
#[snafu(display("Failed to drop table {}", table_name))]
DropTable {
table_name: String,
location: Location,
source: BoxedError,
},
#[snafu(display("Table engine not found: {}, source: {}", engine_name, source))]
#[snafu(display("Table engine not found: {}", engine_name))]
TableEngineNotFound {
engine_name: String,
location: Location,
source: table::error::Error,
},
#[snafu(display(
"Table engine procedure not found: {}, source: {}",
engine_name,
source
))]
#[snafu(display("Table engine procedure not found: {}", engine_name))]
EngineProcedureNotFound {
engine_name: String,
location: Location,
@@ -132,74 +128,70 @@ pub enum Error {
))]
ColumnValuesNumberMismatch { columns: usize, values: usize },
#[snafu(display("Missing insert body, source: {source}"))]
#[snafu(display("Missing insert body"))]
MissingInsertBody {
source: sql::error::Error,
location: Location,
},
#[snafu(display("Failed to insert value to table: {}, source: {}", table_name, source))]
#[snafu(display("Failed to insert value to table: {}", table_name))]
Insert {
table_name: String,
location: Location,
source: TableError,
},
#[snafu(display(
"Failed to delete value from table: {}, source: {}",
table_name,
source
))]
#[snafu(display("Failed to delete value from table: {}", table_name))]
Delete {
table_name: String,
location: Location,
source: TableError,
},
#[snafu(display("Failed to flush table: {}, source: {}", table_name, source))]
#[snafu(display("Failed to flush table: {}", table_name))]
FlushTable {
table_name: String,
location: Location,
source: TableError,
},
#[snafu(display("Failed to start server, source: {}", source))]
#[snafu(display("Failed to start server"))]
StartServer {
location: Location,
source: servers::error::Error,
},
#[snafu(display("Failed to wait for GRPC serving, source: {}", source))]
#[snafu(display("Failed to wait for GRPC serving"))]
WaitForGrpcServing {
source: servers::error::Error,
location: Location,
},
#[snafu(display("Failed to parse address {}, source: {}", addr, source))]
#[snafu(display("Failed to parse address {}", addr))]
ParseAddr {
addr: String,
source: std::net::AddrParseError,
},
#[snafu(display("Failed to create directory {}, source: {}", dir, source))]
#[snafu(display("Failed to create directory {}", dir))]
CreateDir { dir: String, source: std::io::Error },
#[snafu(display("Failed to remove directory {}, source: {}", dir, source))]
#[snafu(display("Failed to remove directory {}", dir))]
RemoveDir { dir: String, source: std::io::Error },
#[snafu(display("Failed to open log store, source: {}", source))]
#[snafu(display("Failed to open log store"))]
OpenLogStore {
location: Location,
source: Box<log_store::error::Error>,
},
#[snafu(display("Failed to init backend, source: {}", source))]
#[snafu(display("Failed to init backend"))]
InitBackend {
source: object_store::Error,
location: Location,
},
#[snafu(display("Runtime resource error, source: {}", source))]
#[snafu(display("Runtime resource error"))]
RuntimeResource {
location: Location,
source: common_runtime::error::Error,
@@ -208,7 +200,7 @@ pub enum Error {
#[snafu(display("Expect KvBackend but not found"))]
MissingKvBackend { location: Location },
#[snafu(display("Expect MetaClient but not found, location: {}", location))]
#[snafu(display("Expect MetaClient but not found"))]
MissingMetaClient { location: Location },
#[snafu(display("Invalid SQL, error: {}", msg))]
@@ -232,7 +224,7 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to register a new schema, source: {}", source))]
#[snafu(display("Failed to register a new schema"))]
RegisterSchema {
location: Location,
source: catalog::error::Error,
@@ -241,37 +233,37 @@ pub enum Error {
#[snafu(display("Schema {} already exists", name))]
SchemaExists { name: String, location: Location },
#[snafu(display("Failed to convert delete expr to request: {}", source))]
#[snafu(display("Failed to convert delete expr to request"))]
DeleteExprToRequest {
location: Location,
source: common_grpc_expr::error::Error,
},
#[snafu(display("Failed to parse SQL, source: {}", source))]
#[snafu(display("Failed to parse SQL"))]
ParseSql {
location: Location,
source: sql::error::Error,
},
#[snafu(display("Failed to prepare immutable table: {}", source))]
#[snafu(display("Failed to prepare immutable table"))]
PrepareImmutableTable {
location: Location,
source: query::error::Error,
},
#[snafu(display("Failed to access catalog, source: {}", source))]
#[snafu(display("Failed to access catalog"))]
Catalog {
location: Location,
source: catalog::error::Error,
},
#[snafu(display("Failed to initialize meta client, source: {}", source))]
#[snafu(display("Failed to initialize meta client"))]
MetaClientInit {
location: Location,
source: meta_client::error::Error,
},
#[snafu(display("Failed to insert data, source: {}", source))]
#[snafu(display("Failed to insert data"))]
InsertData {
location: Location,
source: common_grpc_expr::error::Error,
@@ -282,16 +274,16 @@ pub enum Error {
))]
TableIdProviderNotFound { location: Location },
#[snafu(display("Failed to bump table id, source: {}", source))]
#[snafu(display("Failed to bump table id"))]
BumpTableId {
location: Location,
source: table::error::Error,
},
#[snafu(display("Missing node id in Datanode config, location: {}", location))]
#[snafu(display("Missing node id in Datanode config"))]
MissingNodeId { location: Location },
#[snafu(display("Missing node id option in distributed mode, location: {}", location))]
#[snafu(display("Missing node id option in distributed mode"))]
MissingMetasrvOpts { location: Location },
#[snafu(display("Missing required field: {}", name))]
@@ -300,11 +292,7 @@ pub enum Error {
#[snafu(display("Cannot find requested database: {}-{}", catalog, schema))]
DatabaseNotFound { catalog: String, schema: String },
#[snafu(display(
"Failed to build default value, column: {}, source: {}",
column,
source
))]
#[snafu(display("Failed to build default value, column: {}", column))]
ColumnDefaultValue {
column: String,
location: Location,
@@ -317,39 +305,39 @@ pub enum Error {
))]
ColumnNoneDefaultValue { column: String, location: Location },
#[snafu(display("Unrecognized table option: {}", source))]
#[snafu(display("Unrecognized table option"))]
UnrecognizedTableOption {
location: Location,
source: table::error::Error,
},
#[snafu(display("Failed to submit procedure {}, source: {}", procedure_id, source))]
#[snafu(display("Failed to submit procedure {}", procedure_id))]
SubmitProcedure {
procedure_id: ProcedureId,
location: Location,
source: common_procedure::error::Error,
},
#[snafu(display("Failed to wait procedure {} done, source: {}", procedure_id, source))]
#[snafu(display("Failed to wait procedure {} done", procedure_id))]
WaitProcedure {
procedure_id: ProcedureId,
location: Location,
source: common_procedure::error::Error,
},
#[snafu(display("Failed to shutdown server, source: {}", source))]
#[snafu(display("Failed to shutdown server"))]
ShutdownServer {
location: Location,
source: servers::error::Error,
},
#[snafu(display("Failed to shutdown instance, source: {}", source))]
#[snafu(display("Failed to shutdown instance"))]
ShutdownInstance {
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to encode object into json, source: {}", source))]
#[snafu(display("Failed to encode object into json"))]
EncodeJson {
location: Location,
source: JsonError,
@@ -361,13 +349,13 @@ pub enum Error {
#[snafu(display("Missing WAL dir config"))]
MissingWalDirConfig { location: Location },
#[snafu(display("Failed to join task, source: {}", source))]
#[snafu(display("Failed to join task"))]
JoinTask {
source: common_runtime::JoinError,
location: Location,
},
#[snafu(display("Column datatype error, source: {}", source))]
#[snafu(display("Column datatype error"))]
ColumnDataType {
location: Location,
source: api::error::Error,
@@ -379,46 +367,35 @@ pub enum Error {
location: Location,
},
#[snafu(display(
"Failed to handle request for region {}, source: {}, location: {}",
region_id,
source,
location
))]
#[snafu(display("Failed to handle request for region {}", region_id))]
HandleRegionRequest {
region_id: RegionId,
location: Location,
source: BoxedError,
},
#[snafu(display("RegionId {} not found, location: {}", region_id, location))]
#[snafu(display("RegionId {} not found", region_id))]
RegionNotFound {
region_id: RegionId,
location: Location,
},
#[snafu(display("Region engine {} is not registered, location: {}", name, location))]
#[snafu(display("Region engine {} is not registered", name))]
RegionEngineNotFound { name: String, location: Location },
#[snafu(display("Unsupported gRPC request, kind: {}, location: {}", kind, location))]
#[snafu(display("Unsupported gRPC request, kind: {}", kind))]
UnsupportedGrpcRequest { kind: String, location: Location },
#[snafu(display(
"Unsupported output type, expected: {}, location: {}",
expected,
location
))]
#[snafu(display("Unsupported output type, expected: {}", expected))]
UnsupportedOutput {
expected: String,
location: Location,
},
#[snafu(display(
"Failed to get metadata from engine {} for region_id {}, location: {}, source: {}",
"Failed to get metadata from engine {} for region_id {}",
engine,
region_id,
location,
source
))]
GetRegionMetadata {
engine: String,
@@ -427,22 +404,13 @@ pub enum Error {
source: BoxedError,
},
#[snafu(display(
"Failed to build region requests, location:{}, source: {}",
location,
source
))]
#[snafu(display("Failed to build region requests"))]
BuildRegionRequests {
location: Location,
source: store_api::metadata::MetadataError,
},
#[snafu(display(
"Failed to stop region engine {}, location:{}, source: {}",
name,
location,
source
))]
#[snafu(display("Failed to stop region engine {}", name))]
StopRegionEngine {
name: String,
location: Location,

View File

@@ -21,13 +21,13 @@ use snafu::{Location, Snafu};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to serialize data, source: {}", source))]
#[snafu(display("Failed to serialize data"))]
Serialize {
source: serde_json::Error,
location: Location,
},
#[snafu(display("Failed to deserialize data, source: {}, json: {}", source, json))]
#[snafu(display("Failed to deserialize data, json: {}", json))]
Deserialize {
source: serde_json::Error,
location: Location,
@@ -60,11 +60,7 @@ pub enum Error {
location: Location,
},
#[snafu(display(
"Failed to parse version in schema meta, value: {}, source: {}",
value,
source
))]
#[snafu(display("Failed to parse version in schema meta, value: {}", value))]
ParseSchemaVersion {
value: String,
source: std::num::ParseIntError,
@@ -83,13 +79,13 @@ pub enum Error {
location: Location,
},
#[snafu(display("Arrow failed to compute, source: {}", source))]
#[snafu(display("Arrow failed to compute"))]
ArrowCompute {
source: arrow::error::ArrowError,
location: Location,
},
#[snafu(display("Failed to project arrow schema, source: {}", source))]
#[snafu(display("Failed to project arrow schema"))]
ProjectArrowSchema {
source: arrow::error::ArrowError,
location: Location,

View File

@@ -34,7 +34,7 @@ pub enum Error {
#[snafu(display("Unexpected engine: {}", engine))]
UnexpectedEngine { engine: String, location: Location },
#[snafu(display("Invalid region metadata, source: {}", source))]
#[snafu(display("Invalid region metadata"))]
InvalidMetadata {
source: store_api::metadata::MetadataError,
location: Location,
@@ -52,52 +52,40 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to check object from path: {}, source: {}", path, source))]
#[snafu(display("Failed to check object from path: {}", path))]
CheckObject {
path: String,
location: Location,
source: object_store::Error,
},
#[snafu(display("Fail to encode object into json, source: {}", source))]
#[snafu(display("Fail to encode object into json"))]
EncodeJson {
location: Location,
source: JsonError,
},
#[snafu(display("Fail to decode object from json, source: {}", source))]
#[snafu(display("Fail to decode object from json"))]
DecodeJson {
location: Location,
source: JsonError,
},
#[snafu(display(
"Failed to store region manifest, region_id: {}, source: {}",
region_id,
source,
))]
#[snafu(display("Failed to store region manifest, region_id: {}", region_id))]
StoreRegionManifest {
source: object_store::Error,
region_id: RegionId,
location: Location,
},
#[snafu(display(
"Failed to load region manifest, region_id: {}, source: {}",
region_id,
source,
))]
#[snafu(display("Failed to load region manifest, region_id: {}", region_id))]
LoadRegionManifest {
source: object_store::Error,
region_id: RegionId,
location: Location,
},
#[snafu(display(
"Failed to delete region manifest, region_id: {}, source: {}",
region_id,
source,
))]
#[snafu(display("Failed to delete region manifest, region_id: {},", region_id))]
DeleteRegionManifest {
source: object_store::Error,
region_id: RegionId,
@@ -110,49 +98,49 @@ pub enum Error {
#[snafu(display("Missing required field: {}", name))]
MissingRequiredField { name: String, location: Location },
#[snafu(display("Failed to build backend, source: {}", source))]
#[snafu(display("Failed to build backend"))]
BuildBackend {
location: Location,
source: common_datasource::error::Error,
},
#[snafu(display("Failed to build csv config: {}", source))]
#[snafu(display("Failed to build csv config"))]
BuildCsvConfig {
source: common_datasource::file_format::csv::CsvConfigBuilderError,
location: Location,
},
#[snafu(display("Failed to build stream: {}", source))]
#[snafu(display("Failed to build stream"))]
BuildStream {
source: DataFusionError,
location: Location,
},
#[snafu(display("Failed to project schema: {}", source))]
#[snafu(display("Failed to project schema"))]
ProjectArrowSchema {
source: ArrowError,
location: Location,
},
#[snafu(display("Failed to project schema: {}", source))]
#[snafu(display("Failed to project schema"))]
ProjectSchema {
source: datatypes::error::Error,
location: Location,
},
#[snafu(display("Failed to build stream adapter: {}", source))]
#[snafu(display("Failed to build stream adapter"))]
BuildStreamAdapter {
location: Location,
source: common_recordbatch::error::Error,
},
#[snafu(display("Failed to parse file format: {}", source))]
#[snafu(display("Failed to parse file format"))]
ParseFileFormat {
location: Location,
source: common_datasource::error::Error,
},
#[snafu(display("Failed to generate parquet scan plan: {}", source))]
#[snafu(display("Failed to generate parquet scan plan"))]
ParquetScanPlan {
source: DataFusionError,
location: Location,
@@ -169,7 +157,7 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to extract column from filter: {}", source))]
#[snafu(display("Failed to extract column from filter"))]
ExtractColumnFromFilter {
source: DataFusionError,
location: Location,

View File

@@ -24,61 +24,61 @@ use store_api::storage::RegionNumber;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to invalidate table cache, source: {}", source))]
#[snafu(display("Failed to invalidate table cache"))]
InvalidateTableCache {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to open raft engine backend, source: {}", source))]
#[snafu(display("Failed to open raft engine backend"))]
OpenRaftEngineBackend {
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to handle heartbeat response, source: {}", source))]
#[snafu(display("Failed to handle heartbeat response"))]
HandleHeartbeatResponse {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("{source}"))]
#[snafu(display(""))]
External {
#[snafu(backtrace)]
source: BoxedError,
},
#[snafu(display("Failed to query, source: {}", source))]
#[snafu(display("Failed to query"))]
RequestQuery {
#[snafu(backtrace)]
source: common_meta::error::Error,
},
#[snafu(display("Runtime resource error, source: {}", source))]
#[snafu(display("Runtime resource error"))]
RuntimeResource {
#[snafu(backtrace)]
source: common_runtime::error::Error,
},
#[snafu(display("Failed to start server, source: {}", source))]
#[snafu(display("Failed to start server"))]
StartServer {
#[snafu(backtrace)]
source: servers::error::Error,
},
#[snafu(display("Failed to shutdown server, source: {}", source))]
#[snafu(display("Failed to shutdown server"))]
ShutdownServer {
#[snafu(backtrace)]
source: servers::error::Error,
},
#[snafu(display("Failed to parse address {}, source: {}", addr, source))]
#[snafu(display("Failed to parse address {}", addr))]
ParseAddr {
addr: String,
source: std::net::AddrParseError,
},
#[snafu(display("Failed to parse SQL, source: {}", source))]
#[snafu(display("Failed to parse SQL"))]
ParseSql {
#[snafu(backtrace)]
source: sql::error::Error,
@@ -105,35 +105,31 @@ pub enum Error {
#[snafu(display("Invalid DeleteRequest, reason: {}", reason))]
InvalidDeleteRequest { reason: String, location: Location },
#[snafu(display("Invalid system table definition: {err_msg}, at {location}"))]
#[snafu(display("Invalid system table definition: {err_msg}"))]
InvalidSystemTableDef { err_msg: String, location: Location },
#[snafu(display("Table not found: {}", table_name))]
TableNotFound { table_name: String },
#[snafu(display("General catalog error: {}", source))]
#[snafu(display("General catalog error"))]
Catalog {
#[snafu(backtrace)]
source: catalog::error::Error,
},
#[snafu(display("Failed to start Meta client, source: {}", source))]
#[snafu(display("Failed to start Meta client"))]
StartMetaClient {
#[snafu(backtrace)]
source: meta_client::error::Error,
},
#[snafu(display("Failed to create heartbeat stream to Metasrv, source: {}", source))]
#[snafu(display("Failed to create heartbeat stream to Metasrv"))]
CreateMetaHeartbeatStream {
source: meta_client::error::Error,
location: Location,
},
#[snafu(display(
"Failed to find table route for table id {}, source: {}",
table_id,
source
))]
#[snafu(display("Failed to find table route for table id {}", table_id))]
FindTableRoute {
table_id: u32,
#[snafu(backtrace)]
@@ -143,7 +139,7 @@ pub enum Error {
#[snafu(display("Schema {} already exists", name))]
SchemaExists { name: String, location: Location },
#[snafu(display("Table occurs error, source: {}", source))]
#[snafu(display("Table occurs error"))]
Table {
#[snafu(backtrace)]
source: table::error::Error,
@@ -152,26 +148,26 @@ pub enum Error {
#[snafu(display("Cannot find column by name: {}", msg))]
ColumnNotFound { msg: String, location: Location },
#[snafu(display("Failed to plan statement, source: {}", source))]
#[snafu(display("Failed to plan statement"))]
PlanStatement {
#[snafu(backtrace)]
source: query::error::Error,
},
#[snafu(display("Failed to read table: {table_name}, source: {source}"))]
#[snafu(display("Failed to read table: {table_name}"))]
ReadTable {
table_name: String,
#[snafu(backtrace)]
source: query::error::Error,
},
#[snafu(display("Failed to execute logical plan, source: {}", source))]
#[snafu(display("Failed to execute logical plan"))]
ExecLogicalPlan {
#[snafu(backtrace)]
source: query::error::Error,
},
#[snafu(display("{source}"))]
#[snafu(display(""))]
InvokeRegionServer {
#[snafu(backtrace)]
source: servers::error::Error,
@@ -192,30 +188,27 @@ pub enum Error {
#[snafu(display("Not supported: {}", feat))]
NotSupported { feat: String },
#[snafu(display("SQL execution intercepted, source: {}", source))]
#[snafu(display("SQL execution intercepted"))]
SqlExecIntercepted {
#[snafu(backtrace)]
source: BoxedError,
},
// TODO(ruihang): merge all query execution error kinds
#[snafu(display("Failed to execute PromQL query {}, source: {}", query, source))]
#[snafu(display("Failed to execute PromQL query {}", query))]
ExecutePromql {
query: String,
#[snafu(backtrace)]
source: servers::error::Error,
},
#[snafu(display(
"Failed to create logical plan for prometheus query, source: {}",
source
))]
#[snafu(display("Failed to create logical plan for prometheus query"))]
PromStoreRemoteQueryPlan {
#[snafu(backtrace)]
source: servers::error::Error,
},
#[snafu(display("Failed to describe schema for given statement, source: {}", source))]
#[snafu(display("Failed to describe schema for given statement"))]
DescribeStatement {
#[snafu(backtrace)]
source: query::error::Error,
@@ -224,24 +217,20 @@ pub enum Error {
#[snafu(display("Illegal primary keys definition: {}", msg))]
IllegalPrimaryKeysDef { msg: String, location: Location },
#[snafu(display("Failed to start script manager, source: {}", source))]
#[snafu(display("Failed to start script manager"))]
StartScriptManager {
#[snafu(backtrace)]
source: script::error::Error,
},
#[snafu(display("Failed to copy table: {}, source: {}", table_name, source))]
#[snafu(display("Failed to copy table: {}", table_name))]
CopyTable {
table_name: String,
#[snafu(backtrace)]
source: table::error::Error,
},
#[snafu(display(
"Failed to insert value into table: {}, source: {}",
table_name,
source
))]
#[snafu(display("Failed to insert value into table: {}", table_name))]
Insert {
table_name: String,
#[snafu(backtrace)]
@@ -251,13 +240,13 @@ pub enum Error {
#[snafu(display("Unsupported format: {:?}", format))]
UnsupportedFormat { location: Location, format: Format },
#[snafu(display("Table metadata manager error: {}", source))]
#[snafu(display("Table metadata manager error"))]
TableMetadataManager {
source: common_meta::error::Error,
location: Location,
},
#[snafu(display("Failed to pass permission check, source: {}", source))]
#[snafu(display("Failed to pass permission check"))]
Permission {
source: auth::error::Error,
location: Location,
@@ -275,7 +264,7 @@ pub enum Error {
#[snafu(display("Invalid region request, reason: {}", reason))]
InvalidRegionRequest { reason: String },
#[snafu(display("{}", source))]
#[snafu(display("Table operation error"))]
TableOperation {
source: operator::error::Error,
location: Location,

View File

@@ -21,25 +21,25 @@ use snafu::{Location, Snafu};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to start log store gc task, source: {}", source))]
#[snafu(display("Failed to start log store gc task"))]
StartGcTask {
location: Location,
source: RuntimeError,
},
#[snafu(display("Failed to stop log store gc task, source: {}", source))]
#[snafu(display("Failed to stop log store gc task"))]
StopGcTask {
location: Location,
source: RuntimeError,
},
#[snafu(display("Failed to add entry to LogBatch, source: {}", source))]
#[snafu(display("Failed to add entry to LogBatch"))]
AddEntryLogBatch {
source: raft_engine::Error,
location: Location,
},
#[snafu(display("Failed to perform raft-engine operation, source: {}", source))]
#[snafu(display("Failed to perform raft-engine operation"))]
RaftEngine {
source: raft_engine::Error,
location: Location,
@@ -52,12 +52,11 @@ pub enum Error {
IllegalNamespace { ns: u64, location: Location },
#[snafu(display(
"Failed to fetch entries from namespace: {}, start: {}, end: {}, max size: {}, source: {}",
"Failed to fetch entries from namespace: {}, start: {}, end: {}, max size: {}",
ns,
start,
end,
max_size,
source,
ns
))]
FetchEntry {
ns: u64,

View File

@@ -33,7 +33,7 @@ pub enum Error {
#[snafu(display("No leader, should ask leader first"))]
NoLeader { location: Location },
#[snafu(display("Failed to create gRPC channel, source: {}", source))]
#[snafu(display("Failed to create gRPC channel"))]
CreateChannel {
location: Location,
source: common_grpc::error::Error,
@@ -48,19 +48,19 @@ pub enum Error {
#[snafu(display("Failed create heartbeat stream to server"))]
CreateHeartbeatStream { location: Location },
#[snafu(display("Invalid response header, source: {}", source))]
#[snafu(display("Invalid response header"))]
InvalidResponseHeader {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to convert Metasrv request, source: {}", source))]
#[snafu(display("Failed to convert Metasrv request"))]
ConvertMetaRequest {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to convert Metasrv response, source: {}", source))]
#[snafu(display("Failed to convert Metasrv response"))]
ConvertMetaResponse {
location: Location,
source: common_meta::error::Error,

View File

@@ -27,51 +27,51 @@ use crate::pubsub::Message;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to create default catalog and schema, source: {}", source))]
#[snafu(display("Failed to create default catalog and schema"))]
InitMetadata {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to allocate next sequence number: {}", source))]
#[snafu(display("Failed to allocate next sequence number"))]
NextSequence {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to submit ddl task: {}", source))]
#[snafu(display("Failed to submit ddl task"))]
SubmitDdlTask {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to invalidate table cache: {}", source))]
#[snafu(display("Failed to invalidate table cache"))]
InvalidateTableCache {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to operate region on peer:{}, source: {}", peer, source))]
#[snafu(display("Failed to operate region on peer:{}", peer))]
OperateRegion {
location: Location,
peer: Peer,
source: BoxedError,
},
#[snafu(display("Failed to list catalogs: {}", source))]
#[snafu(display("Failed to list catalogs"))]
ListCatalogs {
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to list {}'s schemas: {}", catalog, source))]
#[snafu(display("Failed to list {}'s schemas", catalog))]
ListSchemas {
location: Location,
catalog: String,
source: BoxedError,
},
#[snafu(display("Failed to join a future: {}", source))]
#[snafu(display("Failed to join a future"))]
Join {
location: Location,
source: JoinError,
@@ -102,7 +102,7 @@ pub enum Error {
available: usize,
},
#[snafu(display("Failed to request Datanode {}, source: {}", peer, source))]
#[snafu(display("Failed to request Datanode {}", peer))]
RequestDatanode {
location: Location,
peer: Peer,
@@ -112,7 +112,7 @@ pub enum Error {
#[snafu(display("Failed to send shutdown signal"))]
SendShutdownSignal { source: SendError<()> },
#[snafu(display("Failed to shutdown {} server, source: {}", server, source))]
#[snafu(display("Failed to shutdown {} server", server))]
ShutdownServer {
location: Location,
source: servers::error::Error,
@@ -122,40 +122,36 @@ pub enum Error {
#[snafu(display("Empty key is not allowed"))]
EmptyKey { location: Location },
#[snafu(display(
"Failed to execute via Etcd, source: {}, location: {}",
source,
location
))]
#[snafu(display("Failed to execute via Etcd"))]
EtcdFailed {
source: etcd_client::Error,
location: Location,
},
#[snafu(display("Failed to connect to Etcd, source: {}", source))]
#[snafu(display("Failed to connect to Etcd"))]
ConnectEtcd {
source: etcd_client::Error,
location: Location,
},
#[snafu(display("Failed to bind address {}, source: {}", addr, source))]
#[snafu(display("Failed to bind address {}", addr))]
TcpBind {
addr: String,
source: std::io::Error,
location: Location,
},
#[snafu(display("Failed to start gRPC server, source: {}", source))]
#[snafu(display("Failed to start gRPC server"))]
StartGrpc {
source: tonic::transport::Error,
location: Location,
},
#[snafu(display("Failed to start http server, source: {}", source))]
#[snafu(display("Failed to start http server"))]
StartHttp {
location: Location,
source: servers::error::Error,
},
#[snafu(display("Failed to parse address {}, source: {}", addr, source))]
#[snafu(display("Failed to parse address {}", addr))]
ParseAddr {
addr: String,
source: std::net::AddrParseError,
@@ -172,31 +168,31 @@ pub enum Error {
#[snafu(display("Invalid inactive region key: {}", key))]
InvalidInactiveRegionKey { key: String, location: Location },
#[snafu(display("Failed to parse datanode lease key from utf8: {}", source))]
#[snafu(display("Failed to parse datanode lease key from utf8"))]
LeaseKeyFromUtf8 {
source: std::string::FromUtf8Error,
location: Location,
},
#[snafu(display("Failed to parse datanode lease value from utf8: {}", source))]
#[snafu(display("Failed to parse datanode lease value from utf8"))]
LeaseValueFromUtf8 {
source: std::string::FromUtf8Error,
location: Location,
},
#[snafu(display("Failed to parse datanode stat key from utf8: {}", source))]
#[snafu(display("Failed to parse datanode stat key from utf8"))]
StatKeyFromUtf8 {
source: std::string::FromUtf8Error,
location: Location,
},
#[snafu(display("Failed to parse datanode stat value from utf8: {}", source))]
#[snafu(display("Failed to parse datanode stat value from utf8"))]
StatValueFromUtf8 {
source: std::string::FromUtf8Error,
location: Location,
},
#[snafu(display("Failed to parse invalid region key from utf8: {}", source))]
#[snafu(display("Failed to parse invalid region key from utf8"))]
InvalidRegionKeyFromUtf8 {
source: std::string::FromUtf8Error,
location: Location,
@@ -216,7 +212,7 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to parse number: {}, source: {}", err_msg, source))]
#[snafu(display("Failed to parse number: {}", err_msg))]
ParseNum {
err_msg: String,
source: std::num::ParseIntError,
@@ -229,25 +225,25 @@ pub enum Error {
#[snafu(display("Invalid result with a txn response: {}", err_msg))]
InvalidTxnResult { err_msg: String, location: Location },
#[snafu(display("Cannot parse catalog value, source: {}", source))]
#[snafu(display("Cannot parse catalog value"))]
InvalidCatalogValue {
location: Location,
source: common_catalog::error::Error,
},
#[snafu(display("Cannot parse full table name, source: {}", source))]
#[snafu(display("Cannot parse full table name"))]
InvalidFullTableName {
location: Location,
source: common_catalog::error::Error,
},
#[snafu(display("Failed to decode table route, source: {}", source))]
#[snafu(display("Failed to decode table route"))]
DecodeTableRoute {
source: prost::DecodeError,
location: Location,
},
#[snafu(display("Failed to find table route for {table_id}, at {location}"))]
#[snafu(display("Failed to find table route for {table_id}"))]
TableRouteNotFound {
table_id: TableId,
location: Location,
@@ -284,31 +280,25 @@ pub enum Error {
location: Location,
},
#[snafu(display("Unexpected, violated: {violated}, at {location}"))]
#[snafu(display("Unexpected, violated: {violated}"))]
Unexpected {
violated: String,
location: Location,
},
#[snafu(display("Failed to create gRPC channel, source: {}", source))]
#[snafu(display("Failed to create gRPC channel"))]
CreateChannel {
location: Location,
source: common_grpc::error::Error,
},
#[snafu(display(
"Failed to batch get KVs from leader's in_memory kv store, source: {}",
source
))]
#[snafu(display("Failed to batch get KVs from leader's in_memory kv store"))]
BatchGet {
source: tonic::Status,
location: Location,
},
#[snafu(display(
"Failed to batch range KVs from leader's in_memory kv store, source: {}",
source
))]
#[snafu(display("Failed to batch range KVs from leader's in_memory kv store"))]
Range {
source: tonic::Status,
location: Location,
@@ -323,7 +313,7 @@ pub enum Error {
location: Location,
},
#[snafu(display("Invalid http body, source: {}", source))]
#[snafu(display("Invalid http body"))]
InvalidHttpBody {
source: http::Error,
location: Location,
@@ -340,19 +330,19 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to lock based on etcd, source: {}", source))]
#[snafu(display("Failed to lock based on etcd"))]
Lock {
source: etcd_client::Error,
location: Location,
},
#[snafu(display("Failed to unlock based on etcd, source: {}", source))]
#[snafu(display("Failed to unlock based on etcd"))]
Unlock {
source: etcd_client::Error,
location: Location,
},
#[snafu(display("Failed to grant lease, source: {}", source))]
#[snafu(display("Failed to grant lease"))]
LeaseGrant {
source: etcd_client::Error,
location: Location,
@@ -361,7 +351,7 @@ pub enum Error {
#[snafu(display("Distributed lock is not configured"))]
LockNotConfig { location: Location },
#[snafu(display("Invalid utf-8 value, source: {:?}", source))]
#[snafu(display("Invalid utf-8 value"))]
InvalidUtf8Value {
source: std::string::FromUtf8Error,
location: Location,
@@ -370,19 +360,19 @@ pub enum Error {
#[snafu(display("Missing required parameter, param: {:?}", param))]
MissingRequiredParameter { param: String },
#[snafu(display("Failed to recover procedure, source: {source}"))]
#[snafu(display("Failed to recover procedure"))]
RecoverProcedure {
location: Location,
source: common_procedure::Error,
},
#[snafu(display("Failed to wait procedure done, source: {source}"))]
#[snafu(display("Failed to wait procedure done"))]
WaitProcedure {
location: Location,
source: common_procedure::Error,
},
#[snafu(display("Failed to submit procedure, source: {source}"))]
#[snafu(display("Failed to submit procedure"))]
SubmitProcedure {
location: Location,
source: common_procedure::Error,
@@ -425,11 +415,7 @@ pub enum Error {
#[snafu(display("Missing request header"))]
MissingRequestHeader { location: Location },
#[snafu(display(
"Failed to register procedure loader, type name: {}, source: {}",
type_name,
source
))]
#[snafu(display("Failed to register procedure loader, type name: {}", type_name))]
RegisterProcedureLoader {
type_name: String,
location: Location,
@@ -459,19 +445,19 @@ pub enum Error {
#[snafu(display("Failed to update table metadata, err_msg: {}", err_msg))]
UpdateTableMetadata { err_msg: String, location: Location },
#[snafu(display("Failed to convert table route, source: {}", source))]
#[snafu(display("Failed to convert table route"))]
TableRouteConversion {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to convert proto data, source: {}", source))]
#[snafu(display("Failed to convert proto data"))]
ConvertProtoData {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to convert Etcd txn object: {source}"))]
#[snafu(display("Failed to convert Etcd txn object: "))]
ConvertEtcdTxnObject {
source: common_meta::error::Error,
location: Location,
@@ -479,25 +465,25 @@ pub enum Error {
// this error is used for custom error mapping
// please do not delete it
#[snafu(display("Other error, source: {}", source))]
#[snafu(display("Other error"))]
Other {
source: BoxedError,
location: Location,
},
#[snafu(display("Table metadata manager error: {}", source))]
#[snafu(display("Table metadata manager error"))]
TableMetadataManager {
source: common_meta::error::Error,
location: Location,
},
#[snafu(display("Failed to update table route: {}", source))]
#[snafu(display("Failed to update table route"))]
UpdateTableRoute {
source: common_meta::error::Error,
location: Location,
},
#[snafu(display("Failed to get table info error: {}", source))]
#[snafu(display("Failed to get table info error"))]
GetFullTableInfo {
source: common_meta::error::Error,
location: Location,
@@ -506,16 +492,16 @@ pub enum Error {
#[snafu(display("Invalid heartbeat request: {}", err_msg))]
InvalidHeartbeatRequest { err_msg: String, location: Location },
#[snafu(display("Failed to publish message: {:?}", source))]
#[snafu(display("Failed to publish message"))]
PublishMessage {
source: SendError<Message>,
location: Location,
},
#[snafu(display("Too many partitions, location: {}", location))]
#[snafu(display("Too many partitions"))]
TooManyPartitions { location: Location },
#[snafu(display("Unsupported operation {}, location: {}", operation, location))]
#[snafu(display("Unsupported operation {}", operation))]
Unsupported {
operation: String,
location: Location,

View File

@@ -32,41 +32,27 @@ use crate::worker::WorkerId;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("OpenDAL operator failed. Location: {}, source: {}", location, source))]
#[snafu(display("OpenDAL operator failed"))]
OpenDal {
location: Location,
source: object_store::Error,
},
#[snafu(display(
"Fail to compress object by {}, path: {}, source: {}",
compress_type,
path,
source
))]
#[snafu(display("Fail to compress object by {}, path: {}", compress_type, path))]
CompressObject {
compress_type: CompressionType,
path: String,
source: std::io::Error,
},
#[snafu(display(
"Fail to decompress object by {}, path: {}, source: {}",
compress_type,
path,
source
))]
#[snafu(display("Fail to decompress object by {}, path: {}", compress_type, path))]
DecompressObject {
compress_type: CompressionType,
path: String,
source: std::io::Error,
},
#[snafu(display(
"Failed to ser/de json object. Location: {}, source: {}",
location,
source
))]
#[snafu(display("Failed to ser/de json object"))]
SerdeJson {
location: Location,
source: serde_json::Error,
@@ -79,101 +65,78 @@ pub enum Error {
location: Location,
},
#[snafu(display("Invalid UTF-8 content. Location: {}, source: {}", location, source))]
#[snafu(display("Invalid UTF-8 content"))]
Utf8 {
location: Location,
source: std::str::Utf8Error,
},
#[snafu(display("Cannot find RegionMetadata. Location: {}", location))]
#[snafu(display("Cannot find RegionMetadata"))]
RegionMetadataNotFound { location: Location },
#[snafu(display("Failed to join handle, location: {}, source: {}", location, source))]
#[snafu(display("Failed to join handle"))]
Join {
source: common_runtime::JoinError,
location: Location,
},
#[snafu(display("Worker {} is stopped, location: {}", id, location))]
#[snafu(display("Worker {} is stopped", id))]
WorkerStopped { id: WorkerId, location: Location },
#[snafu(display("Failed to recv result, location: {}, source: {}", location, source))]
#[snafu(display("Failed to recv result"))]
Recv {
source: tokio::sync::oneshot::error::RecvError,
location: Location,
},
#[snafu(display("Invalid metadata, {}, location: {}", reason, location))]
#[snafu(display("Invalid metadata, {}", reason))]
InvalidMeta { reason: String, location: Location },
#[snafu(display("Invalid region metadata, source: {}, location: {}", source, location))]
#[snafu(display("Invalid region metadata"))]
InvalidMetadata {
source: store_api::metadata::MetadataError,
location: Location,
},
#[snafu(display("Region {} already exists, location: {}", region_id, location))]
#[snafu(display("Region {} already exists", region_id))]
RegionExists {
region_id: RegionId,
location: Location,
},
#[snafu(display(
"Failed to create RecordBatch from vectors, location: {}, source: {}",
location,
source
))]
#[snafu(display("Failed to create RecordBatch from vectors"))]
NewRecordBatch {
location: Location,
source: ArrowError,
},
#[snafu(display(
"Failed to write to buffer, location: {}, source: {}",
location,
source
))]
#[snafu(display("Failed to write to buffer"))]
WriteBuffer {
location: Location,
source: common_datasource::error::Error,
},
#[snafu(display(
"Failed to write parquet file, path: {}, location: {}, source: {}",
path,
location,
source
))]
#[snafu(display("Failed to write parquet file, path: {}", path))]
WriteParquet {
path: String,
location: Location,
source: parquet::errors::ParquetError,
},
#[snafu(display(
"Failed to read parquet file, path: {}, location: {}, source: {}",
path,
location,
source
))]
#[snafu(display("Failed to read parquet file, path: {}", path))]
ReadParquet {
path: String,
source: parquet::errors::ParquetError,
location: Location,
},
#[snafu(display("Region {} not found, location: {}", region_id, location))]
#[snafu(display("Region {} not found", region_id))]
RegionNotFound {
region_id: RegionId,
location: Location,
},
#[snafu(display(
"Region {} is corrupted, reason: {}, location: {}",
region_id,
reason,
location
))]
#[snafu(display("Region {} is corrupted, reason: {}", region_id, reason))]
RegionCorrupted {
region_id: RegionId,
reason: String,
@@ -206,54 +169,34 @@ pub enum Error {
source: datatypes::Error,
},
#[snafu(display(
"Failed to encode WAL entry, region_id: {}, location: {}, source: {}",
region_id,
location,
source
))]
#[snafu(display("Failed to encode WAL entry, region_id: {}", region_id))]
EncodeWal {
region_id: RegionId,
location: Location,
source: EncodeError,
},
#[snafu(display("Failed to write WAL, location: {}, source: {}", location, source))]
#[snafu(display("Failed to write WAL"))]
WriteWal {
location: Location,
source: BoxedError,
},
#[snafu(display(
"Failed to read WAL, region_id: {}, location: {}, source: {}",
region_id,
location,
source
))]
#[snafu(display("Failed to read WAL, region_id: {}", region_id))]
ReadWal {
region_id: RegionId,
location: Location,
source: BoxedError,
},
#[snafu(display(
"Failed to decode WAL entry, region_id: {}, location: {}, source: {}",
region_id,
location,
source
))]
#[snafu(display("Failed to decode WAL entry, region_id: {}", region_id))]
DecodeWal {
region_id: RegionId,
location: Location,
source: DecodeError,
},
#[snafu(display(
"Failed to delete WAL, region_id: {}, location: {}, source: {}",
region_id,
location,
source
))]
#[snafu(display("Failed to delete WAL, region_id: {}", region_id))]
DeleteWal {
region_id: RegionId,
location: Location,
@@ -261,169 +204,131 @@ pub enum Error {
},
// Shared error for each writer in the write group.
#[snafu(display("Failed to write region, source: {}", source))]
#[snafu(display("Failed to write region"))]
WriteGroup { source: Arc<Error> },
#[snafu(display("Row value mismatches field data type"))]
FieldTypeMismatch { source: datatypes::error::Error },
#[snafu(display("Failed to serialize field, location: {}", location))]
#[snafu(display("Failed to serialize field"))]
SerializeField {
source: memcomparable::Error,
location: Location,
},
#[snafu(display(
"Data type: {} does not support serialization/deserialization, location: {}",
"Data type: {} does not support serialization/deserialization",
data_type,
location
))]
NotSupportedField {
data_type: ConcreteDataType,
location: Location,
},
#[snafu(display(
"Failed to deserialize field, source: {}, location: {}",
source,
location
))]
#[snafu(display("Failed to deserialize field"))]
DeserializeField {
source: memcomparable::Error,
location: Location,
},
#[snafu(display(
"Invalid parquet SST file {}, location: {}, reason: {}",
file,
location,
reason
))]
#[snafu(display("Invalid parquet SST file {}, reason: {}", file, reason))]
InvalidParquet {
file: String,
reason: String,
location: Location,
},
#[snafu(display("Invalid batch, {}, location: {}", reason, location))]
#[snafu(display("Invalid batch, {}", reason))]
InvalidBatch { reason: String, location: Location },
#[snafu(display("Invalid arrow record batch, {}, location: {}", reason, location))]
#[snafu(display("Invalid arrow record batch, {}", reason))]
InvalidRecordBatch { reason: String, location: Location },
#[snafu(display(
"Failed to convert array to vector, location: {}, source: {}",
location,
source
))]
#[snafu(display("Failed to convert array to vector"))]
ConvertVector {
location: Location,
source: datatypes::error::Error,
},
#[snafu(display(
"Failed to compute arrow arrays, location: {}, source: {}",
location,
source
))]
#[snafu(display("Failed to compute arrow arrays"))]
ComputeArrow {
location: Location,
source: datatypes::arrow::error::ArrowError,
},
#[snafu(display("Failed to compute vector, location: {}, source: {}", location, source))]
#[snafu(display("Failed to compute vector"))]
ComputeVector {
location: Location,
source: datatypes::error::Error,
},
#[snafu(display(
"Primary key length mismatch, expect: {}, actual: {}, location: {}",
expect,
actual,
location
))]
#[snafu(display("Primary key length mismatch, expect: {}, actual: {}", expect, actual))]
PrimaryKeyLengthMismatch {
expect: usize,
actual: usize,
location: Location,
},
#[snafu(display("Invalid sender, location: {}", location,))]
#[snafu(display("Invalid sender",))]
InvalidSender { location: Location },
#[snafu(display("Invalid scheduler state, location: {}", location))]
#[snafu(display("Invalid scheduler state"))]
InvalidSchedulerState { location: Location },
#[snafu(display("Failed to stop scheduler, location: {}, source: {}", location, source))]
#[snafu(display("Failed to stop scheduler"))]
StopScheduler {
source: JoinError,
location: Location,
},
#[snafu(display(
"Failed to build scan predicate, location: {}, source: {}",
location,
source
))]
#[snafu(display("Failed to build scan predicate"))]
BuildPredicate {
source: table::error::Error,
location: Location,
},
#[snafu(display("Failed to delete SST file, file id: {}, source: {}", file_id, source))]
#[snafu(display("Failed to delete SST file, file id: {}", file_id))]
DeleteSst {
file_id: FileId,
source: object_store::Error,
location: Location,
},
#[snafu(display(
"Failed to flush region {}, location: {}, source: {}",
region_id,
location,
source
))]
#[snafu(display("Failed to flush region {}", region_id))]
FlushRegion {
region_id: RegionId,
source: Arc<Error>,
location: Location,
},
#[snafu(display("Region {} is dropped, location: {}", region_id, location))]
#[snafu(display("Region {} is dropped", region_id))]
RegionDropped {
region_id: RegionId,
location: Location,
},
#[snafu(display("Region {} is closed, location: {}", region_id, location))]
#[snafu(display("Region {} is closed", region_id))]
RegionClosed {
region_id: RegionId,
location: Location,
},
#[snafu(display("Region {} is truncated, location: {}", region_id, location))]
#[snafu(display("Region {} is truncated", region_id))]
RegionTruncated {
region_id: RegionId,
location: Location,
},
#[snafu(display(
"Engine write buffer is full, rejecting write requests of region {}, location: {}",
"Engine write buffer is full, rejecting write requests of region {}",
region_id,
location
))]
RejectWrite {
region_id: RegionId,
location: Location,
},
#[snafu(display(
"Failed to compact region {}, location: {}, source:{}",
region_id,
location,
source
))]
#[snafu(display("Failed to compact region {}", region_id))]
CompactRegion {
region_id: RegionId,
source: Arc<Error>,
@@ -431,10 +336,9 @@ pub enum Error {
},
#[snafu(display(
"Failed to compat readers for region {}, reason: {}, location: {}",
"Failed to compat readers for region {}, reason: {}",
region_id,
reason,
location
))]
CompatReader {
region_id: RegionId,
@@ -442,13 +346,13 @@ pub enum Error {
location: Location,
},
#[snafu(display("{}, location: {}", source, location))]
#[snafu(display("Invalue region req"))]
InvalidRegionRequest {
source: store_api::metadata::MetadataError,
location: Location,
},
#[snafu(display("Region {} is read only, location: {}", region_id, location))]
#[snafu(display("Region {} is read only", region_id))]
RegionReadonly {
region_id: RegionId,
location: Location,

View File

@@ -26,13 +26,13 @@ use snafu::{Location, Snafu};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to invalidate table cache, source: {}", source))]
#[snafu(display("Failed to invalidate table cache"))]
InvalidateTableCache {
location: Location,
source: common_meta::error::Error,
},
#[snafu(display("Failed to execute ddl, source: {}", source))]
#[snafu(display("Failed to execute ddl"))]
ExecuteDdl {
location: Location,
source: common_meta::error::Error,
@@ -44,25 +44,25 @@ pub enum Error {
location: Location,
},
#[snafu(display("{source}"))]
#[snafu(display("external error"))]
External {
#[snafu(backtrace)]
source: BoxedError,
},
#[snafu(display("Failed to insert data, source: {}", source))]
#[snafu(display("Failed to insert data"))]
RequestInserts {
#[snafu(backtrace)]
source: common_meta::error::Error,
},
#[snafu(display("Failed to delete data, source: {}", source))]
#[snafu(display("Failed to delete data"))]
RequestDeletes {
#[snafu(backtrace)]
source: common_meta::error::Error,
},
#[snafu(display("Failed to parse SQL, source: {}", source))]
#[snafu(display("Failed to parse SQL"))]
ParseSql {
#[snafu(backtrace)]
source: sql::error::Error,
@@ -75,28 +75,20 @@ pub enum Error {
source: sql::error::Error,
},
#[snafu(display("Column datatype error, source: {}", source))]
#[snafu(display("Column datatype error"))]
ColumnDataType {
#[snafu(backtrace)]
source: api::error::Error,
},
#[snafu(display(
"Invalid column proto definition, column: {}, source: {}",
column,
source
))]
#[snafu(display("Invalid column proto definition, column: {}", column))]
InvalidColumnDef {
column: String,
#[snafu(backtrace)]
source: api::error::Error,
},
#[snafu(display(
"Failed to convert column default constraint, column: {}, source: {}",
column_name,
source
))]
#[snafu(display("Failed to convert column default constraint, column: {}", column_name))]
ConvertColumnDefaultConstraint {
column_name: String,
#[snafu(backtrace)]
@@ -115,54 +107,50 @@ pub enum Error {
#[snafu(display("Table not found: {}", table_name))]
TableNotFound { table_name: String },
#[snafu(display("Failed to join task, source: {}", source))]
#[snafu(display("Failed to join task"))]
JoinTask {
source: common_runtime::JoinError,
location: Location,
},
#[snafu(display("General catalog error: {}", source))]
#[snafu(display("General catalog error"))]
Catalog {
#[snafu(backtrace)]
source: catalog::error::Error,
},
#[snafu(display(
"Failed to find table partition rule for table {}, source: {}",
table_name,
source
))]
#[snafu(display("Failed to find table partition rule for table {}", table_name))]
FindTablePartitionRule {
table_name: String,
#[snafu(backtrace)]
source: partition::error::Error,
},
#[snafu(display("Failed to split insert request, source: {}", source))]
#[snafu(display("Failed to split insert request"))]
SplitInsert {
source: partition::error::Error,
location: Location,
},
#[snafu(display("Failed to split delete request, source: {}", source))]
#[snafu(display("Failed to split delete request"))]
SplitDelete {
source: partition::error::Error,
location: Location,
},
#[snafu(display("Failed to find leader for region, source: {}", source))]
#[snafu(display("Failed to find leader for region"))]
FindRegionLeader {
source: partition::error::Error,
location: Location,
},
#[snafu(display("Failed to create table info, source: {}", source))]
#[snafu(display("Failed to create table info"))]
CreateTableInfo {
#[snafu(backtrace)]
source: datatypes::error::Error,
},
#[snafu(display("Failed to build CreateExpr on insertion: {}", source))]
#[snafu(display("Failed to build CreateExpr on insertion"))]
BuildCreateExprOnInsertion {
#[snafu(backtrace)]
source: common_grpc_expr::error::Error,
@@ -177,7 +165,7 @@ pub enum Error {
#[snafu(display("Schema {} already exists", name))]
SchemaExists { name: String, location: Location },
#[snafu(display("Table occurs error, source: {}", source))]
#[snafu(display("Table occurs error"))]
Table {
#[snafu(backtrace)]
source: table::error::Error,
@@ -186,47 +174,43 @@ pub enum Error {
#[snafu(display("Cannot find column by name: {}", msg))]
ColumnNotFound { msg: String, location: Location },
#[snafu(display("Failed to execute statement, source: {}", source))]
#[snafu(display("Failed to execute statement"))]
ExecuteStatement {
#[snafu(backtrace)]
source: query::error::Error,
},
#[snafu(display("Failed to plan statement, source: {}", source))]
#[snafu(display("Failed to plan statement"))]
PlanStatement {
#[snafu(backtrace)]
source: query::error::Error,
},
#[snafu(display("Failed to parse query, source: {}", source))]
#[snafu(display("Failed to parse query"))]
ParseQuery {
#[snafu(backtrace)]
source: query::error::Error,
},
#[snafu(display("Failed to execute logical plan, source: {}", source))]
#[snafu(display("Failed to execute logical plan"))]
ExecLogicalPlan {
#[snafu(backtrace)]
source: query::error::Error,
},
#[snafu(display("Failed to build DataFusion logical plan, source: {}", source))]
#[snafu(display("Failed to build DataFusion logical plan"))]
BuildDfLogicalPlan {
source: datafusion_common::DataFusionError,
location: Location,
},
#[snafu(display("Failed to convert AlterExpr to AlterRequest, source: {}", source))]
#[snafu(display("Failed to convert AlterExpr to AlterRequest"))]
AlterExprToRequest {
#[snafu(backtrace)]
source: common_grpc_expr::error::Error,
},
#[snafu(display(
"Failed to build table meta for table: {}, source: {}",
table_name,
source
))]
#[snafu(display("Failed to build table meta for table: {}", table_name))]
BuildTableMeta {
table_name: String,
source: table::metadata::TableMetaBuilderError,
@@ -236,28 +220,25 @@ pub enum Error {
#[snafu(display("Not supported: {}", feat))]
NotSupported { feat: String },
#[snafu(display("Failed to find new columns on insertion: {}", source))]
#[snafu(display("Failed to find new columns on insertion"))]
FindNewColumnsOnInsertion {
#[snafu(backtrace)]
source: common_grpc_expr::error::Error,
},
#[snafu(display("Failed to convert into vectors, source: {}", source))]
#[snafu(display("Failed to convert into vectors"))]
IntoVectors {
#[snafu(backtrace)]
source: datatypes::error::Error,
},
#[snafu(display(
"Failed to deserialize partition in meta to partition def, source: {}",
source
))]
#[snafu(display("Failed to deserialize partition in meta to partition def"))]
DeserializePartition {
#[snafu(backtrace)]
source: partition::error::Error,
},
#[snafu(display("Failed to describe schema for given statement, source: {}", source))]
#[snafu(display("Failed to describe schema for given statement"))]
DescribeStatement {
#[snafu(backtrace)]
source: query::error::Error,
@@ -266,43 +247,39 @@ pub enum Error {
#[snafu(display("Illegal primary keys definition: {}", msg))]
IllegalPrimaryKeysDef { msg: String, location: Location },
#[snafu(display("Unrecognized table option: {}", source))]
#[snafu(display("Unrecognized table option"))]
UnrecognizedTableOption {
#[snafu(backtrace)]
source: table::error::Error,
},
#[snafu(display("Missing time index column: {}", source))]
#[snafu(display("Missing time index column"))]
MissingTimeIndexColumn {
location: Location,
source: table::error::Error,
},
#[snafu(display("Failed to build regex, source: {}", source))]
#[snafu(display("Failed to build regex"))]
BuildRegex {
location: Location,
source: regex::Error,
},
#[snafu(display("Failed to copy table: {}, source: {}", table_name, source))]
#[snafu(display("Failed to copy table: {}", table_name))]
CopyTable {
table_name: String,
#[snafu(backtrace)]
source: table::error::Error,
},
#[snafu(display(
"Failed to insert value into table: {}, source: {}",
table_name,
source
))]
#[snafu(display("Failed to insert value into table: {}", table_name))]
Insert {
table_name: String,
#[snafu(backtrace)]
source: table::error::Error,
},
#[snafu(display("Failed to parse data source url, source: {}", source))]
#[snafu(display("Failed to parse data source url"))]
ParseUrl {
#[snafu(backtrace)]
source: common_datasource::error::Error,
@@ -311,82 +288,82 @@ pub enum Error {
#[snafu(display("Unsupported format: {:?}", format))]
UnsupportedFormat { location: Location, format: Format },
#[snafu(display("Failed to parse file format, source: {}", source))]
#[snafu(display("Failed to parse file format"))]
ParseFileFormat {
#[snafu(backtrace)]
source: common_datasource::error::Error,
},
#[snafu(display("Failed to build data source backend, source: {}", source))]
#[snafu(display("Failed to build data source backend"))]
BuildBackend {
#[snafu(backtrace)]
source: common_datasource::error::Error,
},
#[snafu(display("Failed to list objects, source: {}", source))]
#[snafu(display("Failed to list objects"))]
ListObjects {
#[snafu(backtrace)]
source: common_datasource::error::Error,
},
#[snafu(display("Failed to infer schema from path: {}, source: {}", path, source))]
#[snafu(display("Failed to infer schema from path: {}", path))]
InferSchema {
path: String,
#[snafu(backtrace)]
source: common_datasource::error::Error,
},
#[snafu(display("Failed to build csv config: {}", source))]
#[snafu(display("Failed to build csv config"))]
BuildCsvConfig {
source: common_datasource::file_format::csv::CsvConfigBuilderError,
location: Location,
},
#[snafu(display("Failed to write stream to path: {}, source: {}", path, source))]
#[snafu(display("Failed to write stream to path: {}", path))]
WriteStreamToFile {
path: String,
#[snafu(backtrace)]
source: common_datasource::error::Error,
},
#[snafu(display("Failed to read object in path: {}, source: {}", path, source))]
#[snafu(display("Failed to read object in path: {}", path))]
ReadObject {
path: String,
location: Location,
source: object_store::Error,
},
#[snafu(display("Failed to read record batch, source: {}", source))]
#[snafu(display("Failed to read record batch"))]
ReadDfRecordBatch {
source: datafusion::error::DataFusionError,
location: Location,
},
#[snafu(display("Failed to read parquet file, source: {}", source))]
#[snafu(display("Failed to read parquet file"))]
ReadParquet {
source: parquet::errors::ParquetError,
location: Location,
},
#[snafu(display("Failed to read orc schema, source: {}", source))]
#[snafu(display("Failed to read orc schema"))]
ReadOrc {
source: common_datasource::error::Error,
location: Location,
},
#[snafu(display("Failed to build parquet record batch stream, source: {}", source))]
#[snafu(display("Failed to build parquet record batch stream"))]
BuildParquetRecordBatchStream {
location: Location,
source: parquet::errors::ParquetError,
},
#[snafu(display("Failed to build file stream, source: {}", source))]
#[snafu(display("Failed to build file stream"))]
BuildFileStream {
location: Location,
source: datafusion::error::DataFusionError,
},
#[snafu(display("Failed to write parquet file, source: {}", source))]
#[snafu(display("Failed to write parquet file"))]
WriteParquet {
#[snafu(backtrace)]
source: storage::error::Error,
@@ -405,19 +382,19 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to project schema: {}", source))]
#[snafu(display("Failed to project schema"))]
ProjectSchema {
source: ArrowError,
location: Location,
},
#[snafu(display("Failed to encode object into json, source: {}", source))]
#[snafu(display("Failed to encode object into json"))]
EncodeJson {
source: serde_json::error::Error,
location: Location,
},
#[snafu(display("Failed to prepare immutable table: {}", source))]
#[snafu(display("Failed to prepare immutable table"))]
PrepareImmutableTable {
#[snafu(backtrace)]
source: query::error::Error,
@@ -430,35 +407,31 @@ pub enum Error {
location: Location,
},
#[snafu(display("Table metadata manager error: {}", source))]
#[snafu(display("Table metadata manager error"))]
TableMetadataManager {
source: common_meta::error::Error,
location: Location,
},
#[snafu(display("Failed to read record batch, source: {}", source))]
#[snafu(display("Failed to read record batch"))]
ReadRecordBatch {
source: common_recordbatch::error::Error,
location: Location,
},
#[snafu(display("Failed to build column vectors, source: {}", source))]
#[snafu(display("Failed to build column vectors"))]
BuildColumnVectors {
source: common_recordbatch::error::Error,
location: Location,
},
#[snafu(display("Missing insert body, source: {source}"))]
#[snafu(display("Missing insert body"))]
MissingInsertBody {
source: sql::error::Error,
location: Location,
},
#[snafu(display(
"Failed to build default value, column: {}, source: {}",
column,
source
))]
#[snafu(display("Failed to build default value, column: {}", column))]
ColumnDefaultValue {
column: String,
location: Location,
@@ -482,22 +455,19 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to prepare file table: {}", source))]
#[snafu(display("Failed to prepare file table"))]
PrepareFileTable {
#[snafu(backtrace)]
source: query::error::Error,
},
#[snafu(display("Failed to infer file table schema: {}", source))]
#[snafu(display("Failed to infer file table schema"))]
InferFileTableSchema {
#[snafu(backtrace)]
source: query::error::Error,
},
#[snafu(display(
"The schema of the file table is incompatible with the table schema: {}",
source
))]
#[snafu(display("The schema of the file table is incompatible with the table schema"))]
SchemaIncompatible {
#[snafu(backtrace)]
source: query::error::Error,

View File

@@ -25,7 +25,7 @@ use table::metadata::TableId;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Table route manager error: {}", source))]
#[snafu(display("Table route manager error"))]
TableRouteManager {
source: common_meta::error::Error,
location: Location,
@@ -34,7 +34,7 @@ pub enum Error {
#[snafu(display("Failed to get meta info from cache, error: {}", err_msg))]
GetCache { err_msg: String, location: Location },
#[snafu(display("Failed to request Meta, source: {}", source))]
#[snafu(display("Failed to request Meta"))]
RequestMeta {
location: Location,
source: meta_client::error::Error,
@@ -64,13 +64,13 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to serialize value to json, source: {}", source))]
#[snafu(display("Failed to serialize value to json"))]
SerializeJson {
source: serde_json::Error,
location: Location,
},
#[snafu(display("Failed to deserialize value from json, source: {}", source))]
#[snafu(display("Failed to deserialize value from json"))]
DeserializeJson {
source: serde_json::Error,
location: Location,
@@ -108,11 +108,7 @@ pub enum Error {
location: Location,
},
#[snafu(display(
"Failed to convert DataFusion's ScalarValue: {:?}, source: {}",
value,
source
))]
#[snafu(display("Failed to convert DataFusion's ScalarValue: {:?}", value))]
ConvertScalarValue {
value: ScalarValue,
location: Location,

View File

@@ -23,60 +23,46 @@ use snafu::{Location, Snafu};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Unsupported expr type: {}, location: {}", name, location))]
#[snafu(display("Unsupported expr type: {}", name))]
UnsupportedExpr { name: String, location: Location },
#[snafu(display("Unexpected token: {:?}, location: {}", token, location))]
#[snafu(display("Unexpected token: {:?}", token))]
UnexpectedToken {
token: TokenType,
location: Location,
},
#[snafu(display(
"Internal error during building DataFusion plan, error: {}, location: {}",
source,
location
))]
#[snafu(display("Internal error during building DataFusion plan"))]
DataFusionPlanning {
source: datafusion::error::DataFusionError,
location: Location,
},
#[snafu(display("Unexpected plan or expression: {}, location: {}", desc, location))]
#[snafu(display("Unexpected plan or expression: {}", desc))]
UnexpectedPlanExpr { desc: String, location: Location },
#[snafu(display("Unknown table type, downcast failed, location: {}", location))]
#[snafu(display("Unknown table type, downcast failed"))]
UnknownTable { location: Location },
#[snafu(display(
"Cannot find time index column in table {}, location: {}",
table,
location
))]
#[snafu(display("Cannot find time index column in table {}", table))]
TimeIndexNotFound { table: String, location: Location },
#[snafu(display("Cannot find value columns in table {}, location: {}", table, location))]
#[snafu(display("Cannot find value columns in table {}", table))]
ValueNotFound { table: String, location: Location },
#[snafu(display(
"Cannot accept multiple vector as function input, PromQL expr: {:?}, location: {}",
"Cannot accept multiple vector as function input, PromQL expr: {:?}",
expr,
location
))]
MultipleVector { expr: PromExpr, location: Location },
#[snafu(display(
"Expect a PromQL expr but not found, input expr: {:?}, location: {}",
expr,
location
))]
#[snafu(display("Expect a PromQL expr but not found, input expr: {:?}", expr))]
ExpectExpr { expr: PromExpr, location: Location },
#[snafu(display(
"Illegal range: offset {}, length {}, array len {}, location: {}",
"Illegal range: offset {}, length {}, array len {}",
offset,
length,
len,
location
))]
IllegalRange {
offset: u32,
@@ -85,39 +71,39 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to deserialize: {}", source))]
#[snafu(display("Failed to deserialize"))]
Deserialize {
source: prost::DecodeError,
location: Location,
},
#[snafu(display("Empty range is not expected, location: {}", location))]
#[snafu(display("Empty range is not expected"))]
EmptyRange { location: Location },
#[snafu(display(
"Table (metric) name not found, this indicates a procedure error in PromQL planner, location: {}", location
"Table (metric) name not found, this indicates a procedure error in PromQL planner"
))]
TableNameNotFound { location: Location },
#[snafu(display("General catalog error: {source}, location: {}", location))]
#[snafu(display("General catalog error: "))]
Catalog {
location: Location,
source: catalog::error::Error,
},
#[snafu(display("Expect a range selector, but not found, location: {}", location))]
#[snafu(display("Expect a range selector, but not found"))]
ExpectRangeSelector { location: Location },
#[snafu(display("Zero range in range selector, location: {}", location))]
#[snafu(display("Zero range in range selector"))]
ZeroRangeSelector { location: Location },
#[snafu(display("Cannot find column {col}, location: {}", location))]
#[snafu(display("Cannot find column {col}"))]
ColumnNotFound { col: String, location: Location },
#[snafu(display("Found multiple metric matchers in selector, location: {}", location))]
#[snafu(display("Found multiple metric matchers in selector"))]
MultipleMetricMatchers { location: Location },
#[snafu(display("Expect a metric matcher, but not found, location: {}", location))]
#[snafu(display("Expect a metric matcher, but not found"))]
NoMetricMatcher { location: Location },
}

View File

@@ -23,7 +23,7 @@ use snafu::{Location, Snafu};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum InnerError {
#[snafu(display("{}: {}", msg, source))]
#[snafu(display("msg: {}", msg))]
Datafusion {
msg: &'static str,
source: DataFusionError,
@@ -33,22 +33,19 @@ pub enum InnerError {
#[snafu(display("PhysicalPlan downcast failed"))]
PhysicalPlanDowncast { location: Location },
#[snafu(display("Fail to convert arrow schema, source: {}", source))]
#[snafu(display("Fail to convert arrow schema"))]
ConvertSchema {
location: Location,
source: datatypes::error::Error,
},
#[snafu(display(
"Failed to convert DataFusion's recordbatch stream, source: {}",
source
))]
#[snafu(display("Failed to convert DataFusion's recordbatch stream"))]
ConvertDfRecordBatchStream {
location: Location,
source: common_recordbatch::error::Error,
},
#[snafu(display("Failed to execute physical plan, source: {}", source))]
#[snafu(display("Failed to execute physical plan"))]
ExecutePhysicalPlan {
location: Location,
source: common_query::error::Error,

View File

@@ -35,7 +35,7 @@ pub enum Error {
location: Location,
},
#[snafu(display("General catalog error: {}", source))]
#[snafu(display("General catalog error"))]
Catalog {
source: catalog::error::Error,
location: Location,
@@ -50,37 +50,37 @@ pub enum Error {
#[snafu(display("Table not found: {}", table))]
TableNotFound { table: String, location: Location },
#[snafu(display("Failed to do vector computation, source: {}", source))]
#[snafu(display("Failed to do vector computation"))]
VectorComputation {
source: datatypes::error::Error,
location: Location,
},
#[snafu(display("Failed to create RecordBatch, source: {}", source))]
#[snafu(display("Failed to create RecordBatch"))]
CreateRecordBatch {
source: common_recordbatch::error::Error,
location: Location,
},
#[snafu(display("Failed to create Schema, source: {}", source))]
#[snafu(display("Failed to create Schema"))]
CreateSchema {
source: datatypes::error::Error,
location: Location,
},
#[snafu(display("Failure during query execution, source: {}", source))]
#[snafu(display("Failure during query execution"))]
QueryExecution {
source: BoxedError,
location: Location,
},
#[snafu(display("Failure during query planning, source: {}", source))]
#[snafu(display("Failure during query planning"))]
QueryPlan {
source: BoxedError,
location: Location,
},
#[snafu(display("Failure during query parsing, query: {}, source: {}", query, source))]
#[snafu(display("Failure during query parsing, query: {}", query))]
QueryParse {
query: String,
source: BoxedError,
@@ -97,45 +97,45 @@ pub enum Error {
#[snafu(display("The SQL string has multiple statements, query: {}", query))]
MultipleStatements { query: String, location: Location },
#[snafu(display("Failed to convert Datafusion schema: {}", source))]
#[snafu(display("Failed to convert Datafusion schema"))]
ConvertDatafusionSchema {
source: datatypes::error::Error,
location: Location,
},
#[snafu(display("Failed to parse timestamp `{}`: {}", raw, source))]
#[snafu(display("Failed to parse timestamp `{}`", raw))]
ParseTimestamp {
raw: String,
source: chrono::ParseError,
location: Location,
},
#[snafu(display("Failed to parse float number `{}`: {}", raw, source))]
#[snafu(display("Failed to parse float number `{}`", raw))]
ParseFloat {
raw: String,
source: std::num::ParseFloatError,
location: Location,
},
#[snafu(display("DataFusion error: {}", source))]
#[snafu(display("DataFusion error"))]
DataFusion {
source: DataFusionError,
location: Location,
},
#[snafu(display("Failed to encode Substrait logical plan, source: {}", source))]
#[snafu(display("Failed to encode Substrait logical plan"))]
EncodeSubstraitLogicalPlan {
source: substrait::error::Error,
location: Location,
},
#[snafu(display("General SQL error: {}", source))]
#[snafu(display("General SQL error"))]
Sql {
location: Location,
source: sql::error::Error,
},
#[snafu(display("Cannot plan SQL: {}, source: {}", sql, source))]
#[snafu(display("Cannot plan SQL: {}", sql))]
PlanSql {
sql: String,
source: DataFusionError,
@@ -162,20 +162,20 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to route partition of table {}, source: {}", table, source))]
#[snafu(display("Failed to route partition of table {}", table))]
RoutePartition {
table: TableName,
source: partition::error::Error,
location: Location,
},
#[snafu(display("Failed to parse SQL, source: {}", source))]
#[snafu(display("Failed to parse SQL"))]
ParseSql {
source: sql::error::Error,
location: Location,
},
#[snafu(display("Failed to request remote peer, source: {}", source))]
#[snafu(display("Failed to request remote peer"))]
RemoteRequest {
source: client::Error,
location: Location,
@@ -191,49 +191,45 @@ pub enum Error {
#[snafu(display("Missing required field: {}", name))]
MissingRequiredField { name: String, location: Location },
#[snafu(display("Failed to regex, source: {}", source))]
#[snafu(display("Failed to regex"))]
BuildRegex {
location: Location,
source: regex::Error,
},
#[snafu(display("Failed to build data source backend, source: {}", source))]
#[snafu(display("Failed to build data source backend"))]
BuildBackend {
source: common_datasource::error::Error,
location: Location,
},
#[snafu(display("Failed to list objects, source: {}", source))]
#[snafu(display("Failed to list objects"))]
ListObjects {
source: common_datasource::error::Error,
location: Location,
},
#[snafu(display("Failed to parse file format: {}", source))]
#[snafu(display("Failed to parse file format"))]
ParseFileFormat {
source: common_datasource::error::Error,
location: Location,
},
#[snafu(display("Failed to infer schema: {}", source))]
#[snafu(display("Failed to infer schema"))]
InferSchema {
source: common_datasource::error::Error,
location: Location,
},
#[snafu(display("Failed to convert datafusion schema, source: {}", source))]
#[snafu(display("Failed to convert datafusion schema"))]
ConvertSchema {
source: datatypes::error::Error,
location: Location,
},
#[snafu(display("Unknown table type, downcast failed, location: {}", location))]
#[snafu(display("Unknown table type, downcast failed"))]
UnknownTable { location: Location },
#[snafu(display(
"Cannot find time index column in table {}, location: {}",
table,
location
))]
#[snafu(display("Cannot find time index column in table {}", table))]
TimeIndexNotFound { table: String, location: Location },
#[snafu(display("Failed to add duration '{:?}' to SystemTime, overflowed", duration))]

View File

@@ -27,25 +27,21 @@ pub enum Error {
#[snafu(display("Scripts table not found"))]
ScriptsTableNotFound { location: Location },
#[snafu(display(
"Failed to insert script to scripts table, name: {}, source: {}",
name,
source
))]
#[snafu(display("Failed to insert script to scripts table, name: {}", name))]
InsertScript {
name: String,
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to compile python script, name: {}, source: {}", name, source))]
#[snafu(display("Failed to compile python script, name: {}", name))]
CompilePython {
name: String,
location: Location,
source: crate::python::error::Error,
},
#[snafu(display("Failed to execute python script {}, source: {}", name, source))]
#[snafu(display("Failed to execute python script {}", name))]
ExecutePython {
name: String,
location: Location,
@@ -55,7 +51,7 @@ pub enum Error {
#[snafu(display("Script not found, name: {}", name))]
ScriptNotFound { location: Location, name: String },
#[snafu(display("Failed to collect record batch, source: {}", source))]
#[snafu(display("Failed to collect record batch"))]
CollectRecords {
location: Location,
source: common_recordbatch::error::Error,
@@ -64,13 +60,13 @@ pub enum Error {
#[snafu(display("Failed to cast type, msg: {}", msg))]
CastType { msg: String, location: Location },
#[snafu(display("Failed to build DataFusion logical plan, source: {}", source))]
#[snafu(display("Failed to build DataFusion logical plan"))]
BuildDfLogicalPlan {
source: datafusion_common::DataFusionError,
location: Location,
},
#[snafu(display("Failed to execute internal statement, source: {}", source))]
#[snafu(display("Failed to execute internal statement"))]
ExecuteInternalStatement {
source: query::error::Error,
location: Location,

View File

@@ -34,25 +34,25 @@ pub(crate) fn ret_other_error_with(reason: String) -> OtherSnafu<String> {
#[derive(Debug, Snafu)]
#[snafu(visibility(pub(crate)))]
pub enum Error {
#[snafu(display("Datatype error: {}", source))]
#[snafu(display("Datatype error"))]
TypeCast {
location: SnafuLocation,
source: DataTypeError,
},
#[snafu(display("Failed to query, source: {}", source))]
#[snafu(display("Failed to query"))]
DatabaseQuery {
location: SnafuLocation,
source: QueryError,
},
#[snafu(display("Failed to parse script, source: {}", source))]
#[snafu(display("Failed to parse script"))]
PyParse {
location: SnafuLocation,
source: ParseError,
},
#[snafu(display("Failed to compile script, source: {}", source))]
#[snafu(display("Failed to compile script"))]
PyCompile {
location: SnafuLocation,
source: CodegenError,
@@ -65,13 +65,13 @@ pub enum Error {
location: SnafuLocation,
},
#[snafu(display("Arrow error: {}", source))]
#[snafu(display("Arrow error"))]
Arrow {
location: SnafuLocation,
source: ArrowError,
},
#[snafu(display("DataFusion error: {}", source))]
#[snafu(display("DataFusion error"))]
DataFusion {
location: SnafuLocation,
source: DataFusionError,
@@ -104,18 +104,18 @@ pub enum Error {
location: SnafuLocation,
},
#[snafu(display("Failed to retrieve record batches, source: {}", source))]
#[snafu(display("Failed to retrieve record batches"))]
RecordBatch {
location: SnafuLocation,
source: common_recordbatch::error::Error,
},
#[snafu(display("Failed to create record batch, source: {}", source))]
#[snafu(display("Failed to create record batch"))]
NewRecordBatch {
location: SnafuLocation,
source: common_recordbatch::error::Error,
},
#[snafu(display("Failed to create tokio task, source: {}", source))]
#[snafu(display("Failed to create tokio task"))]
TokioJoin { source: tokio::task::JoinError },
}

View File

@@ -26,7 +26,7 @@ use common_telemetry::logging;
use datatypes::prelude::ConcreteDataType;
use query::parser::PromQuery;
use serde_json::json;
use snafu::{Location, Snafu};
use snafu::{ErrorCompat, Location, Snafu};
use tonic::Code;
#[derive(Debug, Snafu)]
@@ -35,78 +35,78 @@ pub enum Error {
#[snafu(display("Internal error: {}", err_msg))]
Internal { err_msg: String },
#[snafu(display("Internal IO error, source: {}", source))]
#[snafu(display("Internal IO error"))]
InternalIo { source: std::io::Error },
#[snafu(display("Tokio IO error: {}, source: {}", err_msg, source))]
#[snafu(display("Tokio IO error: {}", err_msg))]
TokioIo {
err_msg: String,
source: std::io::Error,
},
#[snafu(display("Failed to collect recordbatch, source: {}", source))]
#[snafu(display("Failed to collect recordbatch"))]
CollectRecordbatch {
location: Location,
source: common_recordbatch::error::Error,
},
#[snafu(display("Failed to start HTTP server, source: {}", source))]
#[snafu(display("Failed to start HTTP server"))]
StartHttp { source: hyper::Error },
#[snafu(display("Failed to start gRPC server, source: {}", source))]
#[snafu(display("Failed to start gRPC server"))]
StartGrpc { source: tonic::transport::Error },
#[snafu(display("{} server is already started", server))]
AlreadyStarted { server: String, location: Location },
#[snafu(display("Failed to bind address {}, source: {}", addr, source))]
#[snafu(display("Failed to bind address {}", addr))]
TcpBind {
addr: SocketAddr,
source: std::io::Error,
},
#[snafu(display("Failed to execute query, source: {}, query: {}", source, query))]
#[snafu(display("Failed to execute query, query: {}", query))]
ExecuteQuery {
query: String,
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to execute plan, source: {}", source))]
#[snafu(display("Failed to execute plan"))]
ExecutePlan {
location: Location,
source: BoxedError,
},
#[snafu(display("{source}"))]
#[snafu(display("Execute gRPC query error"))]
ExecuteGrpcQuery {
location: Location,
source: BoxedError,
},
#[snafu(display("{source}"))]
#[snafu(display("Execute gRPC request error"))]
ExecuteGrpcRequest {
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to check database validity, source: {}", source))]
#[snafu(display("Failed to check database validity"))]
CheckDatabaseValidity {
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to describe statement, source: {}", source))]
#[snafu(display("Failed to describe statement"))]
DescribeStatement { source: BoxedError },
#[snafu(display("Failed to insert script with name: {}, source: {}", name, source))]
#[snafu(display("Failed to insert script with name: {}", name))]
InsertScript {
name: String,
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to execute script by name: {}, source: {}", name, source))]
#[snafu(display("Failed to execute script by name: {}", name))]
ExecuteScript {
name: String,
location: Location,
@@ -122,25 +122,25 @@ pub enum Error {
#[snafu(display("Invalid query: {}", reason))]
InvalidQuery { reason: String, location: Location },
#[snafu(display("Failed to parse InfluxDB line protocol, source: {}", source))]
#[snafu(display("Failed to parse InfluxDB line protocol"))]
InfluxdbLineProtocol {
location: Location,
source: influxdb_line_protocol::Error,
},
#[snafu(display("Failed to write InfluxDB line protocol, source: {}", source))]
#[snafu(display("Failed to write InfluxDB line protocol"))]
InfluxdbLinesWrite {
location: Location,
source: common_grpc::error::Error,
},
#[snafu(display("Failed to write prometheus series, source: {}", source))]
#[snafu(display("Failed to write prometheus series"))]
PromSeriesWrite {
location: Location,
source: common_grpc::error::Error,
},
#[snafu(display("Failed to write OTLP metrics, source: {}", source))]
#[snafu(display("Failed to write OTLP metrics"))]
OtlpMetricsWrite {
location: Location,
source: common_grpc::error::Error,
@@ -152,34 +152,34 @@ pub enum Error {
#[snafu(display("Connection reset by peer"))]
ConnResetByPeer { location: Location },
#[snafu(display("Hyper error, source: {}", source))]
#[snafu(display("Hyper error"))]
Hyper { source: hyper::Error },
#[snafu(display("Invalid OpenTSDB line, source: {}", source))]
#[snafu(display("Invalid OpenTSDB line"))]
InvalidOpentsdbLine {
source: FromUtf8Error,
location: Location,
},
#[snafu(display("Invalid OpenTSDB Json request, source: {}", source))]
#[snafu(display("Invalid OpenTSDB Json request"))]
InvalidOpentsdbJsonRequest {
source: serde_json::error::Error,
location: Location,
},
#[snafu(display("Failed to decode prometheus remote request, source: {}", source))]
#[snafu(display("Failed to decode prometheus remote request"))]
DecodePromRemoteRequest {
location: Location,
source: prost::DecodeError,
},
#[snafu(display("Failed to decode OTLP request, source: {}", source))]
#[snafu(display("Failed to decode OTLP request"))]
DecodeOtlpRequest {
location: Location,
source: prost::DecodeError,
},
#[snafu(display("Failed to decompress prometheus remote request, source: {}", source))]
#[snafu(display("Failed to decompress prometheus remote request"))]
DecompressPromRemoteRequest {
location: Location,
source: snap::Error,
@@ -191,7 +191,7 @@ pub enum Error {
#[snafu(display("Invalid prometheus remote read query result, msg: {}", msg))]
InvalidPromRemoteReadQueryResult { msg: String, location: Location },
#[snafu(display("Invalid Flight ticket, source: {}", source))]
#[snafu(display("Invalid Flight ticket"))]
InvalidFlightTicket {
source: api::DecodeError,
location: Location,
@@ -200,7 +200,7 @@ pub enum Error {
#[snafu(display("Tls is required for {}, plain connection is rejected", server))]
TlsRequired { server: String },
#[snafu(display("Failed to get user info, source: {}", source))]
#[snafu(display("Failed to get user info"))]
Auth {
location: Location,
source: auth::error::Error,
@@ -212,7 +212,7 @@ pub enum Error {
#[snafu(display("Not found influx http authorization info"))]
NotFoundInfluxAuth {},
#[snafu(display("Invalid visibility ASCII chars, source: {}", source))]
#[snafu(display("Invalid visibility ASCII chars"))]
InvisibleASCII {
source: hyper::header::ToStrError,
location: Location,
@@ -224,26 +224,26 @@ pub enum Error {
#[snafu(display("Invalid http authorization header"))]
InvalidAuthorizationHeader { location: Location },
#[snafu(display("Invalid base64 value, source: {:?}", source))]
#[snafu(display("Invalid base64 value"))]
InvalidBase64Value {
source: DecodeError,
location: Location,
},
#[snafu(display("Invalid utf-8 value, source: {:?}", source))]
#[snafu(display("Invalid utf-8 value"))]
InvalidUtf8Value {
source: FromUtf8Error,
location: Location,
},
#[snafu(display("Error accessing catalog: {}", source))]
#[snafu(display("Error accessing catalog"))]
CatalogError { source: catalog::error::Error },
#[snafu(display("Cannot find requested database: {}-{}", catalog, schema))]
DatabaseNotFound { catalog: String, schema: String },
#[cfg(feature = "mem-prof")]
#[snafu(display("Failed to dump profile data, source: {}", source))]
#[snafu(display("Failed to dump profile data"))]
DumpProfileData {
location: Location,
source: common_mem_prof::error::Error,
@@ -255,26 +255,26 @@ pub enum Error {
#[snafu(display("Invalid flush argument: {}", err_msg))]
InvalidFlushArgument { err_msg: String },
#[snafu(display("Failed to build gRPC reflection service, source: {}", source))]
#[snafu(display("Failed to build gRPC reflection service"))]
GrpcReflectionService {
source: tonic_reflection::server::Error,
location: Location,
},
#[snafu(display("Failed to build HTTP response, source: {source}"))]
#[snafu(display("Failed to build HTTP response"))]
BuildHttpResponse {
source: http::Error,
location: Location,
},
#[snafu(display("Failed to parse PromQL: {query:?}, source: {source}"))]
#[snafu(display("Failed to parse PromQL: {query:?}"))]
ParsePromQL {
query: PromQuery,
location: Location,
source: query::error::Error,
},
#[snafu(display("Failed to get param types, source: {source}"))]
#[snafu(display("Failed to get param types"))]
GetPreparedStmtParams {
source: query::error::Error,
location: Location,
@@ -285,50 +285,44 @@ pub enum Error {
// this error is used for custom error mapping
// please do not delete it
#[snafu(display("Other error, source: {}", source))]
#[snafu(display("Other error"))]
Other {
source: BoxedError,
location: Location,
},
#[snafu(display("Failed to join task, source: {}", source))]
#[snafu(display("Failed to join task"))]
JoinTask {
source: tokio::task::JoinError,
location: Location,
},
#[cfg(feature = "pprof")]
#[snafu(display("Failed to dump pprof data, source: {}", source))]
#[snafu(display("Failed to dump pprof data"))]
DumpPprof { source: common_pprof::Error },
#[snafu(display("{source}"))]
#[snafu(display(""))]
Metrics { source: BoxedError },
#[snafu(display("DataFrame operation error, source: {source}, location: {location}"))]
#[snafu(display("DataFrame operation error"))]
DataFrame {
source: datafusion::error::DataFusionError,
location: Location,
},
#[snafu(display(
"Failed to replace params with values in prepared statement, source: {source}, location: {location}"
))]
#[snafu(display("Failed to replace params with values in prepared statement"))]
ReplacePreparedStmtParams {
source: query::error::Error,
location: Location,
},
#[snafu(display("Failed to convert scalar value, source: {source}, location: {location}"))]
#[snafu(display("Failed to convert scalar value"))]
ConvertScalarValue {
source: datatypes::error::Error,
location: Location,
},
#[snafu(display(
"Expected type: {:?}, actual: {:?}, location: {location}",
expected,
actual
))]
#[snafu(display("Expected type: {:?}, actual: {:?}", expected, actual))]
PreparedStmtTypeMismatch {
expected: ConcreteDataType,
actual: opensrv_mysql::ColumnType,
@@ -523,7 +517,8 @@ impl From<std::io::Error> for Error {
impl IntoResponse for Error {
fn into_response(self) -> Response {
let (status, error_message) = match self {
let error_msg = self.iter_chain().last().unwrap().to_string();
let status = match self {
Error::InfluxdbLineProtocol { .. }
| Error::InfluxdbLinesWrite { .. }
| Error::PromSeriesWrite { .. }
@@ -534,15 +529,15 @@ impl IntoResponse for Error {
| Error::DecompressPromRemoteRequest { .. }
| Error::InvalidPromRemoteRequest { .. }
| Error::InvalidQuery { .. }
| Error::TimePrecision { .. } => (HttpStatusCode::BAD_REQUEST, self.to_string()),
| Error::TimePrecision { .. } => HttpStatusCode::BAD_REQUEST,
_ => {
logging::error!(self; "Failed to handle HTTP request");
(HttpStatusCode::INTERNAL_SERVER_ERROR, self.to_string())
HttpStatusCode::INTERNAL_SERVER_ERROR
}
};
let body = Json(json!({
"error": error_message,
"error": error_msg,
}));
(status, body).into_response()
}

View File

@@ -20,7 +20,7 @@ use axum::{Extension, Json};
use hyper::Body;
use serde::{Deserialize, Serialize};
use session::context::QueryContextRef;
use snafu::ResultExt;
use snafu::{ErrorCompat, ResultExt};
use crate::error::{self, Error, Result};
use crate::opentsdb::codec::DataPoint;
@@ -160,7 +160,7 @@ impl OpentsdbDebuggingResponse {
if let Some(details) = self.errors.as_mut() {
let error = OpentsdbDetailError {
datapoint,
error: error.to_string(),
error: error.iter_chain().last().unwrap().to_string(),
};
details.push(error);
};
@@ -169,6 +169,8 @@ impl OpentsdbDebuggingResponse {
#[cfg(test)]
mod test {
use snafu::ErrorCompat;
use super::*;
#[test]
@@ -227,17 +229,13 @@ mod test {
let body = Body::from("");
let result = parse_data_points(body).await;
assert!(result.is_err());
assert_eq!(
result.unwrap_err().to_string(),
"Invalid OpenTSDB Json request, source: EOF while parsing a value at line 1 column 0"
);
let err = result.unwrap_err().iter_chain().last().unwrap().to_string();
assert!(err.contains("EOF while parsing a value at line 1 column 0"));
let body = Body::from("hello world");
let result = parse_data_points(body).await;
assert!(result.is_err());
assert_eq!(
result.unwrap_err().to_string(),
"Invalid OpenTSDB Json request, source: expected value at line 1 column 1"
);
let err = result.unwrap_err().iter_chain().last().unwrap().to_string();
assert!(err.contains("expected value at line 1 column 1"));
}
}

View File

@@ -22,37 +22,25 @@ use snafu::{Location, ResultExt, Snafu};
#[derive(Debug, Snafu)]
pub enum Error {
#[snafu(display(
"Failed to create profiler guard, source: {}, location: {}",
source,
location
))]
#[snafu(display("Failed to create profiler guard"))]
CreateGuard {
source: pprof::Error,
location: Location,
},
#[snafu(display("Failed to create report, source: {}, location: {}", source, location))]
#[snafu(display("Failed to create report"))]
CreateReport {
source: pprof::Error,
location: Location,
},
#[snafu(display(
"Failed to create flamegraph, source: {}, location: {}",
source,
location
))]
#[snafu(display("Failed to create flamegraph"))]
CreateFlamegraph {
source: pprof::Error,
location: Location,
},
#[snafu(display(
"Failed to create pprof report, source: {}, location: {}",
source,
location
))]
#[snafu(display("Failed to create pprof report"))]
ReportPprof {
source: pprof::Error,
location: Location,

View File

@@ -21,7 +21,7 @@ use snafu::{Location, Snafu};
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Failed to update jemalloc metrics, source: {source}, location: {location}"))]
#[snafu(display("Failed to update jemalloc metrics"))]
UpdateJemallocMetrics {
source: tikv_jemalloc_ctl::Error,
location: Location,

View File

@@ -116,6 +116,7 @@ mod tests {
use std::io::Write;
use bytes::BufMut;
use snafu::ErrorCompat;
use tokio_test::io::Builder;
use super::*;
@@ -186,10 +187,8 @@ mod tests {
buffer.writer().write_all(b"Hello Wor\xffld.\r\n").unwrap();
let result = conn.parse_line();
assert!(result.is_err());
assert!(result
.unwrap_err()
.to_string()
.contains("Invalid OpenTSDB line, source: invalid utf-8 sequence"));
let err = result.unwrap_err().iter_chain().last().unwrap().to_string();
assert!(err.contains("invalid utf-8 sequence"));
}
#[tokio::test]

View File

@@ -153,7 +153,7 @@ async fn test_opentsdb_put() {
assert_eq!(result.status(), 400);
assert_eq!(
result.text().await,
"{\"error\":\"Invalid OpenTSDB Json request, source: expected value at line 1 column 1\"}"
"{\"error\":\"expected value at line 1 column 1\"}"
);
// internal server error

View File

@@ -36,11 +36,10 @@ pub enum Error {
Unsupported { sql: String, keyword: String },
#[snafu(display(
"Unexpected token while parsing SQL statement: {}, expected: '{}', found: {}, source: {}",
"Unexpected token while parsing SQL statement: {}, expected: '{}', found: {}",
sql,
expected,
actual,
source
))]
Unexpected {
sql: String,
@@ -57,7 +56,7 @@ pub enum Error {
UnsupportedDefaultValue { column_name: String, expr: Expr },
// Syntax error from sql parser.
#[snafu(display("Syntax error, source: {}, sql: {}", source, sql))]
#[snafu(display("Syntax error, sql: {}", sql))]
Syntax { sql: String, source: ParserError },
#[snafu(display("Missing time index constraint"))]
@@ -96,7 +95,7 @@ pub enum Error {
#[snafu(display("Invalid table name: {}", name))]
InvalidTableName { name: String },
#[snafu(display("Invalid default constraint, column: {}, source: {}", column, source))]
#[snafu(display("Invalid default constraint, column: {}", column))]
InvalidDefault {
column: String,
location: Location,
@@ -114,16 +113,13 @@ pub enum Error {
#[snafu(display("Invalid table option key: {}", key))]
InvalidTableOption { key: String, location: Location },
#[snafu(display("Failed to serialize column default constraint, source: {}", source))]
#[snafu(display("Failed to serialize column default constraint"))]
SerializeColumnDefaultConstraint {
location: Location,
source: datatypes::error::Error,
},
#[snafu(display(
"Failed to convert data type to gRPC data type defined in proto, source: {}",
source
))]
#[snafu(display("Failed to convert data type to gRPC data type defined in proto"))]
ConvertToGrpcDataType {
location: Location,
source: api::error::Error,

View File

@@ -98,6 +98,7 @@ impl<'a> ParserContext<'a> {
mod tests {
use std::assert_matches::assert_matches;
use snafu::ErrorCompat;
use sqlparser::ast::{ColumnOption, DataType};
use super::*;
@@ -214,9 +215,8 @@ mod tests {
fn test_parse_alter_drop_column() {
let sql = "ALTER TABLE my_metric_1 DROP a";
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap_err();
assert!(result
.to_string()
.contains("expect keyword COLUMN after ALTER TABLE DROP"));
let err = result.iter_chain().last().unwrap().to_string();
assert!(err.contains("expect keyword COLUMN after ALTER TABLE DROP"));
let sql = "ALTER TABLE my_metric_1 DROP COLUMN a";
let mut result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap();
@@ -245,9 +245,8 @@ mod tests {
fn test_parse_alter_rename_table() {
let sql = "ALTER TABLE test_table table_t";
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap_err();
assert!(result
.to_string()
.contains("expect keyword ADD or DROP or RENAME after ALTER TABLE"));
let err = result.iter_chain().last().unwrap().to_string();
assert!(err.contains("expect keyword ADD or DROP or RENAME after ALTER TABLE"));
let sql = "ALTER TABLE test_table RENAME table_t";
let mut result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap();

View File

@@ -837,6 +837,7 @@ mod tests {
use std::collections::HashMap;
use common_catalog::consts::FILE_ENGINE;
use snafu::ErrorCompat;
use sqlparser::ast::ColumnOption::NotNull;
use super::*;
@@ -1400,6 +1401,9 @@ ENGINE=mito";
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {});
assert!(result
.unwrap_err()
.iter_chain()
.last()
.unwrap()
.to_string()
.contains("sql parser error: Expected BY, found: RANGE"));
@@ -1414,6 +1418,9 @@ ENGINE=mito";
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {});
assert!(result
.unwrap_err()
.iter_chain()
.last()
.unwrap()
.to_string()
.contains("sql parser error: Expected LESS, found: THAN"));
@@ -1428,6 +1435,9 @@ ENGINE=mito";
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {});
assert!(result
.unwrap_err()
.iter_chain()
.last()
.unwrap()
.to_string()
.contains("Expected a concrete value, found: MAXVALU"));
}
@@ -1537,10 +1547,8 @@ ENGINE=mito";
fn test_invalid_column_name() {
let sql = "create table foo(user string, i timestamp time index)";
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {});
assert!(result
.unwrap_err()
.to_string()
.contains("Cannot use keyword 'user' as column name"));
let err = result.unwrap_err().iter_chain().last().unwrap().to_string();
assert!(err.contains("Cannot use keyword 'user' as column name"));
// If column name is quoted, it's valid even same with keyword.
let sql = r#"

View File

@@ -33,6 +33,8 @@ impl<'a> ParserContext<'a> {
#[cfg(test)]
mod tests {
use snafu::ErrorCompat;
use crate::dialect::GreptimeDbDialect;
use crate::parser::ParserContext;
@@ -53,6 +55,9 @@ mod tests {
assert!(result.is_err());
assert!(result
.unwrap_err()
.iter_chain()
.last()
.unwrap()
.to_string()
.contains("Expected an expression"));
}

View File

@@ -166,6 +166,8 @@ impl<'a> ParserContext<'a> {
#[cfg(test)]
mod tests {
use snafu::ErrorCompat;
use super::*;
use crate::dialect::GreptimeDbDialect;
#[test]
@@ -284,11 +286,21 @@ mod tests {
// Invalid duration
let sql = "TQL EVAL (1676887657, 1676887659, 1m) http_requests_total{environment=~'staging|testing|development',method!='GET'} @ 1609746000 offset 5m";
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap_err();
assert!(result.to_string().contains("Expected ), found: m"));
assert!(result
.iter_chain()
.last()
.unwrap()
.to_string()
.contains("Expected ), found: m"));
// missing end
let sql = "TQL EVAL (1676887657, '1m') http_requests_total{environment=~'staging|testing|development',method!='GET'} @ 1609746000 offset 5m";
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap_err();
assert!(result.to_string().contains("Expected ,, found: )"));
assert!(result
.iter_chain()
.last()
.unwrap()
.to_string()
.contains("Expected ,, found: )"));
}
}

View File

@@ -36,7 +36,7 @@ use crate::write_batch;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Invalid region descriptor, region: {}, source: {}", region, source))]
#[snafu(display("Invalid region descriptor, region: {}", region))]
InvalidRegionDesc {
region: String,
location: Location,
@@ -46,89 +46,79 @@ pub enum Error {
#[snafu(display("Missing column {} in write batch", column))]
BatchMissingColumn { column: String, location: Location },
#[snafu(display("Failed to write parquet file, source: {}", source))]
#[snafu(display("Failed to write parquet file"))]
WriteParquet {
source: parquet::errors::ParquetError,
location: Location,
},
#[snafu(display("Failed to write to buffer, source: {}", source))]
#[snafu(display("Failed to write to buffer"))]
WriteBuffer {
location: Location,
source: common_datasource::error::Error,
},
#[snafu(display("Failed to create RecordBatch from vectors, source: {}", source))]
#[snafu(display("Failed to create RecordBatch from vectors"))]
NewRecordBatch {
location: Location,
source: ArrowError,
},
#[snafu(display("Fail to read object from path: {}, source: {}", path, source))]
#[snafu(display("Fail to read object from path: {}", path))]
ReadObject {
path: String,
location: Location,
source: object_store::Error,
},
#[snafu(display("Fail to write object into path: {}, source: {}", path, source))]
#[snafu(display("Fail to write object into path: {}", path))]
WriteObject {
path: String,
location: Location,
source: object_store::Error,
},
#[snafu(display("Fail to delete object from path: {}, source: {}", path, source))]
#[snafu(display("Fail to delete object from path: {}", path))]
DeleteObject {
path: String,
location: Location,
source: object_store::Error,
},
#[snafu(display(
"Fail to compress object by {}, path: {}, source: {}",
compress_type,
path,
source
))]
#[snafu(display("Fail to compress object by {}, path: {}", compress_type, path))]
CompressObject {
compress_type: CompressionType,
path: String,
source: std::io::Error,
},
#[snafu(display(
"Fail to decompress object by {}, path: {}, source: {}",
compress_type,
path,
source
))]
#[snafu(display("Fail to decompress object by {}, path: {}", compress_type, path))]
DecompressObject {
compress_type: CompressionType,
path: String,
source: std::io::Error,
},
#[snafu(display("Fail to list objects in path: {}, source: {}", path, source))]
#[snafu(display("Fail to list objects in path: {}", path))]
ListObjects {
path: String,
location: Location,
source: object_store::Error,
},
#[snafu(display("Fail to create str from bytes, source: {}", source))]
#[snafu(display("Fail to create str from bytes"))]
Utf8 {
location: Location,
source: Utf8Error,
},
#[snafu(display("Fail to encode object into json , source: {}", source))]
#[snafu(display("Fail to encode object into json "))]
EncodeJson {
location: Location,
source: JsonError,
},
#[snafu(display("Fail to decode object from json , source: {}", source))]
#[snafu(display("Fail to decode object from json "))]
DecodeJson {
location: Location,
source: JsonError,
@@ -141,34 +131,26 @@ pub enum Error {
location: Location,
},
#[snafu(display(
"Failed to write WAL, WAL region_id: {}, source: {}",
region_id,
source
))]
#[snafu(display("Failed to write WAL, WAL region_id: {}", region_id))]
WriteWal {
region_id: RegionId,
location: Location,
source: BoxedError,
},
#[snafu(display("Failed to encode WAL header, source {}", source))]
#[snafu(display("Failed to encode WAL header"))]
EncodeWalHeader {
location: Location,
source: std::io::Error,
},
#[snafu(display("Failed to decode WAL header, source {}", source))]
#[snafu(display("Failed to decode WAL header"))]
DecodeWalHeader {
location: Location,
source: std::io::Error,
},
#[snafu(display(
"Failed to wait flushing, region_id: {}, source: {}",
region_id,
source
))]
#[snafu(display("Failed to wait flushing, region_id: {}", region_id))]
WaitFlush {
region_id: RegionId,
source: tokio::sync::oneshot::error::RecvError,
@@ -200,10 +182,10 @@ pub enum Error {
#[snafu(display("Failed to decode action list, {}", msg))]
DecodeMetaActionList { msg: String, location: Location },
#[snafu(display("Failed to read line, err: {}", source))]
#[snafu(display("Failed to read line, err"))]
Readline { source: IoError },
#[snafu(display("Failed to read Parquet file: {}, source: {}", file, source))]
#[snafu(display("Failed to read Parquet file: {}", file))]
ReadParquet {
file: String,
source: parquet::errors::ParquetError,
@@ -216,18 +198,14 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to read WAL, region_id: {}, source: {}", region_id, source))]
#[snafu(display("Failed to read WAL, region_id: {}", region_id))]
ReadWal {
region_id: RegionId,
location: Location,
source: BoxedError,
},
#[snafu(display(
"Failed to mark WAL as obsolete, region id: {}, source: {}",
region_id,
source
))]
#[snafu(display("Failed to mark WAL as obsolete, region id: {}", region_id))]
MarkWalObsolete {
region_id: u64,
location: Location,
@@ -241,11 +219,7 @@ pub enum Error {
location: Location,
},
#[snafu(display(
"Failed to delete WAL namespace, region id: {}, source: {}",
region_id,
source
))]
#[snafu(display("Failed to delete WAL namespace, region id: {}", region_id))]
DeleteWalNamespace {
region_id: RegionId,
location: Location,
@@ -263,14 +237,14 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to convert store schema, file: {}, source: {}", file, source))]
#[snafu(display("Failed to convert store schema, file: {}", file))]
ConvertStoreSchema {
file: String,
location: Location,
source: MetadataError,
},
#[snafu(display("Invalid raw region metadata, region: {}, source: {}", region, source))]
#[snafu(display("Invalid raw region metadata, region: {}", region))]
InvalidRawRegion {
region: String,
location: Location,
@@ -280,13 +254,13 @@ pub enum Error {
#[snafu(display("Try to write the closed region"))]
ClosedRegion { location: Location },
#[snafu(display("Invalid projection, source: {}", source))]
#[snafu(display("Invalid projection"))]
InvalidProjection {
location: Location,
source: MetadataError,
},
#[snafu(display("Failed to push data to batch builder, source: {}", source))]
#[snafu(display("Failed to push data to batch builder"))]
PushBatch {
location: Location,
source: datatypes::error::Error,
@@ -295,30 +269,26 @@ pub enum Error {
#[snafu(display("Failed to build batch, {}", msg))]
BuildBatch { msg: String, location: Location },
#[snafu(display("Failed to filter column {}, source: {}", name, source))]
#[snafu(display("Failed to filter column {}", name))]
FilterColumn {
name: String,
location: Location,
source: datatypes::error::Error,
},
#[snafu(display("Invalid alter request, source: {}", source))]
#[snafu(display("Invalid alter request"))]
InvalidAlterRequest {
location: Location,
source: MetadataError,
},
#[snafu(display("Failed to alter metadata, source: {}", source))]
#[snafu(display("Failed to alter metadata"))]
AlterMetadata {
location: Location,
source: MetadataError,
},
#[snafu(display(
"Failed to create default value for column {}, source: {}",
name,
source
))]
#[snafu(display("Failed to create default value for column {}", name))]
CreateDefault {
name: String,
location: Location,
@@ -347,11 +317,7 @@ pub enum Error {
#[snafu(display("Incompatible schema to read, reason: {}", reason))]
CompatRead { reason: String, location: Location },
#[snafu(display(
"Failed to read column {}, could not create default value, source: {}",
column,
source
))]
#[snafu(display("Failed to read column {}, could not create default value", column))]
CreateDefaultToRead {
column: String,
location: Location,
@@ -361,11 +327,7 @@ pub enum Error {
#[snafu(display("Failed to read column {}, no proper default value for it", column))]
NoDefaultToRead { column: String, location: Location },
#[snafu(display(
"Failed to convert arrow chunk to batch, name: {}, source: {}",
name,
source
))]
#[snafu(display("Failed to convert arrow chunk to batch, name: {}", name))]
ConvertChunk {
name: String,
location: Location,
@@ -375,7 +337,7 @@ pub enum Error {
#[snafu(display("Unknown column {}", name))]
UnknownColumn { name: String, location: Location },
#[snafu(display("Failed to create record batch for write batch, source:{}", source))]
#[snafu(display("Failed to create record batch for write batch"))]
CreateRecordBatch {
location: Location,
source: common_recordbatch::error::Error,
@@ -420,19 +382,19 @@ pub enum Error {
#[snafu(display("Failed to decode write batch, corrupted data {}", message))]
BatchCorrupted { message: String, location: Location },
#[snafu(display("Failed to decode arrow data, source: {}", source))]
#[snafu(display("Failed to decode arrow data"))]
DecodeArrow {
location: Location,
source: ArrowError,
},
#[snafu(display("Failed to encode arrow data, source: {}", source))]
#[snafu(display("Failed to encode arrow data"))]
EncodeArrow {
location: Location,
source: ArrowError,
},
#[snafu(display("Failed to parse schema, source: {}", source))]
#[snafu(display("Failed to parse schema"))]
ParseSchema {
location: Location,
source: datatypes::error::Error,
@@ -450,31 +412,31 @@ pub enum Error {
#[snafu(display("Cannot schedule request, scheduler's already stopped"))]
IllegalSchedulerState { location: Location },
#[snafu(display("Failed to start manifest gc task: {}", source))]
#[snafu(display("Failed to start manifest gc task"))]
StartManifestGcTask {
location: Location,
source: RuntimeError,
},
#[snafu(display("Failed to stop manifest gc task: {}", source))]
#[snafu(display("Failed to stop manifest gc task"))]
StopManifestGcTask {
location: Location,
source: RuntimeError,
},
#[snafu(display("Failed to stop scheduler, source: {}", source))]
#[snafu(display("Failed to stop scheduler"))]
StopScheduler {
source: JoinError,
location: Location,
},
#[snafu(display("Failed to delete SST file, source: {}", source))]
#[snafu(display("Failed to delete SST file"))]
DeleteSst {
source: object_store::Error,
location: Location,
},
#[snafu(display("Failed to calculate SST expire time, source: {}", source))]
#[snafu(display("Failed to calculate SST expire time"))]
TtlCalculation {
location: Location,
source: common_time::error::Error,
@@ -500,41 +462,37 @@ pub enum Error {
location: Location,
},
#[snafu(display("Failed to start picking task for flush: {}", source))]
#[snafu(display("Failed to start picking task for flush"))]
StartPickTask {
location: Location,
source: RuntimeError,
},
#[snafu(display("Failed to stop picking task for flush: {}", source))]
#[snafu(display("Failed to stop picking task for flush"))]
StopPickTask {
location: Location,
source: RuntimeError,
},
#[snafu(display("Failed to convert columns to rows, source: {}", source))]
#[snafu(display("Failed to convert columns to rows"))]
ConvertColumnsToRows {
source: ArrowError,
location: Location,
},
#[snafu(display("Failed to sort arrays, source: {}", source))]
#[snafu(display("Failed to sort arrays"))]
SortArrays {
source: ArrowError,
location: Location,
},
#[snafu(display("Failed to build scan predicate, source: {}", source))]
#[snafu(display("Failed to build scan predicate"))]
BuildPredicate {
source: table::error::Error,
location: Location,
},
#[snafu(display(
"Failed to join spawned tasks, source: {}, location: {}",
source,
location
))]
#[snafu(display("Failed to join spawned tasks"))]
JoinError {
source: JoinError,
location: Location,

View File

@@ -50,7 +50,7 @@ pub enum Error {
#[snafu(display("Column id {} already exists", id))]
ColIdExists { id: ColumnId, location: Location },
#[snafu(display("Failed to build schema, source: {}", source))]
#[snafu(display("Failed to build schema"))]
InvalidSchema {
location: Location,
source: datatypes::error::Error,
@@ -85,17 +85,13 @@ pub enum Error {
DropInternalColumn { name: String },
// End of variants for validating `AlterRequest`.
#[snafu(display("Failed to convert to column schema, source: {}", source))]
#[snafu(display("Failed to convert to column schema"))]
ToColumnSchema {
location: Location,
source: datatypes::error::Error,
},
#[snafu(display(
"Failed to parse metadata to int, key_value: {}, source: {}",
key_value,
source
))]
#[snafu(display("Failed to parse metadata to int, key_value: {}", key_value))]
ParseMetaInt {
// Store key and value in one string to reduce the enum size.
key_value: String,
@@ -106,13 +102,13 @@ pub enum Error {
#[snafu(display("Metadata of {} not found", key))]
MetaNotFound { key: String, location: Location },
#[snafu(display("Failed to build column descriptor, source: {}", source))]
#[snafu(display("Failed to build column descriptor"))]
BuildColumnDescriptor {
source: ColumnDescriptorBuilderError,
location: Location,
},
#[snafu(display("Failed to convert from arrow schema, source: {}", source))]
#[snafu(display("Failed to convert from arrow schema"))]
ConvertArrowSchema {
location: Location,
source: datatypes::error::Error,
@@ -121,18 +117,14 @@ pub enum Error {
#[snafu(display("Invalid internal column index in arrow schema"))]
InvalidIndex { location: Location },
#[snafu(display(
"Failed to convert arrow chunk to batch, name: {}, source: {}",
name,
source
))]
#[snafu(display("Failed to convert arrow chunk to batch, name: {}", name))]
ConvertChunk {
name: String,
location: Location,
source: datatypes::error::Error,
},
#[snafu(display("Failed to convert schema, source: {}", source))]
#[snafu(display("Failed to convert schema"))]
ConvertSchema {
location: Location,
source: datatypes::error::Error,

View File

@@ -21,17 +21,17 @@ use crate::storage::ColumnDescriptorBuilderError;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Invalid raw region request: {err}, at {location}"))]
#[snafu(display("Invalid raw region request: {err}"))]
InvalidRawRegionRequest { err: String, location: Location },
#[snafu(display("Invalid default constraint: {constraint}, source: {source}, at {location}"))]
#[snafu(display("Invalid default constraint: {constraint}"))]
InvalidDefaultConstraint {
constraint: String,
source: datatypes::error::Error,
location: Location,
},
#[snafu(display("Failed to build column descriptor: {source}, at {location}"))]
#[snafu(display("Failed to build column descriptor: "))]
BuildColumnDescriptor {
source: ColumnDescriptorBuilderError,
location: Location,

View File

@@ -565,44 +565,31 @@ impl SkippedFields {
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum MetadataError {
#[snafu(display("Invalid schema, source: {}, location: {}", source, location))]
#[snafu(display("Invalid schema"))]
InvalidSchema {
source: datatypes::error::Error,
location: Location,
},
#[snafu(display("Invalid metadata, {}, location: {}", reason, location))]
#[snafu(display("Invalid metadata, {}", reason))]
InvalidMeta { reason: String, location: Location },
#[snafu(display(
"Failed to ser/de json object. Location: {}, source: {}",
location,
source
))]
#[snafu(display("Failed to ser/de json object"))]
SerdeJson {
location: Location,
source: serde_json::Error,
},
#[snafu(display(
"Failed to convert struct from datatypes, location: {}, source: {}",
location,
source
))]
#[snafu(display("Failed to convert struct from datatypes"))]
ConvertDatatypes {
location: Location,
source: datatypes::error::Error,
},
#[snafu(display("Invalid raw region request, err: {}, location: {}", err, location))]
#[snafu(display("Invalid raw region request, err: {}", err))]
InvalidRawRegionRequest { err: String, location: Location },
#[snafu(display(
"Invalid region request, region_id: {}, err: {}, location: {}",
region_id,
err,
location
))]
#[snafu(display("Invalid region request, region_id: {}, err: {}", region_id, err))]
InvalidRegionRequest {
region_id: RegionId,
err: String,

View File

@@ -28,13 +28,13 @@ pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Snafu)]
#[snafu(visibility(pub))]
pub enum Error {
#[snafu(display("Datafusion error: {}", source))]
#[snafu(display("Datafusion error"))]
Datafusion {
source: DataFusionError,
location: Location,
},
#[snafu(display("Failed to convert Arrow schema, source: {}", source))]
#[snafu(display("Failed to convert Arrow schema"))]
SchemaConversion {
source: datatypes::error::Error,
location: Location,
@@ -46,26 +46,26 @@ pub enum Error {
#[snafu(display("Engine exist: {}", engine))]
EngineExist { engine: String, location: Location },
#[snafu(display("Table projection error, source: {}", source))]
#[snafu(display("Table projection error"))]
TableProjection {
source: ArrowError,
location: Location,
},
#[snafu(display("Failed to create record batch for Tables, source: {}", source))]
#[snafu(display("Failed to create record batch for Tables"))]
TablesRecordBatch {
location: Location,
source: BoxedError,
},
#[snafu(display("Column {column_name} already exists in table {table_name}, at {location}"))]
#[snafu(display("Column {column_name} already exists in table {table_name}"))]
ColumnExists {
column_name: String,
table_name: String,
location: Location,
},
#[snafu(display("Failed to build schema, msg: {}, source: {}", msg, source))]
#[snafu(display("Failed to build schema, msg: {}", msg))]
SchemaBuild {
location: Location,
source: datatypes::error::Error,
@@ -94,10 +94,9 @@ pub enum Error {
},
#[snafu(display(
"Failed to build column descriptor for table: {}, column: {}, source: {}",
"Failed to build column descriptor for table: {}, column: {}",
table_name,
column_name,
source,
))]
BuildColumnDescriptor {
source: store_api::storage::ColumnDescriptorBuilderError,
@@ -109,7 +108,7 @@ pub enum Error {
#[snafu(display("Regions schemas mismatch in table: {}", table))]
RegionSchemaMismatch { table: String, location: Location },
#[snafu(display("Failed to operate table, source: {}", source))]
#[snafu(display("Failed to operate table"))]
TableOperation { source: BoxedError },
#[snafu(display("Unsupported operation: {}", operation))]

View File

@@ -248,7 +248,8 @@ pub async fn test_sql_api(store_type: StorageType) {
let body = serde_json::from_str::<JsonResponse>(&res.text().await).unwrap();
assert!(!body.success());
let _ = body.execution_time_ms().unwrap();
assert!(body.error().unwrap().contains("Table not found"));
// TODO(shuiyisong): fix this when return source err msg to client side
// assert!(body.error().unwrap().contains("Table not found"));
// test database given
let res = client