From 4d2e61d30bf5b6a8feec12b00bcc958e9d7c3620 Mon Sep 17 00:00:00 2001 From: Tim Gross Date: Tue, 16 Jun 2020 08:59:32 -0400 Subject: [PATCH] start all but first region deployment in paused state --- nomad/structs/structs.go | 2 +- scheduler/reconcile.go | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/nomad/structs/structs.go b/nomad/structs/structs.go index 73f19c795..27cea92e7 100644 --- a/nomad/structs/structs.go +++ b/nomad/structs/structs.go @@ -3772,7 +3772,7 @@ func (j *Job) Validate() error { if j.Priority < JobMinPriority || j.Priority > JobMaxPriority { mErr.Errors = append(mErr.Errors, fmt.Errorf("Job priority must be between [%d, %d]", JobMinPriority, JobMaxPriority)) } - if len(j.Datacenters) == 0 { + if len(j.Datacenters) == 0 && !j.IsMultiregion() { mErr.Errors = append(mErr.Errors, errors.New("Missing job datacenters")) } else { for _, v := range j.Datacenters { diff --git a/scheduler/reconcile.go b/scheduler/reconcile.go index 73cc5831c..d739e2f53 100644 --- a/scheduler/reconcile.go +++ b/scheduler/reconcile.go @@ -546,6 +546,11 @@ func (a *allocReconciler) computeGroup(group string, all allocSet) bool { // A previous group may have made the deployment already if a.deployment == nil { a.deployment = structs.NewDeployment(a.job) + // only the first region of a multiregion job starts in the + // running state + if a.job.IsMultiregion() && a.job.Region != a.job.Multiregion.Regions[0].Name { + a.deployment.Status = structs.DeploymentStatusPaused + } a.result.deployment = a.deployment }