From 5daa48189a058bfdb68c5ea3f44a33064fbae5c1 Mon Sep 17 00:00:00 2001 From: Marco van Wieringen Date: Wed, 9 Sep 2015 10:27:32 +0200 Subject: [PATCH] Some fixes to the SD Job Status handling. - Make JS_FatalError a separate error string. - JS_FatalError for a SD Job means in essence the controlling Job also should end in JS_FatalError. --- src/dird/getmsg.c | 26 +++++++++++++++++++++----- src/lib/util.c | 3 ++- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/dird/getmsg.c b/src/dird/getmsg.c index 066ceea8d66..a5f0d98eb97 100644 --- a/src/dird/getmsg.c +++ b/src/dird/getmsg.c @@ -65,9 +65,13 @@ static char OK_msg[] = "1000 OK\n"; static void set_jcr_sd_job_status(JCR *jcr, int SDJobStatus) { - bool set_waittime=false; + bool set_waittime = false; + Dmsg2(800, "set_jcr_sd_job_status(%s, %c)\n", jcr->Job, SDJobStatus); - /* if wait state is new, we keep current time for watchdog MaxWaitTime */ + + /* + * If wait state is new, we keep current time for watchdog MaxWaitTime + */ switch (SDJobStatus) { case JS_WaitMedia: case JS_WaitMount: @@ -82,15 +86,27 @@ static void set_jcr_sd_job_status(JCR *jcr, int SDJobStatus) } if (set_waittime) { - /* set it before JobStatus */ + /* + * Set it before JobStatus + */ Dmsg0(800, "Setting wait_time\n"); jcr->wait_time = time(NULL); } jcr->SDJobStatus = SDJobStatus; - if (jcr->SDJobStatus == JS_Incomplete) { + + /* + * Some SD Job status setting are propagated to the controlling Job. + */ + switch (jcr->SDJobStatus) { + case JS_Incomplete: jcr->setJobStatus(JS_Incomplete); + break; + case JS_FatalError: + jcr->setJobStatus(JS_FatalError); + break; + default: + break; } - } /* diff --git a/src/lib/util.c b/src/lib/util.c index 4e62a83860f..f3420f82637 100644 --- a/src/lib/util.c +++ b/src/lib/util.c @@ -182,6 +182,8 @@ void jobstatus_to_ascii(int JobStatus, char *msg, int maxlen) jobstat = _("Error: incomplete job"); break; case JS_FatalError: + jobstat = _("Fatal Error"); + break; case JS_ErrorTerminated: jobstat = _("Error"); break; @@ -239,7 +241,6 @@ void jobstatus_to_ascii(int JobStatus, char *msg, int maxlen) case JS_AttrInserting: jobstat = _("Dir inserting Attributes"); break; - default: if (JobStatus == 0) { buf[0] = 0;