Skip to content

Commit

Permalink
ua_run: pass consolidate job to spawned virtualfull
Browse files Browse the repository at this point in the history
  • Loading branch information
SamuelBoerlin authored and arogge committed Oct 19, 2023
1 parent 2c94d9d commit 4ff821e
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 4 deletions.
11 changes: 7 additions & 4 deletions core/src/dird/consolidate.cc
Expand Up @@ -57,7 +57,8 @@ bool DoConsolidateInit(JobControlRecord* jcr)
* Start a Virtual(Full) Job that creates a new virtual backup
* containing the jobids given in jcr->dir_impl_->vf_jobids
*/
static inline void StartNewConsolidationJob(JobControlRecord* jcr,
static inline void StartNewConsolidationJob(const JobResource* consolidate_job,
JobControlRecord* jcr,
char* jobname)
{
JobId_t jobid;
Expand All @@ -66,9 +67,10 @@ 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,
Mmsg(ua->cmd, "run job=\"%s\" jobid=%s level=VirtualFull %s consolidatejob=%s", jobname,
jcr->dir_impl->vf_jobids,
jcr->accurate ? "accurate=yes" : "accurate=no");
jcr->accurate ? "accurate=yes" : "accurate=no",
consolidate_job->resource_name_);

Dmsg1(debuglevel, "=============== consolidate cmd=%s\n", ua->cmd);
ParseUaArgs(ua); /* parse command */
Expand All @@ -89,6 +91,7 @@ static bool ConsolidateJobs(JobControlRecord* jcr)
{
const int32_t max_full_consolidations
= jcr->dir_impl->res.job->MaxFullConsolidations;
JobResource* const consolidate_job = jcr->dir_impl->res.job;
int32_t fullconsolidations_started = 0;
JobResource* job;
time_t now = time(NULL);
Expand Down Expand Up @@ -271,7 +274,7 @@ static bool ConsolidateJobs(JobControlRecord* jcr)

Jmsg(jcr, M_INFO, 0, _("%s: Start new consolidation\n"),
job->resource_name_);
StartNewConsolidationJob(jcr, job->resource_name_);
StartNewConsolidationJob(consolidate_job, jcr, job->resource_name_);
}
}
return true;
Expand Down
2 changes: 2 additions & 0 deletions core/src/dird/ua.h
Expand Up @@ -254,13 +254,15 @@ class RunContext {
char* since = nullptr;
char* StoreName = nullptr;
char* verify_job_name = nullptr;
char* consolidate_job_name = nullptr;
char* when = nullptr;
char* where = nullptr;
const char* replace = nullptr;
const char* verify_list = nullptr;
JobResource* job = nullptr;
JobResource* verify_job = nullptr;
JobResource* previous_job = nullptr;
JobResource* consolidate_job = nullptr;
UnifiedStorageResource* store = nullptr;
ClientResource* client = nullptr;
FilesetResource* fileset = nullptr;
Expand Down
24 changes: 24 additions & 0 deletions core/src/dird/ua_run.cc
Expand Up @@ -1767,6 +1767,7 @@ static bool ScanCommandLineArguments(UaContext* ua, RunContext& rc)
"ignoreduplicatecheck", /* 29 */
"accurate", /* 30 */
"backupformat", /* 31 */
"consolidatejob", /* 32 */
NULL};

#define YES_POS 14
Expand Down Expand Up @@ -2054,6 +2055,14 @@ static bool ScanCommandLineArguments(UaContext* ua, RunContext& rc)
rc.backup_format = ua->argv[i];
kw_ok = true;
break;
case 32: /* consolidatejob */
if (rc.consolidate_job_name) {
ua->SendMsg(_("Consolidate Job specified twice.\n"));
return false;
}
rc.consolidate_job_name = ua->argv[i];
kw_ok = true;
break;
default:
break;
}
Expand Down Expand Up @@ -2247,6 +2256,21 @@ static bool ScanCommandLineArguments(UaContext* ua, RunContext& rc)
} else {
rc.previous_job = rc.job->verify_job;
}

if (rc.consolidate_job_name) {
rc.consolidate_job = ua->GetJobResWithName(rc.consolidate_job_name);
if (!rc.consolidate_job) {
ua->SendMsg(_("Consolidate Job \"%s\" not found.\n"), rc.consolidate_job_name);
rc.consolidate_job = select_job_resource(ua);
}
if (rc.consolidate_job && rc.consolidate_job->JobType != JT_CONSOLIDATE) {
ua->ErrorMsg(_("Invalid Consolidate Job \"%s\". Job type is \"%c\" but expected \"%c\".\n"),
rc.consolidate_job->resource_name_, rc.consolidate_job->JobType,
JT_CONSOLIDATE);
return false;
}
}

return true;
}
} /* namespace directordaemon */

0 comments on commit 4ff821e

Please sign in to comment.