mirror of
https://github.com/kemko/nomad.git
synced 2026-01-01 16:05:42 +03:00
Don't emit scaling event error when a deployment is underway (#11556)
This commit is contained in:
3
.changelog/11556.txt
Normal file
3
.changelog/11556.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
```release-note:improvement
|
||||||
|
scaling: Don't emit scaling action with error in case of active deployment
|
||||||
|
```
|
||||||
@@ -1103,31 +1103,7 @@ func (j *Job) Scale(args *structs.JobScaleRequest, reply *structs.JobRegisterRes
|
|||||||
}
|
}
|
||||||
|
|
||||||
if deployment != nil && deployment.Active() && deployment.JobCreateIndex == job.CreateIndex {
|
if deployment != nil && deployment.Active() && deployment.JobCreateIndex == job.CreateIndex {
|
||||||
msg := "job scaling blocked due to active deployment"
|
return structs.NewErrRPCCoded(400, "job scaling blocked due to active deployment")
|
||||||
_, _, err := j.srv.raftApply(
|
|
||||||
structs.ScalingEventRegisterRequestType,
|
|
||||||
&structs.ScalingEventRequest{
|
|
||||||
Namespace: job.Namespace,
|
|
||||||
JobID: job.ID,
|
|
||||||
TaskGroup: groupName,
|
|
||||||
ScalingEvent: &structs.ScalingEvent{
|
|
||||||
Time: now,
|
|
||||||
PreviousCount: prevCount,
|
|
||||||
Message: msg,
|
|
||||||
Error: true,
|
|
||||||
Meta: map[string]interface{}{
|
|
||||||
"OriginalMessage": args.Message,
|
|
||||||
"OriginalCount": *args.Count,
|
|
||||||
"OriginalMeta": args.Meta,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
// just log the error, this was a best-effort attempt
|
|
||||||
j.logger.Error("scaling event create failed during block scaling action", "error", err)
|
|
||||||
}
|
|
||||||
return structs.NewErrRPCCoded(400, msg)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Commit the job update
|
// Commit the job update
|
||||||
|
|||||||
@@ -6769,22 +6769,6 @@ func TestJobEndpoint_Scale_DeploymentBlocking(t *testing.T) {
|
|||||||
require.NotEmpty(resp.EvalID)
|
require.NotEmpty(resp.EvalID)
|
||||||
require.Greater(resp.EvalCreateIndex, resp.JobModifyIndex)
|
require.Greater(resp.EvalCreateIndex, resp.JobModifyIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
events, _, _ := state.ScalingEventsByJob(nil, job.Namespace, job.ID)
|
|
||||||
require.Equal(1, len(events[groupName]))
|
|
||||||
latestEvent := events[groupName][0]
|
|
||||||
if dLatest.Active() {
|
|
||||||
require.True(latestEvent.Error)
|
|
||||||
require.Nil(latestEvent.Count)
|
|
||||||
require.Contains(latestEvent.Message, "blocked due to active deployment")
|
|
||||||
require.Equal(latestEvent.Meta["OriginalCount"], newCount)
|
|
||||||
require.Equal(latestEvent.Meta["OriginalMessage"], scalingMessage)
|
|
||||||
require.Equal(latestEvent.Meta["OriginalMeta"], scalingMetadata)
|
|
||||||
} else {
|
|
||||||
require.False(latestEvent.Error)
|
|
||||||
require.NotNil(latestEvent.Count)
|
|
||||||
require.Equal(newCount, *latestEvent.Count)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user