[lxc-devel] [lxd/master] lxd/containers: Fix cleanup on create failure
stgraber on Github
lxc-bot at linuxcontainers.org
Wed Sep 26 14:43:51 UTC 2018
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 370 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180926/4428111a/attachment.bin>
-------------- next part --------------
From 39c3182b6717bed3418d7cc8eaf4e9c652f09a03 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 26 Sep 2018 10:41:44 -0400
Subject: [PATCH] lxd/containers: Fix cleanup on create failure
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Closes #5036
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
lxd/container.go | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/lxd/container.go b/lxd/container.go
index a6136eb16b..f4cc17bedf 100644
--- a/lxd/container.go
+++ b/lxd/container.go
@@ -655,7 +655,7 @@ func containerCreateAsEmpty(d *Daemon, args db.ContainerArgs) (container, error)
// Now create the empty storage
err = c.Storage().ContainerCreate(c)
if err != nil {
- d.cluster.ContainerRemove(args.Name)
+ c.Delete()
return nil, err
}
@@ -742,7 +742,7 @@ func containerCreateEmptySnapshot(s *state.State, args db.ContainerArgs) (contai
// Now create the empty snapshot
err = c.Storage().ContainerSnapshotCreateEmpty(c)
if err != nil {
- s.Cluster.ContainerRemove(args.Name)
+ c.Delete()
return nil, err
}
@@ -799,14 +799,14 @@ func containerCreateFromImage(d *Daemon, args db.ContainerArgs, hash string) (co
err = s.Cluster.ImageLastAccessUpdate(hash, time.Now().UTC())
if err != nil {
- s.Cluster.ContainerRemove(args.Name)
+ c.Delete()
return nil, fmt.Errorf("Error updating image last use date: %s", err)
}
// Now create the storage from an image
err = c.Storage().ContainerCreateFromImage(c, hash)
if err != nil {
- s.Cluster.ContainerRemove(args.Name)
+ c.Delete()
return nil, err
}
@@ -841,7 +841,7 @@ func containerCreateAsCopy(s *state.State, args db.ContainerArgs, sourceContaine
if !containerOnly {
snapshots, err := sourceContainer.Snapshots()
if err != nil {
- s.Cluster.ContainerRemove(args.Name)
+ ct.Delete()
return nil, err
}
@@ -882,6 +882,7 @@ func containerCreateAsCopy(s *state.State, args db.ContainerArgs, sourceContaine
// Create the snapshots.
cs, err := containerCreateInternal(s, csArgs)
if err != nil {
+ ct.Delete()
return nil, err
}
@@ -892,10 +893,7 @@ func containerCreateAsCopy(s *state.State, args db.ContainerArgs, sourceContaine
// Now clone the storage.
err = ct.Storage().ContainerCopy(ct, sourceContainer, containerOnly)
if err != nil {
- for _, v := range csList {
- s.Cluster.ContainerRemove((*v).Name())
- }
- s.Cluster.ContainerRemove(args.Name)
+ ct.Delete()
return nil, err
}
@@ -911,7 +909,7 @@ func containerCreateAsCopy(s *state.State, args db.ContainerArgs, sourceContaine
// Apply any post-storage configuration.
err = containerConfigureInternal(*cs)
if err != nil {
- (*cs).Delete()
+ ct.Delete()
return nil, err
}
}
@@ -974,12 +972,13 @@ func containerCreateAsSnapshot(s *state.State, args db.ContainerArgs, sourceCont
// Clone the container
err = sourceContainer.Storage().ContainerSnapshotCreate(c, sourceContainer)
if err != nil {
- s.Cluster.ContainerRemove(args.Name)
+ c.Delete()
return nil, err
}
ourStart, err := c.StorageStart()
if err != nil {
+ c.Delete()
return nil, err
}
if ourStart {
More information about the lxc-devel
mailing list