Merge pull request #31503 from Microsoft/jjh/cleanuphcsonrestore

Windows: Cleanup HCS on restore
This commit is contained in:
Vincent Demeester 2017-03-13 13:43:35 +01:00 committed by GitHub
commit 2fca6526d6

View file

@ -557,8 +557,22 @@ func (clnt *client) Stats(containerID string) (*Stats, error) {
// Restore is the handler for restoring a container
func (clnt *client) Restore(containerID string, _ StdioCallback, unusedOnWindows ...CreateOption) error {
// TODO Windows: Implement this. For now, just tell the backend the container exited.
logrus.Debugf("libcontainerd: Restore(%s)", containerID)
// TODO Windows: On RS1, a re-attach isn't possible.
// However, there is a scenario in which there is an issue.
// Consider a background container. The daemon dies unexpectedly.
// HCS will still have the compute service alive and running.
// For consistence, we call in to shoot it regardless if HCS knows about it
// We explicitly just log a warning if the terminate fails.
// Then we tell the backend the container exited.
if hc, err := hcsshim.OpenContainer(containerID); err == nil {
if err := hc.Terminate(); err != nil {
if !hcsshim.IsPending(err) {
logrus.Warnf("libcontainerd: failed to terminate %s on restore - %q", containerID, err)
}
}
}
return clnt.backend.StateChanged(containerID, StateInfo{
CommonStateInfo: CommonStateInfo{
State: StateExit,