client: don't emit task shutdown delay event if not waiting (#16281)

This commit is contained in:
Luiz Aoqui 2023-03-03 18:22:06 -05:00 committed by GitHub
parent 3f1ea9da4b
commit 2a1a790820
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 5 deletions

3
.changelog/16281.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
client: Don't emit shutdown delay task event when the shutdown operation is configured to skip the delay
```

View File

@ -985,10 +985,16 @@ func (tr *TaskRunner) handleKill(resultCh <-chan *drivers.ExitResult) *drivers.E
// This allows for things like service de-registration to run
// before waiting to kill task
if delay := tr.Task().ShutdownDelay; delay != 0 {
var ev *structs.TaskEvent
if tr.alloc.DesiredTransition.ShouldIgnoreShutdownDelay() {
tr.logger.Debug("skipping shutdown_delay", "shutdown_delay", delay)
ev = structs.NewTaskEvent(structs.TaskSkippingShutdownDelay).
SetDisplayMessage(fmt.Sprintf("Skipping shutdown_delay of %s before killing the task.", delay))
} else {
tr.logger.Debug("waiting before killing task", "shutdown_delay", delay)
ev := structs.NewTaskEvent(structs.TaskWaitingShuttingDownDelay).
ev = structs.NewTaskEvent(structs.TaskWaitingShuttingDownDelay).
SetDisplayMessage(fmt.Sprintf("Waiting for shutdown_delay of %s before killing the task.", delay))
}
tr.UpdateState(structs.TaskStatePending, ev)
select {

View File

@ -1107,7 +1107,17 @@ func TestTaskRunner_NoShutdownDelay(t *testing.T) {
}
err := <-killed
require.NoError(t, err, "killing task returned unexpected error")
must.NoError(t, err)
// Check that we only emit the expected events.
hasEvent := false
for _, ev := range tr.state.Events {
must.NotEq(t, structs.TaskWaitingShuttingDownDelay, ev.Type)
if ev.Type == structs.TaskSkippingShutdownDelay {
hasEvent = true
}
}
must.True(t, hasEvent)
}
// TestTaskRunner_Dispatch_Payload asserts that a dispatch job runs and the

View File

@ -8348,6 +8348,10 @@ const (
// TaskWaitingShuttingDownDelay indicates that the task is waiting for
// shutdown delay before being TaskKilled
TaskWaitingShuttingDownDelay = "Waiting for shutdown delay"
// TaskSkippingShutdownDelay indicates that the task operation was
// configured to ignore the shutdown delay value set for the tas.
TaskSkippingShutdownDelay = "Skipping shutdown delay"
)
// TaskEvent is an event that effects the state of a task and contains meta-data