client: don't emit task shutdown delay event if not waiting (#16281)
This commit is contained in:
parent
3f1ea9da4b
commit
2a1a790820
|
@ -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
|
||||
```
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue