Merge pull request #955 from sameo/topic/delete_container
Handle container creation failures gracefully
This commit is contained in:
commit
19f37f5c14
1 changed files with 9 additions and 2 deletions
11
oci/oci.go
11
oci/oci.go
|
@ -31,7 +31,7 @@ const (
|
||||||
// ContainerStateStopped represents the stopped state of a container
|
// ContainerStateStopped represents the stopped state of a container
|
||||||
ContainerStateStopped = "stopped"
|
ContainerStateStopped = "stopped"
|
||||||
// ContainerCreateTimeout represents the value of container creating timeout
|
// ContainerCreateTimeout represents the value of container creating timeout
|
||||||
ContainerCreateTimeout = 10 * time.Second
|
ContainerCreateTimeout = 240 * time.Second
|
||||||
|
|
||||||
// CgroupfsCgroupsManager represents cgroupfs native cgroup manager
|
// CgroupfsCgroupsManager represents cgroupfs native cgroup manager
|
||||||
CgroupfsCgroupsManager = "cgroupfs"
|
CgroupfsCgroupsManager = "cgroupfs"
|
||||||
|
@ -151,7 +151,7 @@ func getOCIVersion(name string, args ...string) (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateContainer creates a container.
|
// CreateContainer creates a container.
|
||||||
func (r *Runtime) CreateContainer(c *Container, cgroupParent string) error {
|
func (r *Runtime) CreateContainer(c *Container, cgroupParent string) (err error) {
|
||||||
var stderrBuf bytes.Buffer
|
var stderrBuf bytes.Buffer
|
||||||
parentPipe, childPipe, err := newPipe()
|
parentPipe, childPipe, err := newPipe()
|
||||||
childStartPipe, parentStartPipe, err := newPipe()
|
childStartPipe, parentStartPipe, err := newPipe()
|
||||||
|
@ -248,6 +248,13 @@ func (r *Runtime) CreateContainer(c *Container, cgroupParent string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We will delete all container resources if creation fails
|
||||||
|
defer func() {
|
||||||
|
if err != nil {
|
||||||
|
r.DeleteContainer(c)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
// Wait to get container pid from conmon
|
// Wait to get container pid from conmon
|
||||||
type syncStruct struct {
|
type syncStruct struct {
|
||||||
si *syncInfo
|
si *syncInfo
|
||||||
|
|
Loading…
Reference in a new issue