Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/bareos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/dird/consolidate.cc')
-rw-r--r--core/src/dird/consolidate.cc86
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");
}