diff options
Diffstat (limited to 'core/src/dird/consolidate.cc')
-rw-r--r-- | core/src/dird/consolidate.cc | 86 |
1 files changed, 44 insertions, 42 deletions
diff --git a/core/src/dird/consolidate.cc b/core/src/dird/consolidate.cc index eb91d833c..f4c5b46e6 100644 --- a/core/src/dird/consolidate.cc +++ b/core/src/dird/consolidate.cc @@ -31,7 +31,7 @@ #include "include/bareos.h" #include "dird.h" #include "dird/consolidate.h" -#include "dird/jcr_private.h" +#include "dird/director_jcr_impl.h" #include "dird/job.h" #include "dird/storage.h" #include "dird/ua_input.h" @@ -54,7 +54,7 @@ bool DoConsolidateInit(JobControlRecord* jcr) /** * Start a Virtual(Full) Job that creates a new virtual backup - * containing the jobids given in jcr->impl_->vf_jobids + * containing the jobids given in jcr->dir_impl_->vf_jobids */ static inline void StartNewConsolidationJob(JobControlRecord* jcr, char* jobname) @@ -66,7 +66,8 @@ static inline void StartNewConsolidationJob(JobControlRecord* jcr, ua = new_ua_context(jcr); ua->batch = true; Mmsg(ua->cmd, "run job=\"%s\" jobid=%s level=VirtualFull %s", jobname, - jcr->impl->vf_jobids, jcr->accurate ? "accurate=yes" : "accurate=no"); + jcr->dir_impl->vf_jobids, + jcr->accurate ? "accurate=yes" : "accurate=no"); Dmsg1(debuglevel, "=============== consolidate cmd=%s\n", ua->cmd); ParseUaArgs(ua); /* parse command */ @@ -100,22 +101,22 @@ bool DoConsolidate(JobControlRecord* jcr) int32_t fullconsolidations_started = 0; int32_t max_full_consolidations = 0; - tmpjob = jcr->impl->res.job; /* Memorize job */ + tmpjob = jcr->dir_impl->res.job; /* Memorize job */ // Get Value for MaxFullConsolidations from Consolidation job - max_full_consolidations = jcr->impl->res.job->MaxFullConsolidations; + max_full_consolidations = jcr->dir_impl->res.job->MaxFullConsolidations; - jcr->impl->jr.JobId = jcr->JobId; - jcr->impl->fname = (char*)GetPoolMemory(PM_FNAME); + jcr->dir_impl->jr.JobId = jcr->JobId; + jcr->dir_impl->fname = (char*)GetPoolMemory(PM_FNAME); // do not cancel virtual fulls started by consolidation - jcr->impl->IgnoreDuplicateJobChecking = true; + jcr->dir_impl->IgnoreDuplicateJobChecking = true; // Print Job Start message 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) { @@ -123,12 +124,12 @@ bool DoConsolidate(JobControlRecord* jcr) job->resource_name_); // Fake always incremental job as job of current jcr. - jcr->impl->res.job = job; - jcr->impl->res.fileset = job->fileset; - jcr->impl->res.client = job->client; - jcr->impl->jr.JobLevel = L_INCREMENTAL; - jcr->impl->jr.limit = 0; - jcr->impl->jr.StartTime = 0; + jcr->dir_impl->res.job = job; + jcr->dir_impl->res.fileset = job->fileset; + jcr->dir_impl->res.client = job->client; + jcr->dir_impl->jr.JobLevel = L_INCREMENTAL; + jcr->dir_impl->jr.limit = 0; + jcr->dir_impl->jr.StartTime = 0; if (!GetOrCreateFilesetRecord(jcr)) { Jmsg(jcr, M_FATAL, 0, _("JobId=%d no FileSet\n"), (int)jcr->JobId); @@ -144,7 +145,7 @@ bool DoConsolidate(JobControlRecord* jcr) // First determine the number of total incrementals db_list_ctx all_jobids_ctx; - jcr->db->AccurateGetJobids(jcr, &jcr->impl->jr, &all_jobids_ctx); + jcr->db->AccurateGetJobids(jcr, &jcr->dir_impl->jr, &all_jobids_ctx); Dmsg1(10, "unlimited jobids list: %s.\n", all_jobids_ctx.GetAsString().c_str()); @@ -156,20 +157,20 @@ bool DoConsolidate(JobControlRecord* jcr) if (job->AlwaysIncrementalJobRetention) { char sdt[50]; - jcr->impl->jr.StartTime = now - job->AlwaysIncrementalJobRetention; - bstrftimes(sdt, sizeof(sdt), jcr->impl->jr.StartTime); + jcr->dir_impl->jr.StartTime = now - job->AlwaysIncrementalJobRetention; + bstrftimes(sdt, sizeof(sdt), jcr->dir_impl->jr.StartTime); Jmsg(jcr, M_INFO, 0, _("%s: considering jobs older than %s for consolidation.\n"), job->resource_name_, sdt); Dmsg4(10, _("%s: considering jobs with ClientId %d and FilesetId %d older " "than %s for consolidation.\n"), - job->resource_name_, jcr->impl->jr.ClientId, - jcr->impl->jr.FileSetId, sdt); + job->resource_name_, jcr->dir_impl->jr.ClientId, + jcr->dir_impl->jr.FileSetId, sdt); } db_list_ctx jobids_ctx; - jcr->db->AccurateGetJobids(jcr, &jcr->impl->jr, &jobids_ctx); + jcr->db->AccurateGetJobids(jcr, &jcr->dir_impl->jr, &jobids_ctx); Dmsg1(10, "consolidate candidates: %s.\n", jobids_ctx.GetAsString().c_str()); @@ -212,12 +213,12 @@ bool DoConsolidate(JobControlRecord* jcr) const int32_t max_incrementals_to_consolidate = incrementals_total - job->AlwaysIncrementalKeepNumber; - jcr->impl->jr.limit = max_incrementals_to_consolidate + 1; + jcr->dir_impl->jr.limit = max_incrementals_to_consolidate + 1; Dmsg3(10, "total: %d, to_consolidate: %d, limit: %d.\n", incrementals_total, max_incrementals_to_consolidate, - jcr->impl->jr.limit); + jcr->dir_impl->jr.limit); jobids_ctx.clear(); - jcr->db->AccurateGetJobids(jcr, &jcr->impl->jr, &jobids_ctx); + jcr->db->AccurateGetJobids(jcr, &jcr->dir_impl->jr, &jobids_ctx); const int32_t incrementals_to_consolidate = jobids_ctx.size() - 1; Dmsg2(10, "%d consolidate ids after limit: %s.\n", jobids_ctx.size(), jobids_ctx.GetAsString().c_str()); @@ -256,18 +257,18 @@ bool DoConsolidate(JobControlRecord* jcr) if (p) { *p = '\0'; } // Get db record of oldest jobid and check its age - jcr->impl->previous_jr = JobDbRecord{}; - jcr->impl->previous_jr.JobId = str_to_int64(jobids); + jcr->dir_impl->previous_jr = JobDbRecord{}; + jcr->dir_impl->previous_jr.JobId = str_to_int64(jobids); Dmsg1(10, "Previous JobId=%s\n", jobids); - if (!jcr->db->GetJobRecord(jcr, &jcr->impl->previous_jr)) { + if (!jcr->db->GetJobRecord(jcr, &jcr->dir_impl->previous_jr)) { Jmsg(jcr, M_FATAL, 0, _("Error getting Job record for first Job: ERR=%s\n"), jcr->db->strerror()); goto bail_out; } - starttime = jcr->impl->previous_jr.JobTDate; + starttime = jcr->dir_impl->previous_jr.JobTDate; oldest_allowed_starttime = now - job->AlwaysIncrementalMaxFullAge; bstrftimes(sdt_allowed, sizeof(sdt_allowed), oldest_allowed_starttime); bstrftimes(sdt_starttime, sizeof(sdt_starttime), starttime); @@ -305,10 +306,10 @@ bool DoConsolidate(JobControlRecord* jcr) } // Set the virtualfull jobids to be consolidated - if (!jcr->impl->vf_jobids) { - jcr->impl->vf_jobids = GetPoolMemory(PM_MESSAGE); + if (!jcr->dir_impl->vf_jobids) { + jcr->dir_impl->vf_jobids = GetPoolMemory(PM_MESSAGE); } - PmStrcpy(jcr->impl->vf_jobids, p); + PmStrcpy(jcr->dir_impl->vf_jobids, p); Jmsg(jcr, M_INFO, 0, _("%s: Start new consolidation\n"), job->resource_name_); @@ -318,8 +319,8 @@ bool DoConsolidate(JobControlRecord* jcr) bail_out: // Restore original job back to jcr. - jcr->impl->res.job = tmpjob; - jcr->setJobStatus(JS_Terminated); + jcr->dir_impl->res.job = tmpjob; + jcr->setJobStatusWithPriorityCheck(JS_Terminated); ConsolidateCleanup(jcr, JS_Terminated); if (jobids) { free(jobids); } @@ -339,15 +340,15 @@ void ConsolidateCleanup(JobControlRecord* jcr, int TermCode) UpdateJobEnd(jcr, TermCode); - if (!jcr->db->GetJobRecord(jcr, &jcr->impl->jr)) { + if (!jcr->db->GetJobRecord(jcr, &jcr->dir_impl->jr)) { 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 */ - switch (jcr->JobStatus) { + switch (jcr->getJobStatus()) { case JS_Terminated: TermMsg = _("Consolidate OK"); break; @@ -361,12 +362,13 @@ void ConsolidateCleanup(JobControlRecord* jcr, int TermCode) break; default: TermMsg = term_code; - sprintf(term_code, _("Inappropriate term code: %c\n"), jcr->JobStatus); + sprintf(term_code, _("Inappropriate term code: %c\n"), + jcr->getJobStatus()); break; } - bstrftimes(schedt, sizeof(schedt), jcr->impl->jr.SchedTime); - bstrftimes(sdt, sizeof(sdt), jcr->impl->jr.StartTime); - bstrftimes(edt, sizeof(edt), jcr->impl->jr.EndTime); + bstrftimes(schedt, sizeof(schedt), jcr->dir_impl->jr.SchedTime); + bstrftimes(sdt, sizeof(sdt), jcr->dir_impl->jr.StartTime); + bstrftimes(edt, sizeof(edt), jcr->dir_impl->jr.EndTime); Jmsg(jcr, msg_type, 0, _("BAREOS %s (%s): %s\n" @@ -379,9 +381,9 @@ void ConsolidateCleanup(JobControlRecord* jcr, int TermCode) " Job triggered by: %s\n" " Termination: %s\n\n"), kBareosVersionStrings.Full, kBareosVersionStrings.ShortDate, edt, - jcr->impl->jr.JobId, jcr->impl->jr.Job, schedt, sdt, edt, + jcr->dir_impl->jr.JobId, jcr->dir_impl->jr.Job, schedt, sdt, edt, kBareosVersionStrings.JoblogMessage, - JobTriggerToString(jcr->impl->job_trigger).c_str(), TermMsg); + JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), TermMsg); Dmsg0(debuglevel, "Leave ConsolidateCleanup()\n"); } |