]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
cloud: Fix #7888 Display retry count on upload
authorNorbert Bizet <norbert.bizet@baculasystems.com>
Wed, 30 Jun 2021 08:50:38 +0000 (04:50 -0400)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:03:02 +0000 (09:03 +0100)
bacula/src/stored/cloud_transfer_mgr.c
bacula/src/stored/generic_driver.c
bacula/src/stored/s3_driver.c

index 2ea40d7e001b07e0734b5db64103245871b957fe..4f6a4e04ec5a4fa61e497eb9d933658d1b92a1e5 100644 (file)
@@ -207,45 +207,51 @@ bool transfer::is_canceled() const
 uint32_t transfer::append_status(POOL_MEM& msg)
 {
    POOLMEM *tmp_msg = get_pool_memory(PM_MESSAGE);
-   char ec[50], ed1[50];
+   char ec[50], ed1[50], ed2[50];
    uint32_t ret=0;
    static const char *state[]  = {"created",  "queued",  "process", "done", "error"};
 
    lock_guard lg(m_stat_mutex);
    if (m_state > TRANS_STATE_PROCESSED) {
       if (m_hash64[0]||m_hash64[1]||m_hash64[2]||m_hash64[3]||m_hash64[4]||m_hash64[5]||m_hash64[6]||m_hash64[7]) {
-         ret =  Mmsg(tmp_msg,_("%s/part.%-5d state=%-7s size=%sB duration=%ds hash=%02x%02x%02x%02x%02x%02x%02x%02x%s%s%s%s\n"),
+         ret =  Mmsg(tmp_msg,_("%s/part.%-5d state=%-7s %s%s%s%s size=%sB duration=%ds hash=%02x%02x%02x%02x%02x%02x%02x%02x%s%s\n"),
                      m_volume_name, m_part,
                      state[m_state],
+                     (m_retry != 0)?"retry=":"",
+                     (m_retry != 0)?edit_uint64(m_retry, ed1):"",
+                     (m_retry != 0)?"/":"",
+                     (m_retry != 0)?edit_uint64(m_driver->max_upload_retries, ed2):"",
                      edit_uint64_with_suffix(m_stat_size, ec),
                      m_stat_duration/ONE_SEC,
                      m_hash64[0],m_hash64[1],m_hash64[2],m_hash64[3],m_hash64[4],m_hash64[5],m_hash64[6],m_hash64[7],
                      (strlen(m_message) != 0)?" msg=":"",
-                     (strlen(m_message) != 0)?m_message:"",
-                     (m_retry > 1)?" retry=":"",
-                     (m_retry > 1)?edit_uint64(m_retry, ed1):"");
+                     (strlen(m_message) != 0)?m_message:"");
       } else {
-         ret =  Mmsg(tmp_msg,_("%s/part.%-5d state=%-7s size=%sB duration=%ds%s%s%s%s\n"),
+         ret =  Mmsg(tmp_msg,_("%s/part.%-5d state=%-7s %s%s%s%s size=%sB duration=%ds%s%s\n"),
                      m_volume_name, m_part,
                      state[m_state],
+                     (m_retry != 0)?"retry=":"",
+                     (m_retry != 0)?edit_uint64(m_retry, ed1):"",
+                     (m_retry != 0)?"/":"",
+                     (m_retry != 0)?edit_uint64(m_driver->max_upload_retries, ed2):"",
                      edit_uint64_with_suffix(m_stat_size, ec),
                      m_stat_duration/ONE_SEC,
                      (strlen(m_message) != 0)?" msg=":"",
-                     (strlen(m_message) != 0)?m_message:"",
-                     (m_retry > 1)?" retry=":"",
-                     (m_retry > 1)?edit_uint64(m_retry, ed1):"");
+                     (strlen(m_message) != 0)?m_message:"");
       }
       pm_strcat(msg, tmp_msg);
    } else {
-      ret = Mmsg(tmp_msg,_("%s/part.%-5d state=%-7s size=%sB eta=%ds%s%s%s%s\n"),
+      ret = Mmsg(tmp_msg,_("%s/part.%-5d state=%-7s %s%s%s%s size=%sB eta=%ds%s%s\n"),
                   m_volume_name, m_part,
                   state[m_state],
+                  (m_retry != 0)?"retry=":"",
+                  (m_retry != 0)?edit_uint64(m_retry, ed1):"",
+                  (m_retry != 0)?"/":"",
+                  (m_retry != 0)?edit_uint64(m_driver->max_upload_retries, ed2):"",
                   edit_uint64_with_suffix(m_stat_size, ec),
                   m_stat_eta/ONE_SEC,
                   (strlen(m_message) != 0)?" msg=":"",
-                  (strlen(m_message) != 0)?m_message:"",
-                  (m_retry > 1)?" retry=":"",
-                  (m_retry > 1)?edit_uint64(m_retry, ed1):"");
+                  (strlen(m_message) != 0)?m_message:"");
       pm_strcat(msg, tmp_msg);
    }
    free_pool_memory(tmp_msg);
index f977e7983260ebdef07de1b9102815d58a4e48ec..c76e4f685841a9dde371730bd172503804fd98b9 100644 (file)
@@ -661,6 +661,9 @@ bool generic_driver::copy_cache_part_to_cloud(transfer *xfer)
             call_fct("delete", xfer->m_volume_name, xfer->m_part, NULL, NULL, &ccb, xfer->m_message, NULL);
          }
          ret=call_fct("upload",xfer->m_volume_name, xfer->m_part, &rcb, &wcb, &ccb, xfer->m_message, NULL);
+         if (ret!=0) {
+            xfer->inc_retry();
+         }
          --retry;
       }
 
@@ -697,6 +700,10 @@ bool generic_driver::copy_cache_part_to_cloud(transfer *xfer)
             call_fct("delete", xfer->m_volume_name, xfer->m_part, NULL, NULL, &ccb, xfer->m_message, NULL);
          }
          ret=call_fct("upload",xfer->m_volume_name, xfer->m_part, &rcb, NULL, &ccb, xfer->m_message, xfer->m_cache_fname);
+         if (ret!=0) {
+            xfer->inc_retry();
+         }
+
          --retry;
       }
       if (getenv("GENERATE_CLOUD_HASH") && (ret==0)) {
index 71a9afcc62c4f440aebe75d3f629803c31756aee..b79666bc3a02ff294176b045aded1a9a3c5a16db 100644 (file)
@@ -776,9 +776,11 @@ bool s3_driver::copy_cache_part_to_cloud(transfer *xfer)
    S3Status status = S3StatusOK;
    do {
       /* when the driver decide to retry, it must reset the processed size */
-      xfer->inc_retry();
       xfer->reset_processed_size();
       status = put_object(xfer, xfer->m_cache_fname, cloud_fname);
+      if (status != S3StatusOK) {
+         xfer->inc_retry();
+      }
       --retry;
    } while (retry_put_object(status, retry) && (retry>0));
    free_pool_memory(cloud_fname);