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
|
// This allows for things like service de-registration to run
|
||||||
// before waiting to kill task
|
// before waiting to kill task
|
||||||
if delay := tr.Task().ShutdownDelay; delay != 0 {
|
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)
|
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))
|
SetDisplayMessage(fmt.Sprintf("Waiting for shutdown_delay of %s before killing the task.", delay))
|
||||||
|
}
|
||||||
tr.UpdateState(structs.TaskStatePending, ev)
|
tr.UpdateState(structs.TaskStatePending, ev)
|
||||||
|
|
||||||
select {
|
select {
|
||||||
|
|
|
@ -1107,7 +1107,17 @@ func TestTaskRunner_NoShutdownDelay(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
err := <-killed
|
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
|
// TestTaskRunner_Dispatch_Payload asserts that a dispatch job runs and the
|
||||||
|
|
|
@ -8348,6 +8348,10 @@ const (
|
||||||
// TaskWaitingShuttingDownDelay indicates that the task is waiting for
|
// TaskWaitingShuttingDownDelay indicates that the task is waiting for
|
||||||
// shutdown delay before being TaskKilled
|
// shutdown delay before being TaskKilled
|
||||||
TaskWaitingShuttingDownDelay = "Waiting for shutdown delay"
|
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
|
// TaskEvent is an event that effects the state of a task and contains meta-data
|
||||||
|
|
Loading…
Reference in New Issue