@@ -24,7 +24,7 @@ use std::time::SystemTime;
2424use chrono:: SecondsFormat ;
2525use databend_common_base:: JoinHandle ;
2626use databend_common_base:: base:: GlobalInstance ;
27- use databend_common_base:: runtime:: GlobalIORuntime ;
27+ use databend_common_base:: runtime:: GlobalControlRuntime ;
2828use databend_common_config:: InnerConfig ;
2929use databend_common_exception:: ErrorCode ;
3030use databend_common_exception:: Result ;
@@ -161,34 +161,36 @@ impl HttpQueryManager {
161161 // it may cannot destroy with final or kill when we hold ref of Arc<HttpQuery>
162162 let http_query_weak = Arc :: downgrade ( & query) ;
163163
164- GlobalIORuntime :: instance ( ) . spawn ( async move {
165- loop {
166- let expire_res = match http_query_weak. upgrade ( ) {
167- None => {
168- break ;
169- }
170- Some ( query) => query. check_timeout ( ) . await ,
171- } ;
164+ GlobalControlRuntime :: instance ( )
165+ . runtime ( )
166+ . spawn ( async move {
167+ loop {
168+ let expire_res = match http_query_weak. upgrade ( ) {
169+ None => {
170+ break ;
171+ }
172+ Some ( query) => query. check_timeout ( ) . await ,
173+ } ;
172174
173- match expire_res {
174- TimeoutResult :: TimedOut => {
175- _ = self_clone
176- . close_query ( & query_id_clone, CloseReason :: TimedOut , & None , false )
177- . await
178- . ok ( ) ;
179- }
180- TimeoutResult :: Sleep ( t) => {
181- sleep ( t) . await ;
182- }
183- TimeoutResult :: Remove => {
184- let mut queries = self_clone. queries . write ( ) ;
185- queries. remove ( & query_id_clone) ;
186- log:: info!( "Query {query_id_clone} removed" ) ;
187- break ;
175+ match expire_res {
176+ TimeoutResult :: TimedOut => {
177+ _ = self_clone
178+ . close_query ( & query_id_clone, CloseReason :: TimedOut , & None , false )
179+ . await
180+ . ok ( ) ;
181+ }
182+ TimeoutResult :: Sleep ( t) => {
183+ sleep ( t) . await ;
184+ }
185+ TimeoutResult :: Remove => {
186+ let mut queries = self_clone. queries . write ( ) ;
187+ queries. remove ( & query_id_clone) ;
188+ log:: info!( "Query {query_id_clone} removed" ) ;
189+ break ;
190+ }
188191 }
189192 }
190- }
191- } ) ;
193+ } ) ;
192194 Ok ( query)
193195 }
194196
@@ -230,16 +232,18 @@ impl HttpQueryManager {
230232 let deleter = {
231233 let self_clone = self . clone ( ) ;
232234 let last_query_id_clone = last_query_id. clone ( ) ;
233- GlobalIORuntime :: instance ( ) . spawn ( async move {
234- sleep ( Duration :: from_secs ( timeout_secs) ) . await ;
235- if self_clone. get_txn ( & last_query_id_clone) . is_some ( ) {
236- log:: info!(
237- "Transaction timed out after {} seconds, last_query_id = {}" ,
238- timeout_secs,
239- last_query_id_clone
240- ) ;
241- }
242- } )
235+ GlobalControlRuntime :: instance ( )
236+ . runtime ( )
237+ . spawn ( async move {
238+ sleep ( Duration :: from_secs ( timeout_secs) ) . await ;
239+ if self_clone. get_txn ( & last_query_id_clone) . is_some ( ) {
240+ log:: info!(
241+ "Transaction timed out after {} seconds, last_query_id = {}" ,
242+ timeout_secs,
243+ last_query_id_clone
244+ ) ;
245+ }
246+ } )
243247 } ;
244248 txn_managers. insert ( last_query_id, ( txn_mgr, deleter) ) ;
245249 }
0 commit comments