diff --git a/libnetwork/controller.go b/libnetwork/controller.go index 80b349ee5d..f1016f96ef 100644 --- a/libnetwork/controller.go +++ b/libnetwork/controller.go @@ -148,7 +148,9 @@ func New(cfgOptions ...config.Option) (*Controller, error) { c.reservePools() // Cleanup resources - c.sandboxCleanup(c.cfg.ActiveSandboxes) + if err := c.sandboxCleanup(c.cfg.ActiveSandboxes); err != nil { + log.G(context.TODO()).WithError(err).Error("error during sandbox cleanup") + } c.cleanupLocalEndpoints() c.networkCleanup() diff --git a/libnetwork/sandbox_store.go b/libnetwork/sandbox_store.go index cc138e2273..87eeb4a8eb 100644 --- a/libnetwork/sandbox_store.go +++ b/libnetwork/sandbox_store.go @@ -3,6 +3,7 @@ package libnetwork import ( "context" "encoding/json" + "fmt" "sync" "github.com/containerd/containerd/log" @@ -171,21 +172,19 @@ func (sb *Sandbox) storeDelete() error { }) } -func (c *Controller) sandboxCleanup(activeSandboxes map[string]interface{}) { +func (c *Controller) sandboxCleanup(activeSandboxes map[string]interface{}) error { store := c.getStore() if store == nil { - log.G(context.TODO()).Error("Could not find local scope store while trying to cleanup sandboxes") - return + return fmt.Errorf("could not find local scope store") } sandboxStates, err := store.List(datastore.Key(sandboxPrefix), &sbState{c: c}) if err != nil { if err == datastore.ErrKeyNotFound { // It's normal for no sandboxes to be found. Just bail out. - return + return nil } - log.G(context.TODO()).Errorf("failed to get sandboxes for scope %s: %v", store.Scope(), err) - return + return fmt.Errorf("failed to get sandboxes for scope %s: %v", store.Scope(), err) } for _, s := range sandboxStates { @@ -285,4 +284,6 @@ func (c *Controller) sandboxCleanup(activeSandboxes map[string]interface{}) { } } } + + return nil }