vc: Restore sandbox state when there is error starting containers

Fixes #2237

Signed-off-by: Ted Yu <yuzhihong@gmail.com>
This commit is contained in:
Ted Yu 2019-11-20 18:47:32 -08:00
parent 1f71114291
commit 93a03369ae

View File

@ -1523,13 +1523,21 @@ func (s *Sandbox) Start() error {
return err
}
prevState := s.state.State
if err := s.setSandboxState(types.StateRunning); err != nil {
return err
}
var startErr error
defer func() {
if startErr != nil {
s.setSandboxState(prevState)
}
}()
for _, c := range s.containers {
if err := c.start(); err != nil {
return err
if startErr = c.start(); startErr != nil {
return startErr
}
}