@@ -2,7 +2,7 @@ use std::{collections::HashMap, ops::RangeInclusive, time::Duration};
22
33use ahash:: RandomState ;
44use alloy:: primitives:: { BlockHash , BlockNumber } ;
5- use arrow:: { datatypes:: Schema , error :: ArrowError } ;
5+ use arrow:: datatypes:: Schema ;
66use arrow_flight:: {
77 decode:: DecodedPayload , error:: FlightError , flight_service_client:: FlightServiceClient ,
88 sql:: client:: FlightSqlServiceClient ,
@@ -103,9 +103,9 @@ impl Client for FlightClient {
103103 let flight_info = raw_client
104104 . execute ( query, TXN_ID )
105105 . await
106- . map_err ( Error :: Service ) ?;
106+ . map_err ( Error :: service ) ?;
107107
108- flight_info. try_decode_schema ( ) . map_err ( Error :: Service )
108+ flight_info. try_decode_schema ( ) . map_err ( Error :: service )
109109 } )
110110 }
111111
@@ -163,14 +163,14 @@ impl Client for FlightClient {
163163 let flight_info = raw_client
164164 . execute( query, TXN_ID )
165165 . await
166- . map_err( Error :: Service ) ?;
166+ . map_err( Error :: service ) ?;
167167
168168 for ( endpoint_index, endpoint) in flight_info. endpoint. into_iter( ) . enumerate( ) {
169169 let Some ( ticket) = endpoint. ticket else {
170170 continue ;
171171 } ;
172172
173- let mut stream = raw_client. do_get( ticket) . await . map_err( Error :: Service ) ?. into_inner( ) ;
173+ let mut stream = raw_client. do_get( ticket) . await . map_err( Error :: service ) ?. into_inner( ) ;
174174 let mut batch_index = 0u32 ;
175175 let mut prev_block_ranges = prev_block_ranges. clone( ) ;
176176
@@ -232,12 +232,18 @@ pub enum Error {
232232 Connection ( #[ source] tonic:: transport:: Error ) ,
233233
234234 #[ error( "service failed: {0:#}" ) ]
235- Service ( #[ source] ArrowError ) ,
235+ Service ( #[ source] Box < dyn std :: error :: Error + Sync + Send > ) ,
236236
237237 #[ error( "stream failed: {0:#}" ) ]
238238 Stream ( #[ source] FlightError ) ,
239239}
240240
241+ impl Error {
242+ pub fn service < T : std:: error:: Error + Sync + Send + ' static > ( e : T ) -> Self {
243+ Self :: Service ( Box :: new ( e) )
244+ }
245+ }
246+
241247impl error:: IsDeterministic for Error {
242248 fn is_deterministic ( & self ) -> bool {
243249 let msg = match self {
0 commit comments