Don't emit scaling event error when a deployment is underway (#11556)
This commit is contained in:
parent
6dddf9a1fb
commit
9d6842dd4d
|
@ -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 {
|
||||
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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue