@@ -14,6 +14,7 @@ use futures_util::lock::{Mutex, MutexGuard};
14
14
use futures_util:: select;
15
15
use futures_util:: FutureExt ;
16
16
use futures_util:: StreamExt ;
17
+ use log:: info;
17
18
use std:: fmt;
18
19
use std:: future:: Future ;
19
20
use std:: ops:: { Deref , DerefMut } ;
@@ -209,7 +210,19 @@ impl<M: Manager> Pool<M> {
209
210
&& self . 0 . state . num_open . load ( Ordering :: Relaxed ) > 0
210
211
&& internals. cleaner_ch . is_none ( )
211
212
{
212
- log:: debug!( "run connection cleaner" ) ;
213
+ let shared1 = Arc :: downgrade ( & self . 0 ) ;
214
+ let clean_rate = self . 0 . config . clean_rate ;
215
+ let ( cleaner_ch_sender, cleaner_ch) = mpsc:: channel ( 1 ) ;
216
+ internals. cleaner_ch = Some ( cleaner_ch_sender) ;
217
+ self . 0 . manager . spawn_task ( async move {
218
+ connection_cleaner ( shared1, cleaner_ch, clean_rate) . await ;
219
+ } ) ;
220
+ }
221
+ }
222
+
223
+ pub async fn clean_connections ( & self ) {
224
+ let mut internals = self . 0 . internals . lock ( ) . await ;
225
+ if self . 0 . state . num_open . load ( Ordering :: Relaxed ) > 0 && internals. cleaner_ch . is_none ( ) {
213
226
let shared1 = Arc :: downgrade ( & self . 0 ) ;
214
227
let clean_rate = self . 0 . config . clean_rate ;
215
228
let ( cleaner_ch_sender, cleaner_ch) = mpsc:: channel ( 1 ) ;
@@ -459,13 +472,10 @@ async fn clean_connection<M: Manager>(shared: &Weak<SharedPool<M>>) -> bool {
459
472
let shared = match shared. upgrade ( ) {
460
473
Some ( shared) => shared,
461
474
None => {
462
- log:: debug!( "Failed to clean connections" ) ;
463
475
return false ;
464
476
}
465
477
} ;
466
478
467
- log:: debug!( "Clean connections" ) ;
468
-
469
479
let mut internals = shared. internals . lock ( ) . await ;
470
480
if shared. state . num_open . load ( Ordering :: Relaxed ) == 0 || internals. config . max_lifetime . is_none ( )
471
481
{
@@ -477,10 +487,6 @@ async fn clean_connection<M: Manager>(shared: &Weak<SharedPool<M>>) -> bool {
477
487
let mut closing = vec ! [ ] ;
478
488
479
489
let mut i = 0 ;
480
- log:: debug!(
481
- "clean connections, idle conns {}" ,
482
- internals. free_conns. len( )
483
- ) ;
484
490
485
491
loop {
486
492
if i >= internals. free_conns . len ( ) {
0 commit comments