diff --git a/src/common/procedure/src/error.rs b/src/common/procedure/src/error.rs index a9c0206263..42561f0755 100644 --- a/src/common/procedure/src/error.rs +++ b/src/common/procedure/src/error.rs @@ -127,6 +127,13 @@ pub enum Error { source: common_runtime::error::Error, location: Location, }, + + #[snafu(display("Subprocedure {} failed, source: {}", subprocedure_id, source))] + SubprocedureFailed { + subprocedure_id: ProcedureId, + source: Arc, + location: Location, + }, } pub type Result = std::result::Result; @@ -134,7 +141,7 @@ pub type Result = std::result::Result; impl ErrorExt for Error { fn status_code(&self) -> StatusCode { match self { - Error::External { source } + Error::External { source, .. } | Error::PutState { source, .. } | Error::DeleteStates { source, .. } | Error::ListState { source, .. } => source.status_code(), @@ -152,6 +159,8 @@ impl ErrorExt for Error { Error::ProcedureExec { source, .. } => source.status_code(), Error::StartRemoveOutdatedMetaTask { source, .. } | Error::StopRemoveOutdatedMetaTask { source, .. } => source.status_code(), + + Error::SubprocedureFailed { source, .. } => source.status_code(), } } diff --git a/src/table-procedure/src/alter.rs b/src/table-procedure/src/alter.rs index 3259448592..f96f99e9ac 100644 --- a/src/table-procedure/src/alter.rs +++ b/src/table-procedure/src/alter.rs @@ -16,6 +16,7 @@ use async_trait::async_trait; use catalog::{CatalogManagerRef, RenameTableRequest}; +use common_procedure::error::SubprocedureFailedSnafu; use common_procedure::{ Context, Error, LockKey, Procedure, ProcedureId, ProcedureManager, ProcedureState, ProcedureWithId, Result, Status, @@ -29,7 +30,7 @@ use table::requests::{AlterKind, AlterTableRequest}; use crate::error::{ AccessCatalogSnafu, CatalogNotFoundSnafu, DeserializeProcedureSnafu, SchemaNotFoundSnafu, - SerializeProcedureSnafu, SubprocedureFailedSnafu, TableExistsSnafu, TableNotFoundSnafu, + SerializeProcedureSnafu, TableExistsSnafu, TableNotFoundSnafu, }; /// Procedure to alter a table. diff --git a/src/table-procedure/src/create.rs b/src/table-procedure/src/create.rs index 6d65852ce6..6fb8da5e59 100644 --- a/src/table-procedure/src/create.rs +++ b/src/table-procedure/src/create.rs @@ -16,6 +16,7 @@ use async_trait::async_trait; use catalog::{CatalogManagerRef, RegisterTableRequest}; +use common_procedure::error::SubprocedureFailedSnafu; use common_procedure::{ Context, Error, LockKey, Procedure, ProcedureId, ProcedureManager, ProcedureState, ProcedureWithId, Result, Status, @@ -28,7 +29,7 @@ use table::requests::{CreateTableRequest, OpenTableRequest}; use crate::error::{ AccessCatalogSnafu, CatalogNotFoundSnafu, DeserializeProcedureSnafu, SchemaNotFoundSnafu, - SerializeProcedureSnafu, SubprocedureFailedSnafu, + SerializeProcedureSnafu, }; /// Procedure to create a table. diff --git a/src/table-procedure/src/drop.rs b/src/table-procedure/src/drop.rs index 2ceac194a4..9c436f6a9c 100644 --- a/src/table-procedure/src/drop.rs +++ b/src/table-procedure/src/drop.rs @@ -16,6 +16,7 @@ use async_trait::async_trait; use catalog::{CatalogManagerRef, DeregisterTableRequest}; +use common_procedure::error::SubprocedureFailedSnafu; use common_procedure::{ Context, Error, LockKey, Procedure, ProcedureId, ProcedureManager, ProcedureState, ProcedureWithId, Result, Status, @@ -27,8 +28,7 @@ use table::engine::{EngineContext, TableEngineProcedureRef, TableReference}; use table::requests::DropTableRequest; use crate::error::{ - AccessCatalogSnafu, DeserializeProcedureSnafu, SerializeProcedureSnafu, - SubprocedureFailedSnafu, TableNotFoundSnafu, + AccessCatalogSnafu, DeserializeProcedureSnafu, SerializeProcedureSnafu, TableNotFoundSnafu, }; /// Procedure to drop a table. diff --git a/src/table-procedure/src/error.rs b/src/table-procedure/src/error.rs index a38b4217c4..c4f02137e0 100644 --- a/src/table-procedure/src/error.rs +++ b/src/table-procedure/src/error.rs @@ -13,10 +13,8 @@ // limitations under the License. use std::any::Any; -use std::sync::Arc; use common_error::prelude::*; -use common_procedure::ProcedureId; use snafu::Location; #[derive(Debug, Snafu)] @@ -55,13 +53,6 @@ pub enum Error { #[snafu(display("Table {} not found", name))] TableNotFound { name: String }, - #[snafu(display("Subprocedure {} failed", subprocedure_id))] - SubprocedureFailed { - subprocedure_id: ProcedureId, - source: Arc, - location: Location, - }, - #[snafu(display("Table already exists: {}", name))] TableExists { name: String }, } @@ -74,7 +65,6 @@ impl ErrorExt for Error { match self { SerializeProcedure { .. } | DeserializeProcedure { .. } => StatusCode::Internal, - SubprocedureFailed { source, .. } => source.status_code(), InvalidRawSchema { source, .. } => source.status_code(), AccessCatalog { source } => source.status_code(), CatalogNotFound { .. } | SchemaNotFound { .. } | TableExists { .. } => {