Don't emit scaling event error when a deployment is underway (#11556)

This commit is contained in:
Luiz Aoqui 2021-11-23 10:20:18 -05:00 committed by GitHub
parent 6dddf9a1fb
commit 9d6842dd4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 41 deletions

3
.changelog/11556.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:improvement
scaling: Don't emit scaling action with error in case of active deployment
```

View File

@ -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

View File

@ -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)
}
}
}