diff options
author | Alaa Eddine Elamri <alaeddine.elamri@bareos.com> | 2022-10-28 13:58:00 +0300 |
---|---|---|
committer | Andreas Rogge <andreas.rogge@bareos.com> | 2022-11-07 19:16:29 +0300 |
commit | 65d3ad166f03a1b89c4ad15c973293702475aea6 (patch) | |
tree | a3165f8b7bb484103a760db012aef156d957fb20 /core | |
parent | ed0626520e8db05d5f9845c9e9c97a18429aa395 (diff) |
rename setJobStatus to setJobStatusWithPriorityCheck
Diffstat (limited to 'core')
48 files changed, 211 insertions, 204 deletions
diff --git a/core/src/dird/admin.cc b/core/src/dird/admin.cc index ce71d9db7..e3c91b2ef 100644 --- a/core/src/dird/admin.cc +++ b/core/src/dird/admin.cc @@ -2,7 +2,7 @@ BAREOS® - Backup Archiving REcovery Open Sourced Copyright (C) 2003-2012 Free Software Foundation Europe e.V. - Copyright (C) 2016-2020 Bareos GmbH & Co. KG + Copyright (C) 2016-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -59,7 +59,7 @@ bool do_admin(JobControlRecord* jcr) Jmsg(jcr, M_INFO, 0, _("Start Admin JobId %d, Job=%s\n"), jcr->JobId, jcr->Job); - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); AdminCleanup(jcr, JS_Terminated); return true; @@ -80,7 +80,7 @@ void AdminCleanup(JobControlRecord* jcr, int TermCode) Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s\n"), jcr->db->strerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } msg_type = M_INFO; /* by default INFO message */ diff --git a/core/src/dird/archive.cc b/core/src/dird/archive.cc index 44d957767..1d0a3dfca 100644 --- a/core/src/dird/archive.cc +++ b/core/src/dird/archive.cc @@ -1,7 +1,7 @@ /* BAREOS® - Backup Archiving REcovery Open Sourced - Copyright (C) 2016-2020 Bareos GmbH & Co. KG + Copyright (C) 2016-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -58,7 +58,7 @@ bool DoArchive(JobControlRecord* jcr) Jmsg(jcr, M_INFO, 0, _("Start Archive JobId %d, Job=%s\n"), jcr->JobId, jcr->Job); - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); ArchiveCleanup(jcr, JS_Terminated); return true; @@ -79,7 +79,7 @@ void ArchiveCleanup(JobControlRecord* jcr, int TermCode) Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s\n"), jcr->db->strerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } msg_type = M_INFO; /* by default INFO message */ diff --git a/core/src/dird/backup.cc b/core/src/dird/backup.cc index b6a0d75ca..bd41e9616 100644 --- a/core/src/dird/backup.cc +++ b/core/src/dird/backup.cc @@ -385,7 +385,7 @@ bool DoNativeBackup(JobControlRecord* jcr) Jmsg(jcr, M_INFO, 0, _("Start Backup JobId %s, Job=%s\n"), edit_uint64(jcr->JobId, ed1), jcr->Job); - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); Dmsg2(100, "JobId=%d JobLevel=%c\n", jcr->impl->jr.JobId, jcr->impl->jr.JobLevel); if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) { @@ -411,7 +411,7 @@ bool DoNativeBackup(JobControlRecord* jcr) * will be contacting him for a backup session. */ Dmsg0(110, "Open connection with storage daemon\n"); - jcr->setJobStatus(JS_WaitSD); + jcr->setJobStatusWithPriorityCheck(JS_WaitSD); if (!ConnectToStorageDaemon(jcr, 10, me->SDConnectTimeout, true)) { return false; @@ -446,7 +446,7 @@ bool DoNativeBackup(JobControlRecord* jcr) Dmsg0(150, "Storage daemon connection OK\n"); } - jcr->setJobStatus(JS_WaitFD); + jcr->setJobStatusWithPriorityCheck(JS_WaitFD); if (!ConnectToFileDaemon(jcr, 10, me->FDConnectTimeout, true)) { goto bail_out; } @@ -462,7 +462,7 @@ bool DoNativeBackup(JobControlRecord* jcr) goto close_fd; } - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); if (!SendLevelCommand(jcr)) { goto bail_out; } @@ -616,7 +616,7 @@ close_fd: } bail_out: - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); WaitForJobTermination(jcr, me->FDConnectTimeout); return false; @@ -642,7 +642,7 @@ int WaitForJobTermination(JobControlRecord* jcr, int timeout) int Encrypt = 0; btimer_t* tid = NULL; - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); if (fd) { if (timeout) { @@ -656,7 +656,7 @@ int WaitForJobTermination(JobControlRecord* jcr, int timeout) &ReadBytes, &JobBytes, &JobErrors, &VSS, &Encrypt) == 7) { fd_ok = true; - jcr->setJobStatus(jcr->impl->FDJobStatus); + jcr->setJobStatusWithPriorityCheck(jcr->impl->FDJobStatus); Dmsg1(100, "FDStatus=%c\n", (char)jcr->JobStatus); } else { Jmsg(jcr, M_WARNING, 0, _("Unexpected Client Job message: %s\n"), @@ -745,7 +745,7 @@ void NativeBackupCleanup(JobControlRecord* jcr, int TermCode) Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s\n"), jcr->db->strerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } bstrncpy(cr.Name, jcr->impl->res.client->resource_name_, sizeof(cr.Name)); @@ -828,7 +828,7 @@ void UpdateBootstrapFile(JobControlRecord* jcr) "update Bootstrap file. ERR=%s\n"), jcr->db->strerror()); if (jcr->impl->SDJobFiles != 0) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } } /* Start output with when and who wrote it */ @@ -869,7 +869,7 @@ void UpdateBootstrapFile(JobControlRecord* jcr) _("Could not open WriteBootstrap file:\n" "%s: ERR=%s\n"), fname, be.bstrerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } FreePoolMemory(fname); } diff --git a/core/src/dird/bsr.cc b/core/src/dird/bsr.cc index a66c94d20..968f64aac 100644 --- a/core/src/dird/bsr.cc +++ b/core/src/dird/bsr.cc @@ -580,7 +580,7 @@ bool OpenBootstrapFile(JobControlRecord* jcr, bootstrap_info& info) BErrNo be; Jmsg(jcr, M_FATAL, 0, _("Could not open bootstrap file %s: ERR=%s\n"), jcr->RestoreBootstrap, be.bstrerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } diff --git a/core/src/dird/consolidate.cc b/core/src/dird/consolidate.cc index eb91d833c..8206cb53b 100644 --- a/core/src/dird/consolidate.cc +++ b/core/src/dird/consolidate.cc @@ -115,7 +115,7 @@ bool DoConsolidate(JobControlRecord* jcr) Jmsg(jcr, M_INFO, 0, _("Start Consolidate JobId %d, Job=%s\n"), jcr->JobId, jcr->Job); - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); foreach_res (job, R_JOB) { if (job->AlwaysIncremental) { @@ -319,7 +319,7 @@ bool DoConsolidate(JobControlRecord* jcr) bail_out: // Restore original job back to jcr. jcr->impl->res.job = tmpjob; - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); ConsolidateCleanup(jcr, JS_Terminated); if (jobids) { free(jobids); } @@ -343,7 +343,7 @@ void ConsolidateCleanup(JobControlRecord* jcr, int TermCode) Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s\n"), jcr->db->strerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } msg_type = M_INFO; /* by default INFO message */ diff --git a/core/src/dird/fd_cmds.cc b/core/src/dird/fd_cmds.cc index 38509c8df..146403e6d 100644 --- a/core/src/dird/fd_cmds.cc +++ b/core/src/dird/fd_cmds.cc @@ -145,7 +145,7 @@ static bool connect_outbound_to_file_daemon(JobControlRecord* jcr, jcr->impl->res.client->FDport, verbose)) { delete fd; fd = NULL; - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } else { jcr->file_bsock = fd; jcr->authenticated = false; @@ -274,7 +274,7 @@ bool ConnectToFileDaemon(JobControlRecord* jcr, } if (jcr->file_bsock) { - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); if (AuthenticateWithFileDaemon(jcr)) { success = true; SendInfoSuccess(jcr, ua); @@ -317,7 +317,7 @@ bool ConnectToFileDaemon(JobControlRecord* jcr, && jcr->impl->connection_handshake_try_ != ClientConnectionHandshakeMode::kFailed); - if (!success) { jcr->setJobStatus(JS_ErrorTerminated); } + if (!success) { jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } return success; } @@ -347,7 +347,7 @@ int SendJobInfoToFileDaemon(JobControlRecord* jcr) storage = jcr->impl->res.read_storage; } else { Jmsg(jcr, M_FATAL, 0, _("No read or write storage defined\n")); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return 0; } if (storage) { @@ -379,7 +379,7 @@ int SendJobInfoToFileDaemon(JobControlRecord* jcr) if (!bstrncmp(fd->msg, OKjob, strlen(OKjob))) { Jmsg(jcr, M_FATAL, 0, _("File daemon \"%s\" rejected Job command: %s\n"), jcr->impl->res.client->resource_name_, fd->msg); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return 0; } else if (jcr->db) { ClientDbRecord cr; @@ -397,7 +397,7 @@ int SendJobInfoToFileDaemon(JobControlRecord* jcr) } else { Jmsg(jcr, M_FATAL, 0, _("FD gave bad response to JobId command: %s\n"), BnetStrerror(fd)); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return 0; } @@ -690,7 +690,7 @@ static bool SendFileset(JobControlRecord* jcr) return true; bail_out: - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -1086,7 +1086,7 @@ int GetAttributesAndPutInCatalog(JobControlRecord* jcr) _("<filed: bad attributes, expected 3 fields got %d\n" "message_length=%d msg=%s\n"), len, fd->message_length, fd->msg); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return 0; } p = fd->msg; @@ -1178,7 +1178,7 @@ int GetAttributesAndPutInCatalog(JobControlRecord* jcr) jcr->cached_attribute = false; } - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); return 1; } diff --git a/core/src/dird/getmsg.cc b/core/src/dird/getmsg.cc index f4bfa8f96..a16f698c2 100644 --- a/core/src/dird/getmsg.cc +++ b/core/src/dird/getmsg.cc @@ -3,7 +3,7 @@ Copyright (C) 2000-2010 Free Software Foundation Europe e.V. Copyright (C) 2011-2012 Planets Communications B.V. - Copyright (C) 2013-2019 Bareos GmbH & Co. KG + Copyright (C) 2013-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -86,10 +86,10 @@ static void SetJcrSdJobStatus(JobControlRecord* jcr, int SDJobStatus) // Some SD Job status setting are propagated to the controlling Job. switch (jcr->impl->SDJobStatus) { case JS_Incomplete: - jcr->setJobStatus(JS_Incomplete); + jcr->setJobStatusWithPriorityCheck(JS_Incomplete); break; case JS_FatalError: - jcr->setJobStatus(JS_FatalError); + jcr->setJobStatusWithPriorityCheck(JS_FatalError); break; default: break; diff --git a/core/src/dird/job.cc b/core/src/dird/job.cc index a317f873a..30648b890 100644 --- a/core/src/dird/job.cc +++ b/core/src/dird/job.cc @@ -171,7 +171,7 @@ bool SetupJob(JobControlRecord* jcr, bool suppress_output) jcr->impl->nextrun_ready_inited = true; CreateUniqueJobName(jcr, jcr->impl->res.job->resource_name_); - jcr->setJobStatus(JS_Created); + jcr->setJobStatusWithPriorityCheck(JS_Created); jcr->unlock(); // Open database @@ -364,7 +364,7 @@ bool SetupJob(JobControlRecord* jcr, bool suppress_output) break; default: Pmsg1(0, _("Unimplemented job type: %d\n"), jcr->getJobType()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); goto bail_out; } @@ -424,7 +424,7 @@ bool UseWaitingClient(JobControlRecord* jcr, int timeout) void UpdateJobEnd(JobControlRecord* jcr, int TermCode) { DequeueMessages(jcr); /* display any queued messages */ - jcr->setJobStatus(TermCode); + jcr->setJobStatusWithPriorityCheck(TermCode); UpdateJobEndRecord(jcr); } @@ -442,8 +442,9 @@ static void* job_thread(void* arg) DetachIfNotDetached(pthread_self()); Dmsg0(200, "=====Start Job=========\n"); - jcr->setJobStatus(JS_Running); /* this will be set only if no error */ - jcr->start_time = time(NULL); /* set the real start time */ + jcr->setJobStatusWithPriorityCheck( + JS_Running); /* this will be set only if no error */ + jcr->start_time = time(NULL); /* set the real start time */ jcr->impl->jr.StartTime = jcr->start_time; // Let the statistics subsystem know a new Job was started. @@ -452,13 +453,13 @@ static void* job_thread(void* arg) if (jcr->impl->res.job->MaxStartDelay != 0 && jcr->impl->res.job->MaxStartDelay < (utime_t)(jcr->start_time - jcr->sched_time)) { - jcr->setJobStatus(JS_Canceled); + jcr->setJobStatusWithPriorityCheck(JS_Canceled); Jmsg(jcr, M_FATAL, 0, _("Job canceled because max start delay time exceeded.\n")); } if (JobCheckMaxrunschedtime(jcr)) { - jcr->setJobStatus(JS_Canceled); + jcr->setJobStatusWithPriorityCheck(JS_Canceled); Jmsg(jcr, M_FATAL, 0, _("Job canceled because max run sched time exceeded.\n")); } @@ -676,7 +677,7 @@ bool CancelJob(UaContext* ua, JobControlRecord* jcr) char ed1[50]; int32_t old_status = jcr->JobStatus; - jcr->setJobStatus(JS_Canceled); + jcr->setJobStatusWithPriorityCheck(JS_Canceled); switch (old_status) { case JS_Created: @@ -740,17 +741,17 @@ static void JobMonitorWatchdog(watchdog_t* self) /* check MaxWaitTime */ if (JobCheckMaxwaittime(jcr)) { - jcr->setJobStatus(JS_Canceled); + jcr->setJobStatusWithPriorityCheck(JS_Canceled); Qmsg(jcr, M_FATAL, 0, _("Max wait time exceeded. Job canceled.\n")); cancel = true; /* check MaxRunTime */ } else if (JobCheckMaxruntime(jcr)) { - jcr->setJobStatus(JS_Canceled); + jcr->setJobStatusWithPriorityCheck(JS_Canceled); Qmsg(jcr, M_FATAL, 0, _("Max run time exceeded. Job canceled.\n")); cancel = true; /* check MaxRunSchedTime */ } else if (JobCheckMaxrunschedtime(jcr)) { - jcr->setJobStatus(JS_Canceled); + jcr->setJobStatusWithPriorityCheck(JS_Canceled); Qmsg(jcr, M_FATAL, 0, _("Max run sched time exceeded. Job canceled.\n")); cancel = true; } @@ -943,7 +944,7 @@ bool AllowDuplicateJob(JobControlRecord* jcr) // cancel_dup will be done below if (cancel_me) { /* Zap current job */ - jcr->setJobStatus(JS_Canceled); + jcr->setJobStatusWithPriorityCheck(JS_Canceled); Jmsg(jcr, M_FATAL, 0, _("JobId %d already running. Duplicate job not allowed.\n"), djcr->JobId); @@ -978,13 +979,13 @@ bool AllowDuplicateJob(JobControlRecord* jcr) djcr->JobId); CancelJob(ua, djcr); Bmicrosleep(0, 500000); - djcr->setJobStatus(JS_Canceled); + djcr->setJobStatusWithPriorityCheck(JS_Canceled); CancelJob(ua, djcr); FreeUaContext(ua); Dmsg2(800, "Cancel dup %p JobId=%d\n", djcr, djcr->JobId); } else { // Zap current job - jcr->setJobStatus(JS_Canceled); + jcr->setJobStatusWithPriorityCheck(JS_Canceled); Jmsg(jcr, M_FATAL, 0, _("JobId %d already running. Duplicate job not allowed.\n"), djcr->JobId); diff --git a/core/src/dird/jobq.cc b/core/src/dird/jobq.cc index 5d1bd8c17..d9a6883d6 100644 --- a/core/src/dird/jobq.cc +++ b/core/src/dird/jobq.cc @@ -167,7 +167,7 @@ extern "C" void* sched_wait(void* arg) Dmsg0(2300, "Enter sched_wait.\n"); free(arg); time_t wtime = jcr->sched_time - time(NULL); - jcr->setJobStatus(JS_WaitStartTime); + jcr->setJobStatusWithPriorityCheck(JS_WaitStartTime); // Wait until scheduled time arrives if (wtime > 0) { @@ -509,7 +509,7 @@ extern "C" void* jobq_server(void* arg) || (jcr->JobPriority < Priority && jcr->impl->res.job->allow_mixed_priority && running_allow_mix))) { - jcr->setJobStatus(JS_WaitPriority); + jcr->setJobStatusWithPriorityCheck(JS_WaitPriority); break; } @@ -653,7 +653,7 @@ static bool RescheduleJob(JobControlRecord* jcr, jobq_t* jq, jobq_item_t* je) * conflicts. We now create a new job, copying the * appropriate fields. */ - jcr->setJobStatus(JS_WaitStartTime); + jcr->setJobStatusWithPriorityCheck(JS_WaitStartTime); njcr = NewDirectorJcr(DirdFreeJcr); SetJcrDefaults(njcr, jcr->impl->res.job); njcr->impl->reschedule_count = jcr->impl->reschedule_count; @@ -676,7 +676,7 @@ static bool RescheduleJob(JobControlRecord* jcr, jobq_t* jq, jobq_item_t* je) njcr->impl->res.run_next_pool_override = jcr->impl->res.run_next_pool_override; njcr->JobStatus = -1; - njcr->setJobStatus(jcr->JobStatus); + njcr->setJobStatusWithPriorityCheck(jcr->JobStatus); if (jcr->impl->res.read_storage) { CopyRstorage(njcr, jcr->impl->res.read_storage_list, _("previous Job")); } else { @@ -747,7 +747,7 @@ static bool AcquireResources(JobControlRecord* jcr) if (jcr->impl->res.read_storage) { if (!IncReadStore(jcr)) { - jcr->setJobStatus(JS_WaitStoreRes); + jcr->setJobStatusWithPriorityCheck(JS_WaitStoreRes); return false; } @@ -756,7 +756,7 @@ static bool AcquireResources(JobControlRecord* jcr) if (jcr->impl->res.write_storage) { if (!IncWriteStore(jcr)) { DecReadStore(jcr); - jcr->setJobStatus(JS_WaitStoreRes); + jcr->setJobStatusWithPriorityCheck(JS_WaitStoreRes); return false; } @@ -766,7 +766,7 @@ static bool AcquireResources(JobControlRecord* jcr) // Back out previous locks DecWriteStore(jcr); DecReadStore(jcr); - jcr->setJobStatus(JS_WaitClientRes); + jcr->setJobStatusWithPriorityCheck(JS_WaitClientRes); return false; } @@ -776,7 +776,7 @@ static bool AcquireResources(JobControlRecord* jcr) DecWriteStore(jcr); DecReadStore(jcr); DecClientConcurrency(jcr); - jcr->setJobStatus(JS_WaitJobRes); + jcr->setJobStatusWithPriorityCheck(JS_WaitJobRes); return false; } diff --git a/core/src/dird/migrate.cc b/core/src/dird/migrate.cc index 1b52f183f..0194c7036 100644 --- a/core/src/dird/migrate.cc +++ b/core/src/dird/migrate.cc @@ -1047,7 +1047,7 @@ bool DoMigrationInit(JobControlRecord* jcr) } if (jcr->impl->previous_jr.JobId == 0 || jcr->impl->ExpectedFiles == 0) { - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); Dmsg1(dbglevel, "JobId=%d expected files == 0\n", (int)jcr->JobId); if (jcr->impl->previous_jr.JobId == 0) { Jmsg(jcr, M_INFO, 0, _("No previous Job found to %s.\n"), @@ -1242,7 +1242,7 @@ static inline bool DoActualMigration(JobControlRecord* jcr) _("JobId %s already %s probably by another Job. %s stopped.\n"), edit_int64(jcr->impl->previous_jr.JobId, ed1), jcr->get_ActionName(true), jcr->get_OperationName()); - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); MigrationCleanup(jcr, jcr->JobStatus); return true; } @@ -1252,7 +1252,7 @@ static inline bool DoActualMigration(JobControlRecord* jcr) _("JobId %s cannot %s using the same read and write storage.\n"), edit_int64(jcr->impl->previous_jr.JobId, ed1), jcr->get_OperationName()); - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); MigrationCleanup(jcr, jcr->JobStatus); return true; } @@ -1308,7 +1308,7 @@ static inline bool DoActualMigration(JobControlRecord* jcr) jcr->impl->res.write_storage_list = write_storage_list; // Start conversation with Reading Storage daemon - jcr->setJobStatus(JS_WaitSD); + jcr->setJobStatusWithPriorityCheck(JS_WaitSD); if (!ConnectToStorageDaemon(jcr, 10, me->SDConnectTimeout, true)) { goto bail_out; } @@ -1317,7 +1317,7 @@ static inline bool DoActualMigration(JobControlRecord* jcr) Dmsg0(110, "Open connection with writing storage daemon\n"); // Start conversation with Writing Storage daemon - mig_jcr->setJobStatus(JS_WaitSD); + mig_jcr->setJobStatusWithPriorityCheck(JS_WaitSD); if (!ConnectToStorageDaemon(mig_jcr, 10, me->SDConnectTimeout, true)) { goto bail_out; } @@ -1344,8 +1344,8 @@ static inline bool DoActualMigration(JobControlRecord* jcr) // Open a message channel connection with the Storage daemon. Dmsg0(110, "Open connection with storage daemon\n"); - jcr->setJobStatus(JS_WaitSD); - mig_jcr->setJobStatus(JS_WaitSD); + jcr->setJobStatusWithPriorityCheck(JS_WaitSD); + mig_jcr->setJobStatusWithPriorityCheck(JS_WaitSD); // Start conversation with Storage daemon if (!ConnectToStorageDaemon(jcr, 10, me->SDConnectTimeout, true)) { @@ -1377,7 +1377,7 @@ static inline bool DoActualMigration(JobControlRecord* jcr) jcr->start_time = time(NULL); jcr->impl->jr.StartTime = jcr->start_time; jcr->impl->jr.JobTDate = jcr->start_time; - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); // Update job start record for this migration control job if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) { @@ -1391,7 +1391,7 @@ static inline bool DoActualMigration(JobControlRecord* jcr) mig_jcr->start_time = time(NULL); mig_jcr->impl->jr.StartTime = mig_jcr->start_time; mig_jcr->impl->jr.JobTDate = mig_jcr->start_time; - mig_jcr->setJobStatus(JS_Running); + mig_jcr->setJobStatusWithPriorityCheck(JS_Running); // Update job start record for the real migration backup job if (!mig_jcr->db->UpdateJobStartRecord(mig_jcr, &mig_jcr->impl->jr)) { @@ -1455,8 +1455,8 @@ static inline bool DoActualMigration(JobControlRecord* jcr) // Now start a Storage daemon message thread if (!StartStorageDaemonMessageThread(jcr)) { goto bail_out; } - jcr->setJobStatus(JS_Running); - mig_jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); + mig_jcr->setJobStatusWithPriorityCheck(JS_Running); /* * Pickup Job termination data @@ -1467,13 +1467,13 @@ static inline bool DoActualMigration(JobControlRecord* jcr) if (jcr->impl->remote_replicate) { WaitForStorageDaemonTermination(jcr); WaitForStorageDaemonTermination(mig_jcr); - jcr->setJobStatus(jcr->impl->SDJobStatus); + jcr->setJobStatusWithPriorityCheck(jcr->impl->SDJobStatus); if (mig_jcr->batch_started) { mig_jcr->db_batch->WriteBatchFileRecords(mig_jcr); } } else { WaitForStorageDaemonTermination(jcr); - jcr->setJobStatus(jcr->impl->SDJobStatus); + jcr->setJobStatusWithPriorityCheck(jcr->impl->SDJobStatus); if (jcr->batch_started) { jcr->db_batch->WriteBatchFileRecords(jcr); } } @@ -1515,10 +1515,10 @@ static inline bool DoMigrationSelection(JobControlRecord* jcr) retval = getJobs_to_migrate(jcr); if (retval) { - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); MigrationCleanup(jcr, jcr->JobStatus); } else { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } return retval; @@ -1817,7 +1817,7 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode) Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s\n"), jcr->db->strerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } UpdateBootstrapFile(mig_jcr); diff --git a/core/src/dird/msgchan.cc b/core/src/dird/msgchan.cc index 0473466b4..eea3cbd3f 100644 --- a/core/src/dird/msgchan.cc +++ b/core/src/dird/msgchan.cc @@ -103,7 +103,7 @@ static inline bool SendBootstrapFileToSd(JobControlRecord* jcr, BErrNo be; Jmsg(jcr, M_FATAL, 0, _("Could not open bootstrap file %s: ERR=%s\n"), jcr->RestoreBootstrap, be.bstrerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } sd->fsend(bootstrap); @@ -492,7 +492,7 @@ void WaitForStorageDaemonTermination(JobControlRecord* jcr) /* Give SD 30 seconds to clean up after cancel */ if (cancel_count == 6) { break; } } - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); } } /* namespace directordaemon */ diff --git a/core/src/dird/ndmp_dma_backup_NDMP_BAREOS.cc b/core/src/dird/ndmp_dma_backup_NDMP_BAREOS.cc index a4d614770..4ea73026d 100644 --- a/core/src/dird/ndmp_dma_backup_NDMP_BAREOS.cc +++ b/core/src/dird/ndmp_dma_backup_NDMP_BAREOS.cc @@ -184,7 +184,7 @@ bool DoNdmpBackup(JobControlRecord* jcr) Jmsg(jcr, M_INFO, 0, _("Start NDMP Backup JobId %s, Job=%s\n"), edit_uint64(jcr->JobId, ed1), jcr->Job); - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); Dmsg2(100, "JobId=%d JobLevel=%c\n", jcr->impl->jr.JobId, jcr->impl->jr.JobLevel); if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) { @@ -215,7 +215,7 @@ bool DoNdmpBackup(JobControlRecord* jcr) if (jcr->impl->res.write_storage->paired_storage) { SetPairedStorage(jcr); - jcr->setJobStatus(JS_WaitSD); + jcr->setJobStatusWithPriorityCheck(JS_WaitSD); if (!ConnectToStorageDaemon(jcr, 10, me->SDConnectTimeout, true)) { return false; } @@ -447,7 +447,7 @@ cleanup: bail_out: // Error handling of failed Job. status = JS_ErrorTerminated; - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); if (jcr->store_bsock) { CancelStorageDaemonJob(jcr); diff --git a/core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc b/core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc index 71b8cfc30..98aa86f71 100644 --- a/core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc +++ b/core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc @@ -2,7 +2,7 @@ BAREOS® - Backup Archiving REcovery Open Sourced Copyright (C) 2011-2015 Planets Communications B.V. - Copyright (C) 2013-2019 Bareos GmbH & Co. KG + Copyright (C) 2013-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -186,7 +186,7 @@ bool DoNdmpBackupNdmpNative(JobControlRecord* jcr) Jmsg(jcr, M_INFO, 0, _("Start NDMP Backup JobId %s, Job=%s\n"), edit_uint64(jcr->JobId, ed1), jcr->Job); - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); Dmsg2(100, "JobId=%d JobLevel=%c\n", jcr->impl->jr.JobId, jcr->impl->jr.JobLevel); if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) { @@ -401,7 +401,7 @@ cleanup: bail_out: // Error handling of failed Job. status = JS_ErrorTerminated; - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); ok_out: if (nis) { diff --git a/core/src/dird/ndmp_dma_backup_common.cc b/core/src/dird/ndmp_dma_backup_common.cc index efe385d0e..413343993 100644 --- a/core/src/dird/ndmp_dma_backup_common.cc +++ b/core/src/dird/ndmp_dma_backup_common.cc @@ -281,7 +281,7 @@ void NdmpBackupCleanup(JobControlRecord* jcr, int TermCode) Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s"), jcr->db->strerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } bstrncpy(cr.Name, jcr->impl->res.client->resource_name_, sizeof(cr.Name)); diff --git a/core/src/dird/ndmp_dma_restore_NDMP_BAREOS.cc b/core/src/dird/ndmp_dma_restore_NDMP_BAREOS.cc index e879a1f31..9a2680cb5 100644 --- a/core/src/dird/ndmp_dma_restore_NDMP_BAREOS.cc +++ b/core/src/dird/ndmp_dma_restore_NDMP_BAREOS.cc @@ -325,7 +325,7 @@ bool DoNdmpRestoreInit(JobControlRecord* jcr) static inline int NdmpWaitForJobTermination(JobControlRecord* jcr) { - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); /* * Force cancel in SD if failing, but not for Incomplete jobs @@ -429,7 +429,7 @@ static inline bool DoNdmpRestoreBootstrap(JobControlRecord* jcr) * */ Dmsg0(10, "Open connection to storage daemon\n"); - jcr->setJobStatus(JS_WaitSD); + jcr->setJobStatusWithPriorityCheck(JS_WaitSD); // Start conversation with Storage daemon if (!ConnectToStorageDaemon(jcr, 10, me->SDConnectTimeout, true)) { @@ -442,7 +442,7 @@ static inline bool DoNdmpRestoreBootstrap(JobControlRecord* jcr) goto cleanup; } - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); // Send the bootstrap file -- what Volumes/files to restore if (!SendBootstrapFile(jcr, sd, info) diff --git a/core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc b/core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc index a2916f54d..023e12233 100644 --- a/core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc +++ b/core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc @@ -305,7 +305,7 @@ static bool DoNdmpNativeRestore(JobControlRecord* jcr) ndmp_sess.dump_media_info = 1; // for debugging - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); // Initialize the session structure. if (ndma_session_initialize(&ndmp_sess)) { goto cleanup_ndmp; } diff --git a/core/src/dird/restore.cc b/core/src/dird/restore.cc index f14bd02cb..bca1b0a45 100644 --- a/core/src/dird/restore.cc +++ b/core/src/dird/restore.cc @@ -3,7 +3,7 @@ Copyright (C) 2000-2011 Free Software Foundation Europe e.V. Copyright (C) 2011-2016 Planets Communications B.V. - Copyright (C) 2013-2021 Bareos GmbH & Co. KG + Copyright (C) 2013-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -153,7 +153,7 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr) * */ Dmsg0(10, "Open connection with storage daemon\n"); - jcr->setJobStatus(JS_WaitSD); + jcr->setJobStatusWithPriorityCheck(JS_WaitSD); // Start conversation with Storage daemon if (!ConnectToStorageDaemon(jcr, 10, me->SDConnectTimeout, true)) { @@ -168,7 +168,7 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr) if (first_time) { // Start conversation with File daemon - jcr->setJobStatus(JS_WaitFD); + jcr->setJobStatusWithPriorityCheck(JS_WaitFD); jcr->impl->keep_sd_auth_key = true; /* don't clear the sd_auth_key now */ if (!ConnectToFileDaemon(jcr, 10, me->FDConnectTimeout, true)) { @@ -191,7 +191,7 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr) } } - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); // Send the bootstrap file -- what Volumes/files to restore bool success = false; diff --git a/core/src/dird/storage.cc b/core/src/dird/storage.cc index 34038ed89..47b464957 100644 --- a/core/src/dird/storage.cc +++ b/core/src/dird/storage.cc @@ -480,7 +480,7 @@ bool SelectNextRstore(JobControlRecord* jcr, bootstrap_info& info) R_STORAGE, info.storage))) { Jmsg(jcr, M_FATAL, 0, _("Could not get storage resource '%s'.\n"), info.storage); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -498,13 +498,13 @@ bool SelectNextRstore(JobControlRecord* jcr, bootstrap_info& info) DecReadStore(jcr); FreeRstorage(jcr); SetRstorage(jcr, &ustore); - jcr->setJobStatus(JS_WaitSD); + jcr->setJobStatusWithPriorityCheck(JS_WaitSD); // Wait for up to 6 hours to increment read stoage counter for (int i = 0; i < MAX_TRIES; i++) { // Try to get read storage counter incremented if (IncReadStore(jcr)) { - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); return true; } Bmicrosleep(10, 0); /* Sleep 10 secs */ diff --git a/core/src/dird/ua_server.cc b/core/src/dird/ua_server.cc index 280f4ebdf..8bfb3410d 100644 --- a/core/src/dird/ua_server.cc +++ b/core/src/dird/ua_server.cc @@ -73,7 +73,7 @@ JobControlRecord* new_control_jcr(const char* base_name, int job_type) jcr->sched_time = jcr->start_time; jcr->setJobType(job_type); jcr->setJobLevel(L_NONE); - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); jcr->JobId = 0; return jcr; diff --git a/core/src/dird/vbackup.cc b/core/src/dird/vbackup.cc index e06c12619..5370a6616 100644 --- a/core/src/dird/vbackup.cc +++ b/core/src/dird/vbackup.cc @@ -319,7 +319,7 @@ bool DoNativeVbackup(JobControlRecord* jcr) * daemon. */ Dmsg0(110, "Open connection with storage daemon\n"); - jcr->setJobStatus(JS_WaitSD); + jcr->setJobStatusWithPriorityCheck(JS_WaitSD); // Start conversation with Storage daemon if (!ConnectToStorageDaemon(jcr, 10, me->SDConnectTimeout, true)) { @@ -347,7 +347,7 @@ bool DoNativeVbackup(JobControlRecord* jcr) jcr->start_time = time(NULL); jcr->impl->jr.StartTime = jcr->start_time; jcr->impl->jr.JobTDate = jcr->start_time; - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); // Update job start record if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) { @@ -368,14 +368,14 @@ bool DoNativeVbackup(JobControlRecord* jcr) // Now start a Storage daemon message thread if (!StartStorageDaemonMessageThread(jcr)) { return false; } - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); /* * Pickup Job termination data * Note, the SD stores in jcr->JobFiles/ReadBytes/JobBytes/JobErrors */ WaitForStorageDaemonTermination(jcr); - jcr->setJobStatus(jcr->impl->SDJobStatus); + jcr->setJobStatusWithPriorityCheck(jcr->impl->SDJobStatus); jcr->db_batch->WriteBatchFileRecords( jcr); /* used by bulk batch file insert */ if (!jcr->is_JobStatus(JS_Terminated)) { return false; } @@ -444,7 +444,7 @@ void NativeVbackupCleanup(JobControlRecord* jcr, int TermCode, int JobLevel) Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s\n"), jcr->db->strerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } bstrncpy(cr.Name, jcr->impl->res.client->resource_name_, sizeof(cr.Name)); diff --git a/core/src/dird/verify.cc b/core/src/dird/verify.cc index 17a8d3b93..d2c944f93 100644 --- a/core/src/dird/verify.cc +++ b/core/src/dird/verify.cc @@ -237,7 +237,7 @@ bool DoVerify(JobControlRecord* jcr) switch (JobLevel) { case L_VERIFY_VOLUME_TO_CATALOG: // Start conversation with Storage daemon - jcr->setJobStatus(JS_Blocked); + jcr->setJobStatusWithPriorityCheck(JS_Blocked); if (!ConnectToStorageDaemon(jcr, 10, me->SDConnectTimeout, true)) { return false; } @@ -260,7 +260,7 @@ bool DoVerify(JobControlRecord* jcr) } // OK, now connect to the File daemon and ask him for the files. - jcr->setJobStatus(JS_Blocked); + jcr->setJobStatusWithPriorityCheck(JS_Blocked); if (!ConnectToFileDaemon(jcr, 10, me->FDConnectTimeout, true)) { goto bail_out; } @@ -278,7 +278,7 @@ bool DoVerify(JobControlRecord* jcr) break; default: // OK, now connect to the File daemon and ask him for the files. - jcr->setJobStatus(JS_Blocked); + jcr->setJobStatusWithPriorityCheck(JS_Blocked); if (!ConnectToFileDaemon(jcr, 10, me->FDConnectTimeout, true)) { goto bail_out; } @@ -287,7 +287,7 @@ bool DoVerify(JobControlRecord* jcr) break; } - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); Dmsg0(30, ">filed: Send include list\n"); if (!SendIncludeList(jcr)) { goto bail_out; } @@ -661,7 +661,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) &jcr->impl->previous_jr, &fdbr)) { Jmsg(jcr, M_INFO, 0, _("New file: %s\n"), jcr->impl->fname); Dmsg1(020, _("File not in catalog: %s\n"), jcr->impl->fname); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); continue; } else { /* @@ -689,7 +689,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) _(" st_ino differ. Cat: %s File: %s\n"), edit_uint64((uint64_t)statc.st_ino, ed1), edit_uint64((uint64_t)statf.st_ino, ed2)); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case 'p': /* permissions bits */ @@ -698,7 +698,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) Jmsg(jcr, M_INFO, 0, _(" st_mode differ. Cat: %x File: %x\n"), (uint32_t)statc.st_mode, (uint32_t)statf.st_mode); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case 'n': /* number of links */ @@ -707,7 +707,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) Jmsg(jcr, M_INFO, 0, _(" st_nlink differ. Cat: %d File: %d\n"), (uint32_t)statc.st_nlink, (uint32_t)statf.st_nlink); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case 'u': /* user id */ @@ -716,7 +716,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) Jmsg(jcr, M_INFO, 0, _(" st_uid differ. Cat: %u File: %u\n"), (uint32_t)statc.st_uid, (uint32_t)statf.st_uid); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case 'g': /* group id */ @@ -725,7 +725,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) Jmsg(jcr, M_INFO, 0, _(" st_gid differ. Cat: %u File: %u\n"), (uint32_t)statc.st_gid, (uint32_t)statf.st_gid); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case 's': /* size */ @@ -735,28 +735,28 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) _(" st_size differ. Cat: %s File: %s\n"), edit_uint64((uint64_t)statc.st_size, ed1), edit_uint64((uint64_t)statf.st_size, ed2)); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case 'a': /* access time */ if (statc.st_atime != statf.st_atime) { PrtFname(jcr); Jmsg(jcr, M_INFO, 0, _(" st_atime differs\n")); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case 'm': if (statc.st_mtime != statf.st_mtime) { PrtFname(jcr); Jmsg(jcr, M_INFO, 0, _(" st_mtime differs\n")); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case 'c': /* ctime */ if (statc.st_ctime != statf.st_ctime) { PrtFname(jcr); Jmsg(jcr, M_INFO, 0, _(" st_ctime differs\n")); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case 'd': /* file size decrease */ @@ -766,7 +766,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) _(" st_size decrease. Cat: %s File: %s\n"), edit_uint64((uint64_t)statc.st_size, ed1), edit_uint64((uint64_t)statf.st_size, ed2)); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } break; case '5': /* compare MD5 */ @@ -813,7 +813,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) PrtFname(jcr); Jmsg(jcr, M_INFO, 0, _(" %s differs. File=%s Cat=%s\n"), stream_to_ascii(stream), buf.c_str(), fdbr.Digest); - jcr->setJobStatus(JS_Differences); + jcr->setJobStatusWithPriorityCheck(JS_Differences); } do_Digest = CRYPTO_DIGEST_NONE; } @@ -842,7 +842,9 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId) JobId, jcr->JobId); /* MissingHandler is called for each file found */ jcr->db->SqlQuery(buf.c_str(), MissingHandler, (void*)jcr); - if (jcr->impl->fn_printed) { jcr->setJobStatus(JS_Differences); } + if (jcr->impl->fn_printed) { + jcr->setJobStatusWithPriorityCheck(JS_Differences); + } bail_out: FreePoolMemory(fname); diff --git a/core/src/filed/backup.cc b/core/src/filed/backup.cc index 371bb32c3..e81f7cea9 100644 --- a/core/src/filed/backup.cc +++ b/core/src/filed/backup.cc @@ -105,7 +105,7 @@ bool BlastDataToStorageDaemon(JobControlRecord* jcr, sd = jcr->store_bsock; - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); Dmsg1(300, "filed: opened data connection %d to stored\n", sd->fd_); @@ -120,7 +120,7 @@ bool BlastDataToStorageDaemon(JobControlRecord* jcr, buf_size = 0; /* use default */ } if (!sd->SetBufferSize(buf_size, BNET_SETBUF_WRITE)) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); Jmsg(jcr, M_FATAL, 0, _("Cannot set buffer size FD->SD.\n")); return false; } @@ -160,7 +160,7 @@ bool BlastDataToStorageDaemon(JobControlRecord* jcr, // Subroutine SaveFile() is called for each file if (!FindFiles(jcr, (FindFilesPacket*)jcr->impl->ff, SaveFile, PluginSave)) { ok = false; /* error */ - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } if (have_acl && jcr->impl->acl_data->u.build->nr_errors > 0) { @@ -1214,7 +1214,7 @@ bool EncodeAndSendAttributes(JobControlRecord* jcr, // Debug code: check if we must hangup if (hangup && (jcr->JobFiles > (uint32_t)hangup)) { - jcr->setJobStatus(JS_Incomplete); + jcr->setJobStatusWithPriorityCheck(JS_Incomplete); Jmsg1(jcr, M_FATAL, 0, "Debug hangup requested after %d files.\n", hangup); SetHangup(0); return false; diff --git a/core/src/filed/compression.cc b/core/src/filed/compression.cc index de1bea4f8..1c62c50d8 100644 --- a/core/src/filed/compression.cc +++ b/core/src/filed/compression.cc @@ -3,7 +3,7 @@ Copyright (C) 2000-2011 Free Software Foundation Europe e.V. Copyright (C) 2011-2012 Planets Communications B.V. - Copyright (C) 2013-2019 Bareos GmbH & Co. KG + Copyright (C) 2013-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -166,7 +166,7 @@ bool SetupCompressionContext(b_ctx& bctx) != Z_OK) { Jmsg(bctx.jcr, M_FATAL, 0, _("Compression deflateParams error: %d\n"), zstat); - bctx.jcr->setJobStatus(JS_ErrorTerminated); + bctx.jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); goto bail_out; } } @@ -203,7 +203,7 @@ bool SetupCompressionContext(b_ctx& bctx) != Z_OK) { Jmsg(bctx.jcr, M_FATAL, 0, _("Compression fastlzlibSetCompressor error: %d\n"), zstat); - bctx.jcr->setJobStatus(JS_ErrorTerminated); + bctx.jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); goto bail_out; } } diff --git a/core/src/filed/dir_cmd.cc b/core/src/filed/dir_cmd.cc index 8ecaa181d..773a0cfa5 100644 --- a/core/src/filed/dir_cmd.cc +++ b/core/src/filed/dir_cmd.cc @@ -757,7 +757,7 @@ static bool CancelCmd(JobControlRecord* jcr) dir->fsend(_("2901 Job %s not found.\n"), Job); } else { GeneratePluginEvent(cjcr, bEventCancelCommand, nullptr); - cjcr->setJobStatus(JS_Canceled); + cjcr->setJobStatusWithPriorityCheck(JS_Canceled); if (cjcr->store_bsock) { cjcr->store_bsock->SetTimedOut(); cjcr->store_bsock->SetTerminated(); @@ -1332,7 +1332,7 @@ static bool BootstrapCmd(JobControlRecord* jcr) */ while (dir->recv() >= 0) {} FreeBootstrap(jcr); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -1878,7 +1878,7 @@ static bool BackupCmd(JobControlRecord* jcr) goto cleanup; } - jcr->setJobStatus(JS_Blocked); + jcr->setJobStatusWithPriorityCheck(JS_Blocked); jcr->setJobType(JT_BACKUP); Dmsg1(100, "begin backup ff=%p\n", jcr->impl->ff); @@ -1999,11 +1999,11 @@ static bool BackupCmd(JobControlRecord* jcr) // Send Files to Storage daemon Dmsg1(110, "begin blast ff=%p\n", (FindFilesPacket*)jcr->impl->ff); if (!BlastDataToStorageDaemon(jcr, nullptr, cipher)) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); BnetSuppressErrorMessages(sd, 1); Dmsg0(110, "Error in blast_data.\n"); } else { - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); /* Note, the above set status will not override an error */ if (!jcr->IsTerminatedOk()) { BnetSuppressErrorMessages(sd, 1); @@ -2011,7 +2011,7 @@ static bool BackupCmd(JobControlRecord* jcr) } // Expect to get response to append_data from Storage daemon if (!response(jcr, sd, OK_append, "Append Data")) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); goto cleanup; } @@ -2019,7 +2019,7 @@ static bool BackupCmd(JobControlRecord* jcr) sd->fsend(append_end, jcr->impl->Ticket); /* Get end OK */ if (!response(jcr, sd, OK_end, "Append End")) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); goto cleanup; } @@ -2277,14 +2277,14 @@ static bool RestoreCmd(JobControlRecord* jcr) dir->fsend(OKrestore); Dmsg1(110, "filed>dird: %s", dir->msg); - jcr->setJobStatus(JS_Blocked); + jcr->setJobStatusWithPriorityCheck(JS_Blocked); if (!OpenSdReadSession(jcr)) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); goto bail_out; } - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); // Do restore of files and data StartDirHeartbeat(jcr); @@ -2314,9 +2314,9 @@ static bool RestoreCmd(JobControlRecord* jcr) StopDirHeartbeat(jcr); if (jcr->JobWarnings) { - jcr->setJobStatus(JS_Warnings); + jcr->setJobStatusWithPriorityCheck(JS_Warnings); } else { - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); } // Send Close session command to Storage daemon @@ -2361,7 +2361,9 @@ static bool RestoreCmd(JobControlRecord* jcr) bail_out: BfreeAndNull(jcr->where); - if (jcr->JobErrors) { jcr->setJobStatus(JS_ErrorTerminated); } + if (jcr->JobErrors) { + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); + } Dmsg0(100, "Done in job.c\n"); diff --git a/core/src/filed/estimate.cc b/core/src/filed/estimate.cc index a423cbc23..167107ea3 100644 --- a/core/src/filed/estimate.cc +++ b/core/src/filed/estimate.cc @@ -40,7 +40,7 @@ int MakeEstimate(JobControlRecord* jcr) { int status; - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); SetFindOptions((FindFilesPacket*)jcr->impl->ff, jcr->impl->incremental, jcr->impl->since_time); diff --git a/core/src/filed/restore.cc b/core/src/filed/restore.cc index 5458f80e8..a11cff2f8 100644 --- a/core/src/filed/restore.cc +++ b/core/src/filed/restore.cc @@ -414,7 +414,7 @@ void DoRestore(JobControlRecord* jcr) rctx.jcr = jcr; sd = jcr->store_bsock; - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); LockRes(my_config); ClientResource* client @@ -426,7 +426,7 @@ void DoRestore(JobControlRecord* jcr) buf_size = 0; /* use default */ } if (!BnetSetBufferSize(sd, buf_size, BNET_SETBUF_WRITE)) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return; } jcr->buf_size = sd->message_length; @@ -1040,11 +1040,11 @@ void DoRestore(JobControlRecord* jcr) } if (!ClosePreviousStream(jcr, rctx)) { goto bail_out; } - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); goto ok_out; bail_out: - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); ok_out: #ifdef HAVE_WIN32 diff --git a/core/src/filed/sd_cmds.cc b/core/src/filed/sd_cmds.cc index 91991ab3f..879fe9592 100644 --- a/core/src/filed/sd_cmds.cc +++ b/core/src/filed/sd_cmds.cc @@ -1,7 +1,7 @@ /* BAREOS® - Backup Archiving REcovery Open Sourced - Copyright (C) 2013-2019 Bareos GmbH & Co. KG + Copyright (C) 2013-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -84,7 +84,7 @@ void* handle_stored_connection(BareosSocket* sd) if (!AuthenticateStoragedaemon(jcr)) { Dmsg1(50, "Authentication failed Job %s\n", jcr->Job); Jmsg(jcr, M_FATAL, 0, _("Unable to authenticate Storage daemon\n")); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } else { Dmsg2(50, "OK Authentication jid=%u Job %s\n", (uint32_t)jcr->JobId, jcr->Job); diff --git a/core/src/filed/verify.cc b/core/src/filed/verify.cc index 544010859..01b05a127 100644 --- a/core/src/filed/verify.cc +++ b/core/src/filed/verify.cc @@ -62,7 +62,7 @@ static bool calculate_file_chksum(JobControlRecord* jcr, */ void DoVerify(JobControlRecord* jcr) { - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); jcr->buf_size = DEFAULT_NETWORK_BUFFER_SIZE; if ((jcr->impl->big_buf = (char*)malloc(jcr->buf_size)) == NULL) { Jmsg1(jcr, M_ABORT, 0, _("Cannot malloc %d network read buffer\n"), @@ -79,7 +79,7 @@ void DoVerify(JobControlRecord* jcr) free(jcr->impl->big_buf); jcr->impl->big_buf = NULL; } - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); } /** diff --git a/core/src/filed/verify_vol.cc b/core/src/filed/verify_vol.cc index adb2b0c6b..dcaff73b8 100644 --- a/core/src/filed/verify_vol.cc +++ b/core/src/filed/verify_vol.cc @@ -2,7 +2,7 @@ BAREOS® - Backup Archiving REcovery Open Sourced Copyright (C) 2002-2010 Free Software Foundation Europe e.V. - Copyright (C) 2016-2020 Bareos GmbH & Co. KG + Copyright (C) 2016-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -62,11 +62,11 @@ void DoVerifyVolume(JobControlRecord* jcr) sd = jcr->store_bsock; if (!sd) { Jmsg(jcr, M_FATAL, 0, _("Storage command not issued before Verify.\n")); - jcr->setJobStatus(JS_FatalError); + jcr->setJobStatusWithPriorityCheck(JS_FatalError); return; } dir = jcr->dir_bsock; - jcr->setJobStatus(JS_Running); + jcr->setJobStatusWithPriorityCheck(JS_Running); LockRes(my_config); ClientResource* client @@ -79,7 +79,7 @@ void DoVerifyVolume(JobControlRecord* jcr) buf_size = 0; /* use default */ } if (!BnetSetBufferSize(sd, buf_size, BNET_SETBUF_WRITE)) { - jcr->setJobStatus(JS_FatalError); + jcr->setJobStatusWithPriorityCheck(JS_FatalError); return; } jcr->buf_size = sd->message_length; @@ -264,11 +264,11 @@ void DoVerifyVolume(JobControlRecord* jcr) } /* end switch */ } /* end while bnet_get */ - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); goto ok_out; bail_out: - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); ok_out: CleanupCompression(jcr); diff --git a/core/src/include/jcr.h b/core/src/include/jcr.h index f338f88a5..816aa1a92 100644 --- a/core/src/include/jcr.h +++ b/core/src/include/jcr.h @@ -132,7 +132,7 @@ class JobControlRecord { bool IsPlugin() const { return (cmd_plugin || opt_plugin); } const char* get_OperationName(); /**< in lib/jcr.c */ const char* get_ActionName(bool past = false); /**< in lib/jcr.c */ - void setJobStatus(int newJobStatus); /**< in lib/jcr.c */ + void setJobStatusWithPriorityCheck(int newJobStatus); /**< in lib/jcr.c */ bool sendJobStatus(); /**< in lib/jcr.c */ bool sendJobStatus(int newJobStatus); /**< in lib/jcr.c */ bool JobReads(); /**< in lib/jcr.c */ diff --git a/core/src/lib/compression.cc b/core/src/lib/compression.cc index e6ef413c1..ab507793d 100644 --- a/core/src/lib/compression.cc +++ b/core/src/lib/compression.cc @@ -3,7 +3,7 @@ Copyright (C) 2000-2011 Free Software Foundation Europe e.V. Copyright (C) 2011-2012 Planets Communications B.V. - Copyright (C) 2013-2021 Bareos GmbH & Co. KG + Copyright (C) 2013-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -304,7 +304,7 @@ static bool compress_with_zlib(JobControlRecord* jcr, if ((zstat = deflate(pZlibStream, Z_FINISH)) != Z_STREAM_END) { Jmsg(jcr, M_FATAL, 0, _("Compression deflate error: %d\n"), zstat); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -313,7 +313,7 @@ static bool compress_with_zlib(JobControlRecord* jcr, // Reset zlib stream to be able to begin from scratch again if ((zstat = deflateReset(pZlibStream)) != Z_OK) { Jmsg(jcr, M_FATAL, 0, _("Compression deflateReset error: %d\n"), zstat); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -344,7 +344,7 @@ static bool compress_with_lzo(JobControlRecord* jcr, if (lzores != LZO_E_OK || *compress_len > max_compress_len) { // This should NEVER happen Jmsg(jcr, M_FATAL, 0, _("Compression LZO error: %d\n"), lzores); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -376,7 +376,7 @@ static bool compress_with_fastlz(JobControlRecord* jcr, if ((zstat = fastlzlibCompress(pZfastStream, Z_FINISH)) != Z_STREAM_END) { Jmsg(jcr, M_FATAL, 0, _("Compression fastlzlibCompress error: %d\n"), zstat); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -386,7 +386,7 @@ static bool compress_with_fastlz(JobControlRecord* jcr, if ((zstat = fastlzlibCompressReset(pZfastStream)) != Z_OK) { Jmsg(jcr, M_FATAL, 0, _("Compression fastlzlibCompressReset error: %d\n"), zstat); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } diff --git a/core/src/lib/jcr.cc b/core/src/lib/jcr.cc index cc1f1e072..c3de7a874 100644 --- a/core/src/lib/jcr.cc +++ b/core/src/lib/jcr.cc @@ -217,7 +217,7 @@ JobControlRecord::JobControlRecord() JobId = 0; setJobType(JT_SYSTEM); /* internal job until defined */ setJobLevel(L_NONE); - setJobStatus(JS_Created); /* ready to run */ + setJobStatusWithPriorityCheck(JS_Created); /* ready to run */ SetTimeoutHandler(); } @@ -743,7 +743,7 @@ bool JobControlRecord::sendJobStatus() bool JobControlRecord::sendJobStatus(int newJobStatus) { if (!is_JobStatus(newJobStatus)) { - setJobStatus(newJobStatus); + setJobStatusWithPriorityCheck(newJobStatus); if (dir_bsock) { return dir_bsock->fsend(Job_status, Job, JobStatus); } } @@ -756,7 +756,7 @@ void JobControlRecord::setJobStarted() job_started_time = time(nullptr); } -void JobControlRecord::setJobStatus(int newJobStatus) +void JobControlRecord::setJobStatusWithPriorityCheck(int newJobStatus) { int priority; int old_priority = 0; diff --git a/core/src/lib/message.cc b/core/src/lib/message.cc index ed45a30aa..1c4e66176 100644 --- a/core/src/lib/message.cc +++ b/core/src/lib/message.cc @@ -1291,7 +1291,7 @@ void Jmsg(JobControlRecord* jcr, int type, utime_t mtime, const char* fmt, ...) break; case M_FATAL: Mmsg(buf, _("%s JobId %u: Fatal error: "), my_name, JobId); - if (jcr) { jcr->setJobStatus(JS_FatalError); } + if (jcr) { jcr->setJobStatusWithPriorityCheck(JS_FatalError); } if (jcr && jcr->JobErrors == 0) { jcr->JobErrors = 1; } break; case M_ERROR: diff --git a/core/src/lib/runscript.cc b/core/src/lib/runscript.cc index ee16bf438..94f1bfeac 100644 --- a/core/src/lib/runscript.cc +++ b/core/src/lib/runscript.cc @@ -190,7 +190,7 @@ int RunScripts(JobControlRecord* jcr, _("Runscript: run %s \"%s\" could not execute, " "not in one of the allowed scripts dirs\n"), label, script->command.c_str()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); goto bail_out; } @@ -274,7 +274,7 @@ bool RunScript::Run(JobControlRecord* jcr, const char* name) bail_out: /* cancel running job properly */ - if (fail_on_error) { jcr->setJobStatus(JS_ErrorTerminated); } + if (fail_on_error) { jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } Dmsg1(100, "runscript failed. fail_on_error=%d\n", fail_on_error); return false; } diff --git a/core/src/plugins/stored/autoxflate/autoxflate-sd.cc b/core/src/plugins/stored/autoxflate/autoxflate-sd.cc index d7c198a71..9dbe6d0ef 100644 --- a/core/src/plugins/stored/autoxflate/autoxflate-sd.cc +++ b/core/src/plugins/stored/autoxflate/autoxflate-sd.cc @@ -481,7 +481,7 @@ static bool SetupAutoDeflation(PluginContext* ctx, DeviceControlRecord* dcr) != Z_OK) { Jmsg(ctx, M_FATAL, _("autoxflate-sd: Compression deflateParams error: %d\n"), zstat); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); goto bail_out; } break; @@ -517,7 +517,7 @@ static bool SetupAutoDeflation(PluginContext* ctx, DeviceControlRecord* dcr) _("autoxflate-sd: Compression fastlzlibSetCompressor error: " "%d\n"), zstat); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); goto bail_out; } break; diff --git a/core/src/stored/append.cc b/core/src/stored/append.cc index 1c3336ec4..411890967 100644 --- a/core/src/stored/append.cc +++ b/core/src/stored/append.cc @@ -181,18 +181,18 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what) jcr->impl->dcr->device_resource->max_network_buffer_size, BNET_SETBUF_WRITE)) { Jmsg0(jcr, M_FATAL, 0, _("Unable to set network buffer size.\n")); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } if (!AcquireDeviceForAppend(jcr->impl->dcr)) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } if (GeneratePluginEvent(jcr, bSdEventSetupRecordTranslation, jcr->impl->dcr) != bRC_OK) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -204,13 +204,13 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what) Dmsg1(50, "Begin append device=%s\n", dev->print_name()); if (!BeginDataSpool(jcr->impl->dcr)) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } if (!BeginAttributeSpool(jcr)) { DiscardDataSpool(jcr->impl->dcr); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -223,7 +223,7 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what) if (!WriteSessionLabel(jcr->impl->dcr, SOS_LABEL)) { Jmsg1(jcr, M_FATAL, 0, _("Write session label failed. ERR=%s\n"), dev->bstrerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); ok = false; } if (dev->VolCatInfo.VolCatName[0] == 0) { @@ -403,7 +403,7 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what) } // Create Job status for end of session label - jcr->setJobStatus(ok ? JS_Terminated : JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(ok ? JS_Terminated : JS_ErrorTerminated); if (ok && bs == jcr->file_bsock) { // Terminate connection with FD @@ -429,7 +429,7 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what) dev->bstrerror()); PossibleIncompleteJob(jcr, last_file_index); } - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); ok = false; } Dmsg0(90, "back from write_end_session_label()\n"); @@ -443,7 +443,7 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what) Dmsg0(100, _("Set ok=FALSE after WriteBlockToDevice.\n")); PossibleIncompleteJob(jcr, last_file_index); } - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); ok = false; } else if (ok && !jcr->IsJobCanceled()) { // Send attributes of the final partial block of the session diff --git a/core/src/stored/bscan.cc b/core/src/stored/bscan.cc index 041f0ee17..22dd2cc5f 100644 --- a/core/src/stored/bscan.cc +++ b/core/src/stored/bscan.cc @@ -699,7 +699,7 @@ static bool RecordCb(DeviceControlRecord* dcr, DeviceRecord* rec) UpdateJobRecord(db, &jr, &elabel, rec); mjcr->end_time = jr.EndTime; - mjcr->setJobStatus(JS_Terminated); + mjcr->setJobStatusWithPriorityCheck(JS_Terminated); // Create JobMedia record mjcr->impl->read_dcr->VolLastIndex = dcr->VolLastIndex; diff --git a/core/src/stored/btape.cc b/core/src/stored/btape.cc index 5cacbf439..9a1c63a1a 100644 --- a/core/src/stored/btape.cc +++ b/core/src/stored/btape.cc @@ -2145,7 +2145,7 @@ static void fillcmd() */ Dmsg0(100, "just before acquire_device\n"); if (!AcquireDeviceForAppend(dcr)) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); exit_code = 1; return; } @@ -2154,7 +2154,7 @@ static void fillcmd() Dmsg0(100, "Just after AcquireDeviceForAppend\n"); // Write Begin Session Record if (!WriteSessionLabel(dcr, SOS_LABEL)) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); Jmsg1(jcr, M_FATAL, 0, _("Write session label failed. ERR=%s\n"), dev->bstrerror()); ok = false; @@ -2255,10 +2255,10 @@ static void fillcmd() Dmsg0(100, "Write_end_session_label()\n"); /* Create Job status for end of session label */ if (!JobCanceled(jcr) && ok) { - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); } else if (!ok) { Pmsg0(000, _("Job canceled.\n")); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); exit_code = 1; } if (!WriteSessionLabel(dcr, EOS_LABEL)) { diff --git a/core/src/stored/dir_cmd.cc b/core/src/stored/dir_cmd.cc index 078b21d1b..5e1180c52 100644 --- a/core/src/stored/dir_cmd.cc +++ b/core/src/stored/dir_cmd.cc @@ -518,7 +518,7 @@ static bool CancelCmd(JobControlRecord* cjcr) } oldStatus = jcr->JobStatus; - jcr->setJobStatus(status); + jcr->setJobStatusWithPriorityCheck(status); Dmsg2(800, "Cancel JobId=%d %p\n", jcr->JobId, jcr); if (!jcr->authenticated diff --git a/core/src/stored/fd_cmds.cc b/core/src/stored/fd_cmds.cc index 30e2ad4c6..a8ce421ba 100644 --- a/core/src/stored/fd_cmds.cc +++ b/core/src/stored/fd_cmds.cc @@ -3,7 +3,7 @@ Copyright (C) 2000-2011 Free Software Foundation Europe e.V. Copyright (C) 2011-2012 Planets Communications B.V. - Copyright (C) 2013-2021 Bareos GmbH & Co. KG + Copyright (C) 2013-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -134,7 +134,7 @@ void* HandleFiledConnection(BareosSocket* fd, char* job_name) if (!AuthenticateFiledaemon(jcr)) { Dmsg1(50, "Authentication failed Job %s\n", jcr->Job); Jmsg(jcr, M_FATAL, 0, _("Unable to authenticate File daemon\n")); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } else { utime_t now; @@ -177,7 +177,7 @@ void RunJob(JobControlRecord* jcr) jcr->end_time = time(NULL); DequeueMessages(jcr); /* send any queued messages */ - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); GeneratePluginEvent(jcr, bSdEventJobEnd); @@ -220,7 +220,7 @@ void DoFdCommands(JobControlRecord* jcr) } else { Jmsg0(jcr, M_FATAL, 0, _("Command error with FD, hanging up.\n")); } - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } quit = true; } diff --git a/core/src/stored/job.cc b/core/src/stored/job.cc index fd209fd79..f6a3d4318 100644 --- a/core/src/stored/job.cc +++ b/core/src/stored/job.cc @@ -98,7 +98,7 @@ bool job_cmd(JobControlRecord* jcr) PmStrcpy(jcr->errmsg, dir->msg); dir->fsend(BAD_job, status, jcr->errmsg); Dmsg1(100, ">dird: %s", dir->msg); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } @@ -346,7 +346,7 @@ bool FinishCmd(JobControlRecord* jcr) jcr->end_time = time(NULL); DequeueMessages(jcr); /* send any queued messages */ - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); switch (jcr->getJobType()) { case JT_BACKUP: diff --git a/core/src/stored/mac.cc b/core/src/stored/mac.cc index 38b952eff..9a24c02a6 100644 --- a/core/src/stored/mac.cc +++ b/core/src/stored/mac.cc @@ -158,7 +158,7 @@ static bool CloneRecordInternally(DeviceControlRecord* dcr, DeviceRecord* rec) if (!WriteSessionLabel(jcr->impl->dcr, SOS_LABEL)) { Jmsg1(jcr, M_FATAL, 0, _("Write session label failed. ERR=%s\n"), dev->bstrerror()); - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); retval = false; goto bail_out; } @@ -627,7 +627,7 @@ bool DoMacRun(JobControlRecord* jcr) } bail_out: - if (!ok) { jcr->setJobStatus(JS_ErrorTerminated); } + if (!ok) { jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } if (!acquire_fail && !jcr->impl->remote_replicate && jcr->impl->dcr) { /* @@ -644,7 +644,7 @@ bail_out: JS_Terminated to write into EOS_LABEL */ char currentJobStatus = jcr->JobStatus; - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); // Write End Of Session Label DeviceControlRecord* dcr = jcr->impl->dcr; @@ -655,11 +655,11 @@ bail_out: Jmsg1(jcr, M_FATAL, 0, _("Error writing end session label. ERR=%s\n"), dev->bstrerror()); } - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); ok = false; } else { /* restore JobStatus */ - jcr->setJobStatus(currentJobStatus); + jcr->setJobStatusWithPriorityCheck(currentJobStatus); } // Flush out final partial block of this session if (!jcr->impl->dcr->WriteBlockToDevice()) { @@ -708,7 +708,7 @@ bail_out: Dmsg0(30, "Done reading.\n"); jcr->end_time = time(NULL); DequeueMessages(jcr); /* send any queued messages */ - if (ok) { jcr->setJobStatus(JS_Terminated); } + if (ok) { jcr->setJobStatusWithPriorityCheck(JS_Terminated); } GeneratePluginEvent(jcr, bSdEventJobEnd); dir->fsend(Job_end, jcr->Job, jcr->JobStatus, jcr->JobFiles, diff --git a/core/src/stored/ndmp_tape.cc b/core/src/stored/ndmp_tape.cc index 5e0f15447..78693ca83 100644 --- a/core/src/stored/ndmp_tape.cc +++ b/core/src/stored/ndmp_tape.cc @@ -716,7 +716,7 @@ extern "C" ndmp9_error bndmp_tape_open(struct ndm_session* sess, return NDMP9_NO_ERR; bail_out: - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return NDMP9_NO_DEVICE_ERR; } @@ -832,7 +832,7 @@ extern "C" ndmp9_error bndmp_tape_write(struct ndm_session* sess, *done_count = count; err = NDMP9_NO_ERR; } else { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); err = NDMP9_IO_ERR; } @@ -886,7 +886,7 @@ extern "C" ndmp9_error bndmp_tape_read(struct ndm_session* sess, err = NDMP9_NO_ERR; } } else { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); err = NDMP9_IO_ERR; } @@ -948,7 +948,7 @@ void EndOfNdmpBackup(JobControlRecord* jcr) Jmsg1(jcr, M_FATAL, 0, _("Error writing end session label. ERR=%s\n"), dcr->dev->bstrerror()); } - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } Dmsg0(90, "back from write_end_session_label()\n"); @@ -961,7 +961,7 @@ void EndOfNdmpBackup(JobControlRecord* jcr) Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"), dcr->dev->print_name(), dcr->dev->bstrerror()); } - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } } diff --git a/core/src/stored/read.cc b/core/src/stored/read.cc index 3470ecac7..f418d61eb 100644 --- a/core/src/stored/read.cc +++ b/core/src/stored/read.cc @@ -3,7 +3,7 @@ Copyright (C) 2000-2011 Free Software Foundation Europe e.V. Copyright (C) 2011-2012 Planets Communications B.V. - Copyright (C) 2013-2020 Bareos GmbH & Co. KG + Copyright (C) 2013-2022 Bareos GmbH & Co. KG This program is Free Software; you can redistribute it and/or modify it under the terms of version three of the GNU Affero General Public @@ -84,7 +84,7 @@ bool DoReadData(JobControlRecord* jcr) // Let any SD plugin know now its time to setup the record translation infra. if (GeneratePluginEvent(jcr, bSdEventSetupRecordTranslation, dcr) != bRC_OK) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); return false; } diff --git a/core/src/stored/reserve.cc b/core/src/stored/reserve.cc index bf353714d..a3ab22a79 100644 --- a/core/src/stored/reserve.cc +++ b/core/src/stored/reserve.cc @@ -80,7 +80,7 @@ bool use_cmd(JobControlRecord* jcr) { // Get the device, media, and pool information if (!UseDeviceCmd(jcr)) { - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key)); return false; } diff --git a/core/src/stored/sd_cmds.cc b/core/src/stored/sd_cmds.cc index 6761ad6fb..b648a7f8f 100644 --- a/core/src/stored/sd_cmds.cc +++ b/core/src/stored/sd_cmds.cc @@ -134,7 +134,9 @@ void* handle_stored_connection(BareosSocket* sd, char* job_name) jcr->Job); } - if (!jcr->authenticated) { jcr->setJobStatus(JS_ErrorTerminated); } + if (!jcr->authenticated) { + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); + } pthread_cond_signal(&jcr->impl->job_start_wait); /* wake waiting job */ FreeJcr(jcr); @@ -174,7 +176,7 @@ static void DoSdCommands(JobControlRecord* jcr) } else { Jmsg0(jcr, M_FATAL, 0, _("Command error with SD, hanging up.\n")); } - jcr->setJobStatus(JS_ErrorTerminated); + jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); } quit = true; } @@ -256,7 +258,7 @@ bool DoListenRun(JobControlRecord* jcr) jcr->end_time = time(NULL); DequeueMessages(jcr); /* send any queued messages */ - jcr->setJobStatus(JS_Terminated); + jcr->setJobStatusWithPriorityCheck(JS_Terminated); cleanup: GeneratePluginEvent(jcr, bSdEventJobEnd); diff --git a/core/src/stored/spool.cc b/core/src/stored/spool.cc index 5b567eaca..cb8148ee6 100644 --- a/core/src/stored/spool.cc +++ b/core/src/stored/spool.cc @@ -265,12 +265,12 @@ static bool DespoolData(DeviceControlRecord* dcr, bool commit) "...\n"), jcr->impl->dcr->VolumeName, edit_uint64_with_commas(jcr->impl->dcr->job_spool_size, ec1)); - jcr->setJobStatus(JS_DataCommitting); + jcr->setJobStatusWithPriorityCheck(JS_DataCommitting); } else { Jmsg(jcr, M_INFO, 0, _("Writing spooled data to Volume. Despooling %s bytes ...\n"), edit_uint64_with_commas(jcr->impl->dcr->job_spool_size, ec1)); - jcr->setJobStatus(JS_DataDespooling); + jcr->setJobStatusWithPriorityCheck(JS_DataDespooling); } jcr->sendJobStatus(JS_DataDespooling); dcr->despool_wait = true; diff --git a/core/src/stored/stored.cc b/core/src/stored/stored.cc index 25371c15d..1c329549d 100644 --- a/core/src/stored/stored.cc +++ b/core/src/stored/stored.cc @@ -613,7 +613,7 @@ static foreach_jcr (jcr) { BareosSocket* fd; if (jcr->JobId == 0) { continue; /* ignore console */ } - jcr->setJobStatus(JS_Canceled); + jcr->setJobStatusWithPriorityCheck(JS_Canceled); fd = jcr->file_bsock; if (fd) { fd->SetTimedOut(); |