Rework some error types
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
use crate::response;
|
||||
use crate::ServiceSharedResources;
|
||||
use daqbuf_err::thiserror;
|
||||
use dbconn::create_connection;
|
||||
use dbconn::worker::PgQueue;
|
||||
use futures_util::StreamExt;
|
||||
@@ -41,37 +40,38 @@ use serde::Serialize;
|
||||
use std::collections::BTreeMap;
|
||||
use url::Url;
|
||||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
#[cstm(name = "ChannelConfigError")]
|
||||
pub enum Error {
|
||||
NotFound(SfDbChannel),
|
||||
ConfigQuorum(#[from] nodenet::configquorum::Error),
|
||||
ConfigNode(#[from] nodenet::channelconfig::Error),
|
||||
Http(#[from] crate::Error),
|
||||
HttpCrate(#[from] http::Error),
|
||||
// TODO create dedicated error type for query parsing
|
||||
BadQuery(#[from] daqbuf_err::Error),
|
||||
MissingBackend,
|
||||
MissingScalarType,
|
||||
MissingShape,
|
||||
MissingShapeKind,
|
||||
MissingEdge,
|
||||
MissingTimerange,
|
||||
MissingChannelName,
|
||||
Uri(#[from] netpod::UriError),
|
||||
ChannelConfigQuery(daqbuf_err::Error),
|
||||
ExpectScyllaBackend,
|
||||
Pg(#[from] dbconn::pg::Error),
|
||||
Scylla(String),
|
||||
Join,
|
||||
OtherErr(daqbuf_err::Error),
|
||||
PgWorker(#[from] dbconn::worker::Error),
|
||||
Async(#[from] netpod::AsyncChannelError),
|
||||
ChannelConfig(#[from] dbconn::channelconfig::Error),
|
||||
Netpod(#[from] netpod::Error),
|
||||
ScyllaQuery(#[from] scyllaconn::scylla::transport::errors::QueryError),
|
||||
ScyllaTypeCheck(#[from] scyllaconn::scylla::deserialize::TypeCheckError),
|
||||
}
|
||||
autoerr::create_error_v1!(
|
||||
name(Error, "ChannelConfigError"),
|
||||
enum variants {
|
||||
NotFound(SfDbChannel),
|
||||
ConfigQuorum(#[from] nodenet::configquorum::Error),
|
||||
ConfigNode(#[from] nodenet::channelconfig::Error),
|
||||
Http(#[from] crate::Error),
|
||||
HttpCrate(#[from] http::Error),
|
||||
// TODO create dedicated error type for query parsing
|
||||
BadQuery(#[from] daqbuf_err::Error),
|
||||
MissingBackend,
|
||||
MissingScalarType,
|
||||
MissingShape,
|
||||
MissingShapeKind,
|
||||
MissingEdge,
|
||||
MissingTimerange,
|
||||
MissingChannelName,
|
||||
Uri(#[from] netpod::UriError),
|
||||
ChannelConfigQuery(daqbuf_err::Error),
|
||||
ExpectScyllaBackend,
|
||||
Pg(#[from] dbconn::pg::Error),
|
||||
Scylla(String),
|
||||
Join,
|
||||
OtherErr(daqbuf_err::Error),
|
||||
PgWorker(#[from] dbconn::worker::Error),
|
||||
Async(#[from] netpod::AsyncChannelError),
|
||||
ChannelConfig(#[from] dbconn::channelconfig::Error),
|
||||
Netpod(#[from] netpod::Error),
|
||||
ScyllaQuery(#[from] scyllaconn::scylla::transport::errors::QueryError),
|
||||
ScyllaTypeCheck(#[from] scyllaconn::scylla::deserialize::TypeCheckError),
|
||||
},
|
||||
);
|
||||
|
||||
fn other_err_error(e: daqbuf_err::Error) -> Error {
|
||||
Error::OtherErr(e)
|
||||
|
||||
@@ -17,8 +17,6 @@ pub mod settings;
|
||||
use crate::bodystream::response;
|
||||
use crate::err::Error;
|
||||
use daqbuf_err;
|
||||
use daqbuf_err::thiserror;
|
||||
use daqbuf_err::ThisError;
|
||||
use dbconn::worker::PgQueue;
|
||||
use dbconn::worker::PgWorker;
|
||||
use futures_util::Future;
|
||||
@@ -42,14 +40,11 @@ use netpod::status_board_init;
|
||||
use netpod::NodeConfigCached;
|
||||
use netpod::ReqCtx;
|
||||
use netpod::ServiceVersion;
|
||||
use netpod::APP_JSON;
|
||||
use panic::AssertUnwindSafe;
|
||||
use panic::UnwindSafe;
|
||||
use pin::Pin;
|
||||
use scyllaconn::worker::ScyllaQueue;
|
||||
use scyllaconn::worker::ScyllaWorker;
|
||||
use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
use std::net;
|
||||
use std::panic;
|
||||
use std::pin;
|
||||
@@ -61,25 +56,20 @@ use taskrun::tokio;
|
||||
use taskrun::tokio::net::TcpListener;
|
||||
use tracing::Instrument;
|
||||
|
||||
#[derive(Debug, ThisError, Serialize, Deserialize)]
|
||||
#[cstm(name = "Retrieval")]
|
||||
pub enum RetrievalError {
|
||||
Error(#[from] daqbuf_err::Error),
|
||||
Error2(#[from] crate::err::Error),
|
||||
TextError(String),
|
||||
#[serde(skip)]
|
||||
Hyper(#[from] hyper::Error),
|
||||
#[serde(skip)]
|
||||
Http(#[from] http::Error),
|
||||
#[serde(skip)]
|
||||
Serde(#[from] serde_json::Error),
|
||||
#[serde(skip)]
|
||||
Fmt(#[from] std::fmt::Error),
|
||||
#[serde(skip)]
|
||||
Url(#[from] url::ParseError),
|
||||
#[serde(skip)]
|
||||
Netpod(#[from] netpod::Error),
|
||||
}
|
||||
autoerr::create_error_v1!(
|
||||
name(RetrievalError, "Retrieval"),
|
||||
enum variants {
|
||||
Error(#[from] daqbuf_err::Error),
|
||||
Error2(#[from] crate::err::Error),
|
||||
TextError(String),
|
||||
Hyper(#[from] hyper::Error),
|
||||
Http(#[from] http::Error),
|
||||
Serde(#[from] serde_json::Error),
|
||||
Fmt(#[from] std::fmt::Error),
|
||||
Url(#[from] url::ParseError),
|
||||
Netpod(#[from] netpod::Error),
|
||||
},
|
||||
);
|
||||
|
||||
trait IntoBoxedError: std::error::Error {}
|
||||
impl IntoBoxedError for net::AddrParseError {}
|
||||
|
||||
@@ -189,8 +189,6 @@ async fn proxy_http_service_inner(
|
||||
}
|
||||
} else if let Some(h) = api4::StatusNodesRecursive::handler(&req) {
|
||||
h.handle(req, ctx, &proxy_config, service_version).await
|
||||
} else if path == "/api/4/backends" {
|
||||
Ok(backends(req, proxy_config).await?)
|
||||
} else if let Some(h) = api4::backend::BackendListHandler::handler(&req) {
|
||||
h.handle(req, ctx, &proxy_config).await
|
||||
} else if let Some(h) = api4::ChannelSearchAggHandler::handler(&req) {
|
||||
|
||||
Reference in New Issue
Block a user