1
0
mirror of https://github.com/actix/actix-extras.git synced 2024-11-24 07:53:00 +01:00

remove Backtrace from error

This commit is contained in:
Nikolay Kim 2019-03-27 09:31:07 -07:00
parent faa3ea8e5b
commit fb9c94c3e0
2 changed files with 1 additions and 49 deletions

View File

@ -55,7 +55,6 @@ actix-utils = "0.3.4"
actix-server-config = "0.1.0" actix-server-config = "0.1.0"
base64 = "0.10" base64 = "0.10"
backtrace = "0.3"
bitflags = "1.0" bitflags = "1.0"
bytes = "0.4" bytes = "0.4"
byteorder = "1.2" byteorder = "1.2"

View File

@ -7,7 +7,6 @@ use std::{fmt, io, result};
// use actix::MailboxError; // use actix::MailboxError;
use actix_utils::timeout::TimeoutError; use actix_utils::timeout::TimeoutError;
use backtrace::Backtrace;
#[cfg(feature = "cookies")] #[cfg(feature = "cookies")]
use cookie; use cookie;
use derive_more::{Display, From}; use derive_more::{Display, From};
@ -47,7 +46,6 @@ pub type Result<T, E = Error> = result::Result<T, E>;
/// `ResponseError` reference from it. /// `ResponseError` reference from it.
pub struct Error { pub struct Error {
cause: Box<ResponseError>, cause: Box<ResponseError>,
backtrace: Option<Backtrace>,
} }
impl Error { impl Error {
@ -56,18 +54,6 @@ impl Error {
self.cause.as_ref() self.cause.as_ref()
} }
/// Returns a reference to the Backtrace carried by this error, if it
/// carries one.
///
/// This uses the same `Backtrace` type that `failure` uses.
pub fn backtrace(&self) -> &Backtrace {
if let Some(bt) = self.cause.backtrace() {
bt
} else {
self.backtrace.as_ref().unwrap()
}
}
/// Converts error to a response instance and set error message as response body /// Converts error to a response instance and set error message as response body
pub fn response_with_message(self) -> Response { pub fn response_with_message(self) -> Response {
let message = format!("{}", self); let message = format!("{}", self);
@ -84,11 +70,6 @@ pub trait ResponseError: fmt::Debug + fmt::Display {
fn error_response(&self) -> Response { fn error_response(&self) -> Response {
Response::new(StatusCode::INTERNAL_SERVER_ERROR) Response::new(StatusCode::INTERNAL_SERVER_ERROR)
} }
/// Response
fn backtrace(&self) -> Option<&Backtrace> {
None
}
} }
impl fmt::Display for Error { impl fmt::Display for Error {
@ -99,16 +80,7 @@ impl fmt::Display for Error {
impl fmt::Debug for Error { impl fmt::Debug for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
if let Some(bt) = self.cause.backtrace() { write!(f, "{:?}\n", &self.cause)
write!(f, "{:?}\n\n{:?}", &self.cause, bt)
} else {
write!(
f,
"{:?}\n\n{:?}",
&self.cause,
self.backtrace.as_ref().unwrap()
)
}
} }
} }
@ -122,14 +94,8 @@ impl From<Error> for Response {
/// `Error` for any error that implements `ResponseError` /// `Error` for any error that implements `ResponseError`
impl<T: ResponseError + 'static> From<T> for Error { impl<T: ResponseError + 'static> From<T> for Error {
fn from(err: T) -> Error { fn from(err: T) -> Error {
let backtrace = if err.backtrace().is_none() {
Some(Backtrace::new())
} else {
None
};
Error { Error {
cause: Box::new(err), cause: Box::new(err),
backtrace,
} }
} }
} }
@ -412,7 +378,6 @@ impl ResponseError for ContentTypeError {
pub struct InternalError<T> { pub struct InternalError<T> {
cause: T, cause: T,
status: InternalErrorType, status: InternalErrorType,
backtrace: Backtrace,
} }
enum InternalErrorType { enum InternalErrorType {
@ -426,7 +391,6 @@ impl<T> InternalError<T> {
InternalError { InternalError {
cause, cause,
status: InternalErrorType::Status(status), status: InternalErrorType::Status(status),
backtrace: Backtrace::new(),
} }
} }
@ -435,7 +399,6 @@ impl<T> InternalError<T> {
InternalError { InternalError {
cause, cause,
status: InternalErrorType::Response(RefCell::new(Some(response))), status: InternalErrorType::Response(RefCell::new(Some(response))),
backtrace: Backtrace::new(),
} }
} }
} }
@ -462,10 +425,6 @@ impl<T> ResponseError for InternalError<T>
where where
T: fmt::Debug + fmt::Display + 'static, T: fmt::Debug + fmt::Display + 'static,
{ {
fn backtrace(&self) -> Option<&Backtrace> {
Some(&self.backtrace)
}
fn error_response(&self) -> Response { fn error_response(&self) -> Response {
match self.status { match self.status {
InternalErrorType::Status(st) => Response::new(st), InternalErrorType::Status(st) => Response::new(st),
@ -922,12 +881,6 @@ mod tests {
assert_eq!(format!("{}", e.as_response_error()), "IO error: other"); assert_eq!(format!("{}", e.as_response_error()), "IO error: other");
} }
#[test]
fn test_backtrace() {
let e = ErrorBadRequest("err");
let _ = e.backtrace();
}
#[test] #[test]
fn test_error_cause() { fn test_error_cause() {
let orig = io::Error::new(io::ErrorKind::Other, "other"); let orig = io::Error::new(io::ErrorKind::Other, "other");