Merge pull request #5889 from hashicorp/dani/b-task-restart
tr: Fetch Wait channel before killTask in restart
This commit is contained in:
commit
d6b8a0a290
|
@ -28,18 +28,19 @@ func (tr *TaskRunner) Restart(ctx context.Context, event *structs.TaskEvent, fai
|
|||
// Tell the restart tracker that a restart triggered the exit
|
||||
tr.restartTracker.SetRestartTriggered(failure)
|
||||
|
||||
// Grab a handle to the wait channel that will timeout with context cancelation
|
||||
// _before_ killing the task.
|
||||
waitCh, err := handle.WaitCh(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Kill the task using an exponential backoff in-case of failures.
|
||||
if err := tr.killTask(handle); err != nil {
|
||||
// We couldn't successfully destroy the resource created.
|
||||
tr.logger.Error("failed to kill task. Resources may have been leaked", "error", err)
|
||||
}
|
||||
|
||||
// Drain the wait channel or wait for the request context to be canceled
|
||||
waitCh, err := handle.WaitCh(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
select {
|
||||
case <-waitCh:
|
||||
case <-ctx.Done():
|
||||
|
|
Loading…
Reference in New Issue