@@ -2,11 +2,14 @@ use arrow_array::RecordBatch;
22use arrow_flight:: flight_service_server:: FlightServiceServer ;
33use arrow_flight:: PollInfo ;
44use arrow_schema:: { ArrowError , Schema } ;
5+ use arrow_select:: concat:: concat_batches;
56use chrono:: Utc ;
7+ use crossterm:: event;
68use datafusion:: common:: tree_node:: TreeNode ;
79use std:: net:: SocketAddr ;
810use std:: sync:: Arc ;
911use std:: time:: Instant ;
12+ use tonic:: codec:: CompressionEncoding ;
1013
1114use futures_util:: { Future , TryFutureExt } ;
1215
@@ -42,7 +45,7 @@ use crate::rbac::Users;
4245const L_CURLY : char = '{' ;
4346const R_CURLY : char = '}' ;
4447
45- #[ derive( Clone ) ]
48+ #[ derive( Clone , Debug ) ]
4649pub struct AirServiceImpl { }
4750
4851#[ tonic:: async_trait]
@@ -158,7 +161,7 @@ impl FlightService for AirServiceImpl {
158161
159162 let time_delta = query. end - Utc :: now ( ) ;
160163
161- let events = if CONFIG . parseable . mode == Mode :: Query && time_delta. num_seconds ( ) < 1 {
164+ let events = if CONFIG . parseable . mode == Mode :: Query && time_delta. num_seconds ( ) < 2 {
162165 let sql = format ! (
163166 "{}\" query\" : \" select * from {}\" {}" ,
164167 L_CURLY , & stream_name, R_CURLY
@@ -172,6 +175,16 @@ impl FlightService for AirServiceImpl {
172175 let mut batches = run_do_get_rpc ( im, sql. clone ( ) ) . await ?;
173176 minute_result. append ( & mut batches) ;
174177 }
178+ let mr = minute_result. iter ( ) . map ( |rb| rb) . collect :: < Vec < _ > > ( ) ;
179+ let schema = STREAM_INFO
180+ . schema ( & stream_name)
181+ . map_err ( |err| Status :: failed_precondition ( format ! ( "Metadata Error: {}" , err) ) ) ?;
182+ let rb = concat_batches ( & schema, mr)
183+ . map_err ( |err| Status :: failed_precondition ( format ! ( "ArrowError: {}" , err) ) ) ?;
184+
185+ let event = push_logs_unchecked ( rb, & stream_name)
186+ . await
187+ . map_err ( |err| Status :: internal ( err. to_string ( ) ) ) ?;
175188 let mut events = vec ! [ ] ;
176189 for batch in minute_result {
177190 events. push (
@@ -180,7 +193,7 @@ impl FlightService for AirServiceImpl {
180193 . map_err ( |err| Status :: internal ( err. to_string ( ) ) ) ?,
181194 ) ;
182195 }
183- Some ( events )
196+ Some ( event )
184197 } else {
185198 None
186199 } ;
@@ -220,9 +233,10 @@ impl FlightService for AirServiceImpl {
220233 }
221234 let output = futures:: stream:: iter ( flights. into_iter ( ) . map ( Ok ) ) ;
222235 if let Some ( events) = events {
223- for event in events {
224- event. clear ( & stream_name) ;
225- }
236+ events. clear ( & stream_name) ;
237+ // for event in events {
238+ // event.clear(&stream_name);
239+ // }
226240 }
227241
228242 let time = time. elapsed ( ) . as_secs_f64 ( ) ;
@@ -280,7 +294,12 @@ pub fn server() -> impl Future<Output = Result<(), Box<dyn std::error::Error + S
280294
281295 let service = AirServiceImpl { } ;
282296
283- let svc = FlightServiceServer :: new ( service) ;
297+ let svc = FlightServiceServer :: new ( service)
298+ . max_encoding_message_size ( usize:: MAX )
299+ . max_decoding_message_size ( usize:: MAX )
300+ . send_compressed ( CompressionEncoding :: Gzip ) ;
301+
302+ dbg ! ( & svc) ;
284303
285304 let cors = cross_origin_config ( ) ;
286305
@@ -314,6 +333,7 @@ pub fn server() -> impl Future<Output = Result<(), Box<dyn std::error::Error + S
314333 } ;
315334
316335 server
336+ . max_frame_size ( 16 * 1024 * 1024 - 2 )
317337 . accept_http1 ( true )
318338 . layer ( cors)
319339 . layer ( GrpcWebLayer :: new ( ) )
@@ -322,6 +342,7 @@ pub fn server() -> impl Future<Output = Result<(), Box<dyn std::error::Error + S
322342 . map_err ( err_map_fn)
323343 }
324344 None => Server :: builder ( )
345+ . max_frame_size ( 16 * 1024 * 1024 - 2 )
325346 . accept_http1 ( true )
326347 . layer ( cors)
327348 . layer ( GrpcWebLayer :: new ( ) )
0 commit comments