]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/backup.c
Cleanup new timeout code for bconsole
[bacula/bacula] / bacula / src / dird / backup.c
index fddb4b6fa188da90044aa2cf9c27d0cdded2f0f4..80f11ab10883f47169014ee13992a8f5df822ba5 100644 (file)
@@ -131,41 +131,36 @@ static int accurate_list_handler(void *ctx, int num_fields, char **row)
 bool send_accurate_current_files(JCR *jcr)
 {
    POOL_MEM buf;
+   db_list_ctx jobids;
+   db_list_ctx nb;
 
    if (!jcr->accurate || job_canceled(jcr) || jcr->get_JobLevel()==L_FULL) {
       return true;
    }
-   POOLMEM *jobids = get_pool_memory(PM_FNAME);
+   db_accurate_get_jobids(jcr, jcr->db, &jcr->jr, &jobids);
 
-   db_accurate_get_jobids(jcr, jcr->db, &jcr->jr, jobids);
-
-   if (*jobids == 0) {
-      free_pool_memory(jobids);
+   if (jobids.count == 0) {
       Jmsg(jcr, M_FATAL, 0, _("Cannot find previous jobids.\n"));
       return false;
    }
-   Jmsg(jcr, M_INFO, 0, _("Sending Accurate information.\n"));
-
+   if (jcr->JobId) {            /* display the message only for real jobs */
+      Jmsg(jcr, M_INFO, 0, _("Sending Accurate information.\n"));
+   }
    /* to be able to allocate the right size for htable */
-   POOLMEM *nb = get_pool_memory(PM_FNAME);
-   *nb = 0;                           /* clear buffer */
-   Mmsg(buf, "SELECT sum(JobFiles) FROM Job WHERE JobId IN (%s)",jobids);
-   db_sql_query(jcr->db, buf.c_str(), db_get_int_handler, nb);
-   Dmsg2(200, "jobids=%s nb=%s\n", jobids, nb);
-   jcr->file_bsock->fsend("accurate files=%s\n", nb); 
+   Mmsg(buf, "SELECT sum(JobFiles) FROM Job WHERE JobId IN (%s)", jobids.list);
+   db_sql_query(jcr->db, buf.c_str(), db_list_handler, &nb);
+   Dmsg2(200, "jobids=%s nb=%s\n", jobids.list, nb.list);
+   jcr->file_bsock->fsend("accurate files=%s\n", nb.list); 
 
    if (!db_open_batch_connexion(jcr, jcr->db)) {
-      Jmsg0(jcr, M_FATAL, 0, "Can't get dedicate sql connexion");
+      Jmsg0(jcr, M_FATAL, 0, "Can't get batch sql connexion");
       return false;
    }
 
-   db_get_file_list(jcr, jcr->db_batch, jobids, accurate_list_handler, (void *)jcr);
+   db_get_file_list(jcr, jcr->db_batch, jobids.list, accurate_list_handler, (void *)jcr);
 
    /* TODO: close the batch connexion ? (can be used very soon) */
 
-   free_pool_memory(jobids);
-   free_pool_memory(nb);
-
    jcr->file_bsock->signal(BNET_EOD);
 
    return true;
@@ -349,6 +344,7 @@ int wait_for_job_termination(JCR *jcr, int timeout)
    BSOCK *fd = jcr->file_bsock;
    bool fd_ok = false;
    uint32_t JobFiles, JobErrors;
+   uint32_t JobWarnings = 0;
    uint64_t ReadBytes = 0;
    uint64_t JobBytes = 0;
    int VSS = 0;
@@ -404,6 +400,7 @@ int wait_for_job_termination(JCR *jcr, int timeout)
       jcr->JobErrors += JobErrors;       /* Keep total errors */
       jcr->ReadBytes = ReadBytes;
       jcr->JobBytes = JobBytes;
+      jcr->JobWarnings = JobWarnings;
       jcr->VSS = VSS;
       jcr->Encrypt = Encrypt;
    } else {
@@ -482,6 +479,9 @@ void backup_cleanup(JCR *jcr, int TermCode)
             term_msg = _("Backup OK");
          }
          break;
+      case JS_Warnings:
+         term_msg = _("Backup OK -- with warnings");
+         break;
       case JS_FatalError:
       case JS_ErrorTerminated:
          term_msg = _("*** Backup Error ***");