mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Merge pull request #31503 from Microsoft/jjh/cleanuphcsonrestore
Windows: Cleanup HCS on restore
This commit is contained in:
		
						commit
						2fca6526d6
					
				
					 1 changed files with 15 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue