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"),
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"),
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
run_scripts(jcr, jcr->job->RunScripts, "BeforeJob");
if (job_canceled(jcr)) {
- update_job_end_record(jcr);
+ update_job_end(jcr, jcr->JobStatus);
} else {
/*
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);
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.
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',"
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);
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) {
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);
}
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;
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