|
15 | 15 | use std::any::Any; |
16 | 16 |
|
17 | 17 | use common_error::prelude::*; |
| 18 | +use common_procedure::ProcedureId; |
18 | 19 | use common_recordbatch::error::Error as RecordBatchError; |
19 | 20 | use datafusion::parquet; |
20 | 21 | use datatypes::prelude::ConcreteDataType; |
@@ -394,6 +395,31 @@ pub enum Error { |
394 | 395 | #[snafu(backtrace)] |
395 | 396 | source: table::error::Error, |
396 | 397 | }, |
| 398 | + |
| 399 | + #[snafu(display("Failed to recover procedure, source: {}", source))] |
| 400 | + RecoverProcedure { |
| 401 | + #[snafu(backtrace)] |
| 402 | + source: common_procedure::error::Error, |
| 403 | + }, |
| 404 | + |
| 405 | + #[snafu(display("Failed to submit procedure, source: {}", source))] |
| 406 | + SubmitProcedure { |
| 407 | + #[snafu(backtrace)] |
| 408 | + source: common_procedure::error::Error, |
| 409 | + }, |
| 410 | + |
| 411 | + #[snafu(display("Failed to wait procedure done, source: {}", source))] |
| 412 | + WaitProcedure { |
| 413 | + source: tokio::sync::watch::error::RecvError, |
| 414 | + backtrace: Backtrace, |
| 415 | + }, |
| 416 | + |
| 417 | + // TODO(yingwen): Use procedure's error. |
| 418 | + #[snafu(display("Failed to execute procedure, procedure_id: {}", procedure_id))] |
| 419 | + ProcedureExec { |
| 420 | + procedure_id: ProcedureId, |
| 421 | + backtrace: Backtrace, |
| 422 | + }, |
397 | 423 | } |
398 | 424 |
|
399 | 425 | pub type Result<T> = std::result::Result<T, Error>; |
@@ -470,6 +496,10 @@ impl ErrorExt for Error { |
470 | 496 | CopyTable { source, .. } => source.status_code(), |
471 | 497 | TableScanExec { source, .. } => source.status_code(), |
472 | 498 | UnrecognizedTableOption { .. } => StatusCode::InvalidArguments, |
| 499 | + RecoverProcedure { source, .. } | SubmitProcedure { source, .. } => { |
| 500 | + source.status_code() |
| 501 | + } |
| 502 | + WaitProcedure { .. } | ProcedureExec { .. } => StatusCode::Internal, |
473 | 503 | } |
474 | 504 | } |
475 | 505 |
|
|
0 commit comments