Skip to content

Commit c5921c7

Browse files
authored
chore: display source chain of reqwest::Error and bigger timeout. (#757)
* chore: display source chain of reqwest::Error. * chore: request with bigger timeout.
1 parent 3a54f6c commit c5921c7

2 files changed

Lines changed: 23 additions & 9 deletions

File tree

core/src/client.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@ impl APIClient {
411411
cookie_provider.set_cookies(&mut initial_cookies, &Url::parse("https://a.com").unwrap());
412412
let mut cli_builder = HttpClient::builder()
413413
.user_agent(ua)
414+
.connect_timeout(self.connect_timeout)
414415
.cookie_provider(Arc::new(cookie_provider))
415416
.pool_idle_timeout(Duration::from_secs(1));
416417
#[cfg(any(feature = "rustls", feature = "native-tls"))]
@@ -614,7 +615,10 @@ impl APIClient {
614615
}
615616
let mut builder = self.cli.post(endpoint.clone()).json(&req);
616617
builder = self.wrap_auth_or_session_token(builder)?;
617-
let request = builder.headers(headers.clone()).build()?;
618+
let request = builder
619+
.headers(headers.clone())
620+
.timeout(self.page_request_timeout)
621+
.build()?;
618622
let response = self
619623
.query_request_helper(request, true, true, true, RequestKind::QueryStart)
620624
.await?;
@@ -1003,7 +1007,7 @@ impl APIClient {
10031007
let builder = self.auth.wrap(builder)?;
10041008
let request = builder
10051009
.headers(headers.clone())
1006-
.timeout(self.connect_timeout)
1010+
.timeout(self.connect_timeout.saturating_add(Duration::from_secs(10)))
10071011
.build()?;
10081012
let response = self
10091013
.query_request_helper(request, true, false, true, RequestKind::Login)
@@ -1146,7 +1150,7 @@ impl APIClient {
11461150
.json(&body)
11471151
.headers(headers.clone())
11481152
.bearer_auth(session_token_info.refresh_token.clone())
1149-
.timeout(self.connect_timeout)
1153+
.timeout(self.connect_timeout.saturating_add(Duration::from_secs(10)))
11501154
.build()?;
11511155
let response = self
11521156
.query_request_helper(request, true, false, false, RequestKind::SessionRefresh)
@@ -1428,7 +1432,7 @@ impl Default for APIClient {
14281432
max_rows_in_buffer: None,
14291433
max_rows_per_page: None,
14301434
connect_timeout: Duration::from_secs(10),
1431-
page_request_timeout: Duration::from_secs(30),
1435+
page_request_timeout: Duration::from_secs(300),
14321436
tls_ca_file: None,
14331437
presign: Mutex::new(PresignMode::Auto),
14341438
route_hint: RouteHintGenerator::new(),

core/src/error.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -265,11 +265,21 @@ impl From<serde_json::Error> for Error {
265265
impl From<reqwest::Error> for Error {
266266
fn from(e: reqwest::Error) -> Self {
267267
let e = e.without_url();
268-
let source = e
269-
.source()
270-
.map(|s| format!(", source={}", s))
271-
.unwrap_or_default();
272-
Error::Request(format!("reqwest::Error: {}{}", e, source))
268+
let mut source_chain = String::new();
269+
let mut current = e.source();
270+
if current.is_some() {
271+
source_chain.push_str(", source_chain=");
272+
}
273+
let mut first = true;
274+
while let Some(source) = current {
275+
if !first {
276+
source_chain.push_str(" -> ");
277+
}
278+
first = false;
279+
source_chain.push_str(&source.to_string());
280+
current = source.source();
281+
}
282+
Error::Request(format!("reqwest::Error: {}{}", e, source_chain))
273283
}
274284
}
275285

0 commit comments

Comments
 (0)