db_lock(mdb);
Mmsg(&mdb->cmd,
- "SELECT VolumeName,JobMedia.VolIndex FROM JobMedia,Media WHERE "
- "JobMedia.JobId=%u AND JobMedia.MediaId=Media.MediaId "
- "ORDER BY JobMedia.VolIndex", JobId);
+ "SELECT DISTINCT VolumeName FROM JobMedia,Media WHERE "
+ "JobMedia.JobId=%u AND JobMedia.MediaId=Media.MediaId ",
+ JobId);
Dmsg1(130, "VolNam=%s\n", mdb->cmd);
*VolumeNames[0] = 0;
static void jcr_timeout_check(watchdog_t *self);
struct s_last_job last_job; /* last job run by this daemon */
-dlist *last_jobs;
+dlist *last_jobs = NULL;
#define MAX_LAST_JOBS 10
static JCR *jobs = NULL; /* pointer to JCR chain */
void init_last_jobs_list()
{
struct s_last_job *job_entry;
- last_jobs = new dlist(job_entry, &job_entry->link);
- memset(&last_job, 0, sizeof(last_job));
+ if (!last_jobs) {
+ last_jobs = new dlist(job_entry, &job_entry->link);
+ memset(&last_job, 0, sizeof(last_job));
+ }
}
void term_last_jobs_list()
{
- for (void *je=NULL; (je=last_jobs->next(je)); ) {
- free(je);
+ char *je;
+ if (last_jobs) {
+ foreach_dlist(je, last_jobs) {
+ free(je);
+ }
+ delete last_jobs;
+ last_jobs = NULL;
}
- delete last_jobs;
}
void lock_last_jobs_list()
if (last_job.JobId > 0) {
je = (struct s_last_job *)malloc(sizeof(struct s_last_job));
memcpy((char *)je, (char *)&last_job, sizeof(last_job));
+ if (!last_jobs) {
+ init_last_jobs_list();
+ }
last_jobs->append(je);
if (last_jobs->size() > MAX_LAST_JOBS) {
last_jobs->remove(last_jobs->first());
pm_strcpy(&jcr->fileset_name, "Dummy.fileset.name");
jcr->fileset_md5 = get_pool_memory(PM_FNAME);
pm_strcpy(&jcr->fileset_md5, "Dummy.fileset.md5");
- jcr->JobId = 1;
- jcr->JobType = JT_BACKUP;
+ jcr->JobId = 0;
+ jcr->JobType = JT_CONSOLE;
jcr->JobLevel = L_FULL;
jcr->JobStatus = JS_Terminated;
jcr->dev_name = get_pool_memory(PM_FNAME);