static char jobcmd[] = "JobId=%s job=%s job_name=%s client_name=%s "
"type=%d level=%d FileSet=%s NoAttr=%d SpoolAttr=%d FileSetMD5=%s "
"SpoolData=%d WritePartAfterJob=%d PreferMountedVols=%d SpoolSize=%s "
- "incomplete=%d VolSessionId=%d VolSessionTime=%d\n";
+ "rerunning=%d VolSessionId=%d VolSessionTime=%d\n";
static char use_storage[] = "use storage=%s media_type=%s pool_name=%s "
"pool_type=%s append=%d copy=%d stripe=%d\n";
static char use_device[] = "use device=%s\n";
fileset_name.c_str(), !jcr->pool->catalog_files,
jcr->job->SpoolAttributes, jcr->fileset->MD5, jcr->spool_data,
jcr->write_part_after_job, jcr->job->PreferMountedVolumes,
- edit_int64(jcr->spool_size, ed2), jcr->incomplete,
+ edit_int64(jcr->spool_size, ed2), jcr->rerunning,
jcr->VolSessionId, jcr->VolSessionTime);
Dmsg1(100, ">stored: %s", sd->msg);
if (bget_dirmsg(sd) > 0) {
JCR *jcr = (JCR *)arg;
BSOCK *sd;
int JobStatus;
+ int n;
char Job[MAX_NAME_LENGTH];
uint32_t JobFiles, JobErrors;
uint64_t JobBytes;
/* Read the Storage daemon's output.
*/
Dmsg0(100, "Start msg_thread loop\n");
- while (!job_canceled(jcr) && bget_dirmsg(sd) >= 0) {
+ n = 0;
+ while (!job_canceled(jcr) && (n=bget_dirmsg(sd)) >= 0) {
Dmsg1(400, "<stored: %s", sd->msg);
if (sscanf(sd->msg, Job_start, Job) == 1) {
continue;
}
Dmsg1(400, "end loop use=%d\n", jcr->use_count());
}
+ if (n == BNET_HARDEOF) {
+ /*
+ * This probably should be M_FATAL, but I am not 100% sure
+ * that this return *always* corresponds to a dropped line.
+ */
+ Qmsg(jcr, M_ERROR, 0, _("Director's comm line to SD dropped.\n"));
+ }
if (is_bnet_error(sd)) {
jcr->SDJobStatus = JS_ErrorTerminated;
}
break;
}
}
- set_jcr_job_status(jcr, JS_Terminated);
+ jcr->setJobStatus(JS_Terminated);
}
/*
berrno be;
Jmsg(jcr, M_FATAL, 0, _("Could not open bootstrap file %s: ERR=%s\n"),
jcr->RestoreBootstrap, be.bstrerror());
- set_jcr_job_status(jcr, JS_ErrorTerminated);
+ jcr->setJobStatus(JS_ErrorTerminated);
return false;
}
sd->fsend(bootstrap);