diff --git a/drivers/docker/driver.go b/drivers/docker/driver.go index b46190a8f..7c2cd8b1f 100644 --- a/drivers/docker/driver.go +++ b/drivers/docker/driver.go @@ -1019,17 +1019,10 @@ func (d *Driver) DestroyTask(taskID string, force bool) error { return fmt.Errorf("must call StopTask for the given task before Destroy or set force to true") } - defer h.dloggerPluginClient.Kill() - if err := h.client.StopContainer(h.containerID, 0); err != nil { h.logger.Warn("failed to stop container during destroy", "error", err) } - if err := h.dlogger.Stop(); err != nil { - h.logger.Error("failed to stop docker logger process during destroy", - "error", err, "logger_pid", h.dloggerPluginClient.ReattachConfig().Pid) - } - if err := d.cleanupImage(h); err != nil { h.logger.Error("failed to cleanup image after destroying container", "error", err) diff --git a/drivers/docker/handle.go b/drivers/docker/handle.go index b1b2c1b5e..219aea403 100644 --- a/drivers/docker/handle.go +++ b/drivers/docker/handle.go @@ -156,7 +156,17 @@ func (h *taskHandle) Kill(killTimeout time.Duration, signal os.Signal) error { return nil } +func (h *taskHandle) shutdownLogger() { + if err := h.dlogger.Stop(); err != nil { + h.logger.Error("failed to stop docker logger process during StopTask", + "error", err, "logger_pid", h.dloggerPluginClient.ReattachConfig().Pid) + } + h.dloggerPluginClient.Kill() +} + func (h *taskHandle) run() { + defer h.shutdownLogger() + exitCode, werr := h.waitClient.WaitContainer(h.containerID) if werr != nil { h.logger.Error("failed to wait for container; already terminated")