Skip to content

Commit

Permalink
Merge pull request moby#54 from shykes/vieux_merge_master
Browse files Browse the repository at this point in the history
Merge from master
  • Loading branch information
crosbymichael committed Nov 20, 2013
2 parents d4ef551 + 880a0e9 commit 24586d7
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 23 deletions.
3 changes: 0 additions & 3 deletions api.go
Original file line number Diff line number Diff line change
Expand Up @@ -647,9 +647,6 @@ func postContainersStart(srv *Server, version float64, w http.ResponseWriter, r
}
name := vars["name"]
job := srv.Eng.Job("start", name)
if err := job.ImportEnv(HostConfig{}); err != nil {
return fmt.Errorf("Couldn't initialize host configuration")
}
// allow a nil body for backwards compatibility
if r.Body != nil {
if matchesContentType(r.Header.Get("Content-Type"), "application/json") {
Expand Down
6 changes: 3 additions & 3 deletions container.go
Original file line number Diff line number Diff line change
Expand Up @@ -1302,9 +1302,6 @@ func (container *Container) monitor() {
exitCode = container.cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus()
}

// Report status back
container.State.setStopped(exitCode)

if container.runtime != nil && container.runtime.srv != nil {
container.runtime.srv.LogEvent("die", container.ID, container.runtime.repositories.ImageName(container.Image))
}
Expand All @@ -1317,6 +1314,9 @@ func (container *Container) monitor() {
container.stdin, container.stdinPipe = io.Pipe()
}

// Report status back
container.State.setStopped(exitCode)

// Release the lock
close(container.waitLock)

Expand Down
27 changes: 10 additions & 17 deletions runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,6 @@ func (runtime *Runtime) Register(container *Container) error {
}
container.rootfs = rootfs

// init the wait lock
container.waitLock = make(chan struct{})

container.runtime = runtime

// Attach to stdout and stderr
Expand All @@ -152,10 +149,6 @@ func (runtime *Runtime) Register(container *Container) error {
runtime.containers.PushBack(container)
runtime.idIndex.Add(container.ID)

// When we actually restart, Start() do the monitoring.
// However, when we simply 'reattach', we have to restart a monitor
nomonitor := false

// FIXME: if the container is supposed to be running but is not, auto restart it?
// if so, then we need to restart monitor and init a new lock
// If the container is supposed to be running, make sure of it
Expand All @@ -173,24 +166,24 @@ func (runtime *Runtime) Register(container *Container) error {
if err := container.Start(); err != nil {
return err
}
nomonitor = true
} else {
utils.Debugf("Marking as stopped")
container.State.setStopped(-127)
if err := container.ToDisk(); err != nil {
return err
}
}
}
}
} else {
utils.Debugf("Reconnecting to container %v", container.ID)

// If the container is not running or just has been flagged not running
// then close the wait lock chan (will be reset upon start)
if !container.State.Running {
close(container.waitLock)
} else if !nomonitor {
container.allocateNetwork()
go container.monitor()
if err := container.allocateNetwork(); err != nil {
return err
}

container.waitLock = make(chan struct{})

go container.monitor()
}
}
return nil
}
Expand Down

0 comments on commit 24586d7

Please sign in to comment.