@@ -17,6 +17,7 @@ use std::task::Poll;
17
17
use std:: time:: Instant ;
18
18
use std:: { cmp, io} ;
19
19
use tokio:: net;
20
+ use tokio:: sync:: Mutex as TokioMutex ;
20
21
21
22
lazy_static ! {
22
23
static ref CONNECTION_COUNT_MAP : Mutex <HashMap <Host , i64 >> = {
@@ -31,9 +32,9 @@ lazy_static! {
31
32
}
32
33
Mutex :: new( m)
33
34
} ;
34
- static ref LAST_TIME_META_DATA_FETCHED : Mutex <Instant > = {
35
+ static ref LAST_TIME_META_DATA_FETCHED : TokioMutex <Instant > = {
35
36
let m = Instant :: now( ) ;
36
- Mutex :: new( m)
37
+ TokioMutex :: new( m)
37
38
} ;
38
39
static ref HOST_INFO : Mutex <Vec <Host >> = {
39
40
let m = Vec :: new( ) ;
@@ -350,7 +351,7 @@ fn get_least_loaded_server(config: &Config) -> Option<Host> {
350
351
}
351
352
352
353
async fn check_and_refresh ( config : & Config ) -> bool {
353
- let mut refresh_time = LAST_TIME_META_DATA_FETCHED . lock ( ) . unwrap ( ) ;
354
+ let mut refresh_time = LAST_TIME_META_DATA_FETCHED . lock ( ) . await ;
354
355
let host_list = HOST_INFO . lock ( ) . unwrap ( ) . clone ( ) ;
355
356
if host_list. len ( ) == 0 {
356
357
info ! ( "Connecting to the server for the first time" ) ;
@@ -448,17 +449,18 @@ async fn refresh(client: Client, config: &Config) {
448
449
control_conn_host = socket_config. unwrap ( ) . hostname . unwrap ( ) ;
449
450
}
450
451
452
+ info ! ( "Executing query: `select * from yb_servers()` to fetch list of servers" ) ;
453
+ let rows = client
454
+ . query ( "select * from yb_servers()" , & [ ] )
455
+ . await
456
+ . unwrap ( ) ;
457
+
451
458
let mut host_list = HOST_INFO . lock ( ) . unwrap ( ) ;
452
459
let mut failed_host_list = FAILED_HOSTS . lock ( ) . unwrap ( ) ;
453
460
let mut placement_info_map = PLACEMENT_INFO_MAP . lock ( ) . unwrap ( ) ;
454
461
let mut public_host_map = PUBLIC_HOST_MAP . lock ( ) . unwrap ( ) ;
455
462
let mut host_to_port_map = HOST_TO_PORT_MAP . lock ( ) . unwrap ( ) ;
456
- info ! ( "Executing query: `select * from yb_servers()` to fetch list of servers" ) ;
457
- for row in client
458
- . query ( "select * from yb_servers()" , & [ ] )
459
- . await
460
- . unwrap ( )
461
- {
463
+ for row in rows {
462
464
let host_string: String = row. get ( "host" ) ;
463
465
let host = Host :: Tcp ( host_string. to_string ( ) ) ;
464
466
info ! ( "Received entry for host {:?}" , host) ;
0 commit comments