Skip to content

Commit aa28fa9

Browse files
authored
Accelerated Initialization: Concurrently warm up upstream servers and set timeout durations (#681)
1 parent e3b2978 commit aa28fa9

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/dns_client.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use std::{
88

99
use tokio::sync::RwLock;
1010

11+
use crate::third_ext::FutureJoinAllExt;
1112
use crate::{
1213
dns::DnsResponse,
1314
dns_conf::NameServerInfo,
@@ -219,9 +220,7 @@ impl DnsClientBuilder {
219220
}
220221
}
221222

222-
for s in server_groups.values() {
223-
s.warmup().await;
224-
}
223+
server_groups.values().map(|s| s.warmup()).join_all().await;
225224

226225
DnsClient {
227226
default: default_group_servers,
@@ -361,9 +360,10 @@ mod name_server_group {
361360

362361
impl NameServerGroup {
363362
pub async fn warmup(&self) {
364-
for server in self.servers.iter() {
365-
let _ = server.warmup().await;
366-
}
363+
let futures = self.servers.iter().map(|server| {
364+
tokio::time::timeout(std::time::Duration::from_secs(5), server.warmup())
365+
});
366+
futures.join_all().await;
367367
}
368368
#[inline]
369369
pub fn iter(&self) -> Iter<'_, Arc<NameServer>> {

0 commit comments

Comments
 (0)