@@ -876,20 +876,20 @@ impl QueryCoordinator {
876
876
let query_ctx = info_mut. query_ctx . clone ( ) ;
877
877
let request_server_exchanges = std:: mem:: take ( & mut self . statistics_exchanges ) ;
878
878
879
- if request_server_exchanges. len ( ) != 1 {
880
- return Err ( ErrorCode :: Internal (
881
- "Request server must less than 1 if is not request server." ,
882
- ) ) ;
879
+ if request_server_exchanges. len ( ) > 1 {
880
+ return Err ( ErrorCode :: Internal ( format ! (
881
+ "Request server exchanges must less than or equal to 1, but it's {}" ,
882
+ request_server_exchanges. len( )
883
+ ) ) ) ;
883
884
}
884
885
885
886
let ctx = query_ctx. clone ( ) ;
886
- let ( _, request_server_exchange) = request_server_exchanges. into_iter ( ) . next ( ) . unwrap ( ) ;
887
- let mut statistics_sender = StatisticsSender :: spawn (
888
- & query_id,
889
- ctx,
890
- request_server_exchange,
891
- executor. get_inner ( ) ,
892
- ) ;
887
+ let statistics_sender = request_server_exchanges
888
+ . into_iter ( )
889
+ . next ( )
890
+ . map ( |( _, exchange) | {
891
+ StatisticsSender :: spawn ( & query_id, ctx, exchange, executor. get_inner ( ) )
892
+ } ) ;
893
893
894
894
let span = if let Some ( parent) = SpanContext :: current_local_parent ( ) {
895
895
Span :: root ( "Distributed-Executor" , parent)
@@ -900,7 +900,9 @@ impl QueryCoordinator {
900
900
Thread :: named_spawn ( Some ( String :: from ( "Distributed-Executor" ) ) , move || {
901
901
let _g = span. set_local_parent ( ) ;
902
902
let error = executor. execute ( ) . err ( ) ;
903
- statistics_sender. shutdown ( error. clone ( ) ) ;
903
+ if let Some ( mut statistics_sender) = statistics_sender {
904
+ statistics_sender. shutdown ( error. clone ( ) ) ;
905
+ }
904
906
query_ctx
905
907
. get_exchange_manager ( )
906
908
. on_finished_query ( & query_id, error) ;
0 commit comments