diff --git a/.changelog/11556.txt b/.changelog/11556.txt new file mode 100644 index 000000000..6eded345d --- /dev/null +++ b/.changelog/11556.txt @@ -0,0 +1,3 @@ +```release-note:improvement +scaling: Don't emit scaling action with error in case of active deployment +``` diff --git a/nomad/job_endpoint.go b/nomad/job_endpoint.go index a2e4d7508..59b5dd106 100644 --- a/nomad/job_endpoint.go +++ b/nomad/job_endpoint.go @@ -1103,31 +1103,7 @@ func (j *Job) Scale(args *structs.JobScaleRequest, reply *structs.JobRegisterRes } if deployment != nil && deployment.Active() && deployment.JobCreateIndex == job.CreateIndex { - msg := "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) + return structs.NewErrRPCCoded(400, "job scaling blocked due to active deployment") } // Commit the job update diff --git a/nomad/job_endpoint_test.go b/nomad/job_endpoint_test.go index 460ebd780..a3e12332f 100644 --- a/nomad/job_endpoint_test.go +++ b/nomad/job_endpoint_test.go @@ -6769,22 +6769,6 @@ func TestJobEndpoint_Scale_DeploymentBlocking(t *testing.T) { require.NotEmpty(resp.EvalID) 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) - } } }