File tree Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change 1+ use crate :: errors:: datafusion_error:: DataFusionErrorProto ;
2+ use datafusion:: common:: internal_datafusion_err;
3+ use datafusion:: error:: DataFusionError ;
4+ use prost:: Message ;
5+
16mod arrow_error;
27mod datafusion_error;
38mod io_error;
49mod objectstore_error;
510mod parquet_error;
611mod parser_error;
712mod schema_error;
13+
14+ pub fn datafusion_error_to_tonic_status ( err : & DataFusionError ) -> tonic:: Status {
15+ let err = DataFusionErrorProto :: from_datafusion_error ( err) . encode_to_vec ( ) ;
16+ let status = tonic:: Status :: with_details ( tonic:: Code :: Internal , "DataFusionError" , err. into ( ) ) ;
17+ status
18+ }
19+
20+ pub fn tonic_status_to_datafusion_error ( status : & tonic:: Status ) -> Option < DataFusionError > {
21+ if status. code ( ) != tonic:: Code :: Internal {
22+ return None ;
23+ }
24+
25+ if status. message ( ) != "DataFusionError" {
26+ return None ;
27+ }
28+
29+ match DataFusionErrorProto :: decode ( status. details ( ) ) {
30+ Ok ( err_proto) => Some ( err_proto. to_datafusion_err ( ) ) ,
31+ Err ( err) => Some ( internal_datafusion_err ! (
32+ "Cannot decode DataFusionError: {err}"
33+ ) ) ,
34+ }
35+ }
You can’t perform that action at this time.
0 commit comments