alamb opened a new issue, #3566: URL: https://github.com/apache/arrow-rs/issues/3566
**Is your feature request related to a problem or challenge? Please describe what you are trying to do.** In IOx (and in DataFusion) we often want to know what the root cause of an error is (e.g was it a bug or was it a resources exhausted). ArrowError can wrap other errors with `Arrow::External` (and DataFusion has something similar) but there is no easy way to get at the source of the error to walk the chain without knowing all the possible types that may be present I believe this is what https://doc.rust-lang.org/std/error/trait.Error.html#method.source is for I would like to be able to write something like this to walk the chain ```rust let mut root_error = Some(&e); loop { match root_error.source() { // walk the next level Some(source) => root_source = source, // at root (as much as we know) None => break, }; ``` However, ArrowError does not implement `source` yet Of course, all the errors in the chain need to implement this **Describe the solution you'd like** For ArrowError / FlightError that wrap other errors, implement `Error::source()` **Describe alternatives you've considered** See https://github.com/apache/arrow-datafusion/blob/dde23efed94704044822bcefe49c0af7f9260088/datafusion/common/src/error.rs#L361-L439 for what we need to do now in datafusion 🤮 cc @crepererum **Additional context** <!-- Add any other context or screenshots about the feature request here. --> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
