summaryrefslogtreecommitdiffhomepage
path: root/runsc
diff options
context:
space:
mode:
authorIan Lewis <ianlewis@google.com>2018-10-21 19:41:44 -0700
committerShentubot <shentubot@google.com>2018-10-21 19:42:32 -0700
commitc2c0f9cb7e8320de06ef280c6184bb6aeda71627 (patch)
treee5f1d803900f54355b20f99d74817d0e292eb02c /runsc
parentd7c11c741752813e56b7d8726a575a520260c56a (diff)
Updated cleanup code to be more explicit about ignoring errors.
Errors are shown as being ignored by assigning to the blank identifier. PiperOrigin-RevId: 218103819 Change-Id: I7cc7b9d8ac503a03de5504ebdeb99ed30a531cf2
Diffstat (limited to 'runsc')
-rw-r--r--runsc/cgroup/cgroup.go4
-rw-r--r--runsc/container/container.go6
-rw-r--r--runsc/sandbox/sandbox.go4
3 files changed, 11 insertions, 3 deletions
diff --git a/runsc/cgroup/cgroup.go b/runsc/cgroup/cgroup.go
index d6058a8a2..0ceeb3f28 100644
--- a/runsc/cgroup/cgroup.go
+++ b/runsc/cgroup/cgroup.go
@@ -190,7 +190,9 @@ func (c *Cgroup) Install(res *specs.LinuxResources) error {
// Mark that cgroup resources are owned by me.
log.Debugf("Creating cgroup %q", c.Name)
c.Own = true
- clean := specutils.MakeCleanup(func() { c.Uninstall() })
+ // The Cleanup object cleans up partially created cgroups when an error occurs.
+ // Errors occuring during cleanup itself are ignored.
+ clean := specutils.MakeCleanup(func() { _ = c.Uninstall() })
defer clean.Clean()
for key, ctrl := range controllers {
diff --git a/runsc/container/container.go b/runsc/container/container.go
index cb4c9b5c1..9da25a863 100644
--- a/runsc/container/container.go
+++ b/runsc/container/container.go
@@ -262,7 +262,9 @@ func Create(id string, spec *specs.Spec, conf *boot.Config, bundleDir, consoleSo
Status: Creating,
Owner: os.Getenv("USER"),
}
- cu := specutils.MakeCleanup(func() { c.Destroy() })
+ // The Cleanup object cleans up partially created containers when an error occurs.
+ // Any errors occuring during cleanup itself are ignored.
+ cu := specutils.MakeCleanup(func() { _ = c.Destroy() })
defer cu.Clean()
// If the metadata annotations indicate that this container should be
@@ -424,6 +426,8 @@ func Run(id string, spec *specs.Spec, conf *boot.Config, bundleDir, consoleSocke
if err != nil {
return 0, fmt.Errorf("error creating container: %v", err)
}
+ // Clean up partially created container if an error ocurrs.
+ // Any errors returned by Destroy() itself are ignored.
defer c.Destroy()
if err := c.Start(conf); err != nil {
diff --git a/runsc/sandbox/sandbox.go b/runsc/sandbox/sandbox.go
index 0fe85cfe1..df235c5e9 100644
--- a/runsc/sandbox/sandbox.go
+++ b/runsc/sandbox/sandbox.go
@@ -68,7 +68,9 @@ type Sandbox struct {
// sandbox.
func Create(id string, spec *specs.Spec, conf *boot.Config, bundleDir, consoleSocket, userLog string, ioFiles []*os.File) (*Sandbox, error) {
s := &Sandbox{ID: id}
- c := specutils.MakeCleanup(func() { s.destroy() })
+ // The Cleanup object cleans up partially created sandboxes when an error occurs.
+ // Any errors occuring during cleanup itself are ignored.
+ c := specutils.MakeCleanup(func() { _ = s.destroy() })
defer c.Clean()
if cg, ok := cgroup.New(spec); ok {