This is an automated email from the ASF dual-hosted git repository.

tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/master by this push:
     new 78735002d9 ObjectStore: make error msg thrown from retry more detailed 
(#5012)
78735002d9 is described below

commit 78735002d99eb0212166924948f95554c4ac2866
Author: kamille <[email protected]>
AuthorDate: Thu Nov 2 00:01:39 2023 +0800

    ObjectStore: make error msg thrown from retry more detailed (#5012)
    
    * optimize error msg for better debugging.
    
    * fix unit test.
    
    * fix fmt.
---
 object_store/src/client/retry.rs | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/object_store/src/client/retry.rs b/object_store/src/client/retry.rs
index 789103c0f7..08b9a74e17 100644
--- a/object_store/src/client/retry.rs
+++ b/object_store/src/client/retry.rs
@@ -39,9 +39,12 @@ pub enum Error {
         body: Option<String>,
     },
 
-    #[snafu(display("Error after {retries} retries: {source}"))]
+    #[snafu(display("Error after {retries} retries in {elapsed:?}, 
max_retries:{max_retries}, retry_timeout:{retry_timeout:?}, source:{source}"))]
     Reqwest {
         retries: usize,
+        max_retries: usize,
+        elapsed: Duration,
+        retry_timeout: Duration,
         source: reqwest::Error,
     },
 }
@@ -198,7 +201,6 @@ impl RetryExt for reqwest::RequestBuilder {
                         }
                         Err(e) => {
                             let status = r.status();
-
                             if retries == max_retries
                                 || now.elapsed() > retry_timeout
                                 || !status.is_server_error() {
@@ -214,12 +216,18 @@ impl RetryExt for reqwest::RequestBuilder {
                                         Err(e) => {
                                             Error::Reqwest {
                                                 retries,
+                                                max_retries,
+                                                elapsed: now.elapsed(),
+                                                retry_timeout,
                                                 source: e,
                                             }
                                         }
                                     }
                                     false => Error::Reqwest {
                                         retries,
+                                        max_retries,
+                                        elapsed: now.elapsed(),
+                                        retry_timeout,
                                         source: e,
                                     }
                                 });
@@ -248,6 +256,9 @@ impl RetryExt for reqwest::RequestBuilder {
 
                             return Err(Error::Reqwest {
                                 retries,
+                                max_retries,
+                                elapsed: now.elapsed(),
+                                retry_timeout,
                                 source: e,
                             })
                         }
@@ -408,9 +419,8 @@ mod tests {
 
         let e = do_request().await.unwrap_err().to_string();
         assert!(
-            e.starts_with(
-                "Error after 2 retries: HTTP status server error (502 Bad 
Gateway) for url"
-            ),
+            e.contains("Error after 2 retries in") && 
+            e.contains("max_retries:2, retry_timeout:1000s, source:HTTP status 
server error (502 Bad Gateway) for url"),
             "{e}"
         );
 
@@ -425,7 +435,10 @@ mod tests {
         }
         let e = do_request().await.unwrap_err().to_string();
         assert!(
-            e.starts_with("Error after 2 retries: error sending request for 
url"),
+            e.contains("Error after 2 retries in")
+                && e.contains(
+                    "max_retries:2, retry_timeout:1000s, source:error sending 
request for url"
+                ),
             "{e}"
         );
 

Reply via email to