Merge pull request #5237 from hashicorp/b-docker-09upgrade-shutdown
drivers/docker: handle shutdown of upgraded tasks correctly
This commit is contained in:
commit
448f93f1e9
|
@ -69,7 +69,7 @@ type executorDockerLoggerShim struct {
|
|||
|
||||
func (e *executorDockerLoggerShim) Start(*docklog.StartOpts) error { return nil }
|
||||
func (e *executorDockerLoggerShim) Stop() error {
|
||||
if err := e.exec.Shutdown("", 0); err != nil {
|
||||
if err := e.exec.Shutdown("docker", 0); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,12 @@ import (
|
|||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
const (
|
||||
// pre09DockerSignal is used in executor.Shutdown to know if it should
|
||||
// call the ShutDown RPC on the pre09 executor
|
||||
pre09DockerSignal = "docker"
|
||||
)
|
||||
|
||||
// Registering these types since we have to serialize and de-serialize the Task
|
||||
// structs over the wire between drivers and the executor.
|
||||
func init() {
|
||||
|
@ -49,8 +55,16 @@ func (l *legacyExecutorWrapper) Wait(ctx context.Context) (*ProcessState, error)
|
|||
}
|
||||
|
||||
func (l *legacyExecutorWrapper) Shutdown(signal string, gracePeriod time.Duration) error {
|
||||
if err := l.client.ShutDown(); err != nil {
|
||||
return err
|
||||
// The legacy docker driver only used the executor to start a syslog server
|
||||
// for logging. Thus calling ShutDown for docker will always return an error
|
||||
// because it never started a process through the executor. If signal is set
|
||||
// to 'docker' then we'll skip the ShutDown RPC and just call Exit.
|
||||
//
|
||||
// This is painful to look at but will only be around a few releases
|
||||
if signal != pre09DockerSignal {
|
||||
if err := l.client.ShutDown(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if err := l.client.Exit(); err != nil {
|
||||
|
|
Loading…
Reference in a new issue