@@ -25,7 +25,9 @@ use arrow_flight::{FlightDescriptor, FlightEndpoint, FlightInfo, Ticket};
2525use datafusion:: logical_expr:: LogicalPlan ;
2626use datafusion:: sql:: parser:: DFParser ;
2727use datafusion_app:: local:: ExecutionContext ;
28+ use datafusion_app:: observability:: ObservabilityRequestDetails ;
2829use futures:: { StreamExt , TryStreamExt } ;
30+ use jiff:: Timestamp ;
2931use log:: { debug, error, info} ;
3032use metrics:: { counter, histogram} ;
3133use prost:: Message ;
@@ -60,12 +62,11 @@ impl FlightSqlServiceImpl {
6062
6163 async fn get_flight_info_statement_handler (
6264 & self ,
63- query : CommandStatementQuery ,
65+ query : String ,
6466 request : Request < FlightDescriptor > ,
6567 ) -> Result < Response < FlightInfo > , Status > {
6668 info ! ( "get_flight_info_statement query: {:?}" , query) ;
6769 debug ! ( "get_flight_info_statement request: {:?}" , request) ;
68- let CommandStatementQuery { query, .. } = query;
6970 let dialect = datafusion:: sql:: sqlparser:: dialect:: GenericDialect { } ;
7071 match DFParser :: parse_sql_with_dialect ( & query, & dialect) {
7172 Ok ( statements) => {
@@ -192,11 +193,26 @@ impl FlightSqlService for FlightSqlServiceImpl {
192193 request : Request < FlightDescriptor > ,
193194 ) -> Result < Response < FlightInfo > , Status > {
194195 counter ! ( "requests" , "endpoint" => "get_flight_info" ) . increment ( 1 ) ;
195- let start = Instant :: now ( ) ;
196- let res = self . get_flight_info_statement_handler ( query, request) . await ;
197- let duration = start. elapsed ( ) ;
198- histogram ! ( "get_flight_info_latency_ms" ) . record ( duration. as_millis ( ) as f64 ) ;
199- res
196+ let start = Timestamp :: now ( ) ;
197+ let CommandStatementQuery { query, .. } = query;
198+ let res = self
199+ . get_flight_info_statement_handler ( query. clone ( ) , request)
200+ . await ?;
201+ let duration = Timestamp :: now ( ) - start;
202+ let headers = res. metadata ( ) ;
203+ println ! ( "HEADAERS: {headers:?}" ) ;
204+
205+ let ctx = self . execution . session_ctx ( ) ;
206+ // let req = ObservabilityRequestDetails {
207+ // path: "GetFlightInfo".to_string(),
208+ // sql: query,
209+ // rows: None,
210+ // start_ms: start.as_millisecond(),
211+ // duration_ms: duration.get_milliseconds(),
212+ // };
213+ // self.execution.observability().try_record_request(ctx, req);
214+ histogram ! ( "get_flight_info_latency_ms" ) . record ( duration. get_milliseconds ( ) as f64 ) ;
215+ Ok ( res)
200216 }
201217
202218 async fn do_get_statement (
0 commit comments