]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl Fix runscript to always execute command after all job type.
authorEric Bollengier <eric@eb.homelinux.org>
Sat, 9 Dec 2006 13:54:30 +0000 (13:54 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Sat, 9 Dec 2006 13:54:30 +0000 (13:54 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3776 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/dird/admin.c
bacula/src/dird/backup.c
bacula/src/dird/job.c
bacula/src/dird/migrate.c
bacula/src/dird/protos.h
bacula/src/dird/restore.c
bacula/src/dird/verify.c
bacula/technotes-1.39

index f6a46b8a9569422bac14a54b786523ed1d2252c8..5ccbb80dc5d58388e5059f04483b2b6f7bc31ef2 100644 (file)
@@ -82,9 +82,8 @@ void admin_cleanup(JCR *jcr, int TermCode)
 
    Dmsg0(100, "Enter backup_cleanup()\n");
    memset(&mr, 0, sizeof(mr));
-   set_jcr_job_status(jcr, TermCode);
 
-   update_job_end_record(jcr);        /* update database */
+   update_job_end(jcr, TermCode);
 
    if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_WARNING, 0, _("Error getting job record for stats: %s"),
index 4cde534a677ba75c7c8df8f180b95a049eae6623..8df126a9f090ac1d953fef6f8545dddcba6b2d1d 100644 (file)
@@ -341,12 +341,10 @@ void backup_cleanup(JCR *jcr, int TermCode)
    utime_t RunTime;
 
    Dmsg2(100, "Enter backup_cleanup %d %c\n", TermCode, TermCode);
-   dequeue_messages(jcr);             /* display any queued messages */
    memset(&mr, 0, sizeof(mr));
    memset(&cr, 0, sizeof(cr));
-   set_jcr_job_status(jcr, TermCode);
 
-   update_job_end_record(jcr);        /* update database */
+   update_job_end(jcr, TermCode);
 
    if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_WARNING, 0, _("Error getting job record for stats: %s"),
index 0301534d9e605e6b64822a1baf0b14f2f7ebc162..028c437dff4f8e67a3bc804915fc198894816ea1 100644 (file)
@@ -219,6 +219,13 @@ bail_out:
    return false;
 }
 
+void update_job_end(JCR *jcr, int TermCode)
+{
+   dequeue_messages(jcr);             /* display any queued messages */
+   set_jcr_job_status(jcr, TermCode);
+   run_scripts(jcr, jcr->job->RunScripts, "AfterJob");
+   update_job_end_record(jcr);
+}
 
 /*
  * This is the engine called by jobq.c:jobq_add() when we were pulled
@@ -259,7 +266,7 @@ static void *job_thread(void *arg)
    run_scripts(jcr, jcr->job->RunScripts, "BeforeJob");
 
    if (job_canceled(jcr)) {
-      update_job_end_record(jcr);
+      update_job_end(jcr, jcr->JobStatus);
 
    } else {
       /*
@@ -322,8 +329,6 @@ static void *job_thread(void *arg)
          break;
       }
 
-      run_scripts(jcr, jcr->job->RunScripts, "AfterJob");
-
       /* Send off any queued messages */
       if (jcr->msg_queue && jcr->msg_queue->size() > 0) {
          dequeue_messages(jcr);
index bb6e46d4dfe05e50d3b7105af1b5e6cb9e1c1961..ee827237f15561b6ab2123ef5af065b81aa19b1e 100644 (file)
@@ -998,10 +998,8 @@ void migration_cleanup(JCR *jcr, int TermCode)
    POOL_MEM query(PM_MESSAGE);
 
    Dmsg2(100, "Enter migrate_cleanup %d %c\n", TermCode, TermCode);
-   dequeue_messages(jcr);             /* display any queued messages */
+   update_job_end(jcr, TermCode);
    memset(&mr, 0, sizeof(mr));
-   set_jcr_job_status(jcr, TermCode);
-   update_job_end_record(jcr);        /* update database */
 
    /* 
     * Check if we actually did something.  
@@ -1015,8 +1013,7 @@ void migration_cleanup(JCR *jcr, int TermCode)
       mig_jcr->jr.RealEndTime = 0; 
       mig_jcr->jr.PriorJobId = jcr->previous_jr.JobId;
 
-      set_jcr_job_status(mig_jcr, TermCode);
-      update_job_end_record(mig_jcr);
+      update_job_end(mig_jcr, TermCode);
      
       /* Update final items to set them to the previous job's values */
       Mmsg(query, "UPDATE Job SET StartTime='%s',EndTime='%s',"
index ac06432e7bf94d16f92fcc7f62fca0991c0d3836..ee7a4bd93cefd2b627d2de771174a2d50185d62b 100644 (file)
@@ -113,6 +113,7 @@ extern JobId_t run_job(JCR *jcr);
 extern bool cancel_job(UAContext *ua, JCR *jcr);
 extern void get_job_storage(USTORE *store, JOB *job, RUN *run);
 extern void init_jcr_job_record(JCR *jcr);
+extern void update_job_end(JCR *jcr, int TermCode);
 extern void copy_rwstorage(JCR *jcr, alist *storage, const char *where);
 extern void set_rwstorage(JCR *jcr, USTORE *store);
 extern void free_rwstorage(JCR *jcr);
index e0ed74cb062f4cadbcb533872fbcdcf743ce39f0..6f4057eba09251f49bf81ced29ce0b6253a6cf39 100644 (file)
@@ -226,16 +226,13 @@ void restore_cleanup(JCR *jcr, int TermCode)
    double kbps;
 
    Dmsg0(20, "In restore_cleanup\n");
-   dequeue_messages(jcr);             /* display any queued messages */
-   set_jcr_job_status(jcr, TermCode);
+   update_job_end(jcr, TermCode);
 
    if (jcr->unlink_bsr && jcr->RestoreBootstrap) {
       unlink(jcr->RestoreBootstrap);
       jcr->unlink_bsr = false;
    }
 
-   update_job_end_record(jcr);
-
    switch (TermCode) {
    case JS_Terminated:
       if (jcr->ExpectedFiles > jcr->jr.JobFiles) {
index bffc003766095a10c950077606e29675dcb8c33b..0997fb6fb42183f1122139a066267f46b2ecf577 100644 (file)
@@ -349,7 +349,6 @@ void verify_cleanup(JCR *jcr, int TermCode)
    const char *Name;
 
 // Dmsg1(100, "Enter verify_cleanup() TermCod=%d\n", TermCode);
-   dequeue_messages(jcr);             /* display any queued messages */
 
    Dmsg3(900, "JobLevel=%c Expected=%u JobFiles=%u\n", jcr->JobLevel,
       jcr->ExpectedFiles, jcr->JobFiles);
@@ -365,9 +364,9 @@ void verify_cleanup(JCR *jcr, int TermCode)
    }
 
    JobId = jcr->jr.JobId;
-   set_jcr_job_status(jcr, TermCode);
 
-   update_job_end_record(jcr);
+   update_job_end(jcr, TermCode);
+
    if (jcr->unlink_bsr && jcr->RestoreBootstrap) {
       unlink(jcr->RestoreBootstrap);
       jcr->unlink_bsr = false;
index a79fce0f21e90f4f5cd36adc4a3ff89cc2ff3714..02dec132c5d73285019dfd9edd341d6aa7ba8495 100644 (file)
@@ -1,6 +1,8 @@
               Technical notes on version 1.39  
 
 General:
+09Dec06
+ebl  Fix runscript to always execute command after all job type.
 08Dec06
 kes  Mark build-depkgs-mingw3 executable in configure process.
 kes  Update autoconf/config.h.in to include LOCALEDIR