From e67b6bfc6934f486cb38337bf51e44dba393d31a Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 28 Dec 2023 12:58:42 +0100 Subject: [PATCH] plugin: remove/rename err-returns Prevent accidentally shadowing these errors, which are used in defers, and while at it, also fixed some linting warnings about unhandled errors. Signed-off-by: Sebastiaan van Stijn --- plugin/backend_linux.go | 6 +++--- plugin/backend_unsupported.go | 2 +- plugin/fetch_linux.go | 2 +- plugin/manager_linux.go | 35 +++++++++++++++++++---------------- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/plugin/backend_linux.go b/plugin/backend_linux.go index 981615f943..2cbb9d28f6 100644 --- a/plugin/backend_linux.go +++ b/plugin/backend_linux.go @@ -92,7 +92,7 @@ func (pm *Manager) Enable(refOrID string, config *backend.PluginEnableConfig) er } // Inspect examines a plugin config -func (pm *Manager) Inspect(refOrID string) (tp *types.Plugin, err error) { +func (pm *Manager) Inspect(refOrID string) (*types.Plugin, error) { p, err := pm.config.Store.GetV2Plugin(refOrID) if err != nil { return nil, err @@ -209,7 +209,7 @@ func (pm *Manager) Privileges(ctx context.Context, ref reference.Named, metaHead // Upgrade upgrades a plugin // // TODO: replace reference package usage with simpler url.Parse semantics -func (pm *Manager) Upgrade(ctx context.Context, ref reference.Named, name string, metaHeader http.Header, authConfig *registry.AuthConfig, privileges types.PluginPrivileges, outStream io.Writer) (err error) { +func (pm *Manager) Upgrade(ctx context.Context, ref reference.Named, name string, metaHeader http.Header, authConfig *registry.AuthConfig, privileges types.PluginPrivileges, outStream io.Writer) error { p, err := pm.config.Store.GetV2Plugin(name) if err != nil { return err @@ -257,7 +257,7 @@ func (pm *Manager) Upgrade(ctx context.Context, ref reference.Named, name string // Pull pulls a plugin, check if the correct privileges are provided and install the plugin. // // TODO: replace reference package usage with simpler url.Parse semantics -func (pm *Manager) Pull(ctx context.Context, ref reference.Named, name string, metaHeader http.Header, authConfig *registry.AuthConfig, privileges types.PluginPrivileges, outStream io.Writer, opts ...CreateOpt) (err error) { +func (pm *Manager) Pull(ctx context.Context, ref reference.Named, name string, metaHeader http.Header, authConfig *registry.AuthConfig, privileges types.PluginPrivileges, outStream io.Writer, opts ...CreateOpt) error { pm.muGC.RLock() defer pm.muGC.RUnlock() diff --git a/plugin/backend_unsupported.go b/plugin/backend_unsupported.go index e839ece878..05c3a27dd1 100644 --- a/plugin/backend_unsupported.go +++ b/plugin/backend_unsupported.go @@ -28,7 +28,7 @@ func (pm *Manager) Enable(name string, config *backend.PluginEnableConfig) error } // Inspect examines a plugin config -func (pm *Manager) Inspect(refOrID string) (tp *types.Plugin, err error) { +func (pm *Manager) Inspect(refOrID string) (*types.Plugin, error) { return nil, errNotSupported } diff --git a/plugin/fetch_linux.go b/plugin/fetch_linux.go index 4847d6748e..c2a4085459 100644 --- a/plugin/fetch_linux.go +++ b/plugin/fetch_linux.go @@ -59,7 +59,7 @@ func setupProgressOutput(outStream io.Writer, cancel func()) (progress.Output, f // fetch the content related to the passed in reference into the blob store and appends the provided c8dimages.Handlers // There is no need to use remotes.FetchHandler since it already gets set -func (pm *Manager) fetch(ctx context.Context, ref reference.Named, auth *registry.AuthConfig, out progress.Output, metaHeader http.Header, handlers ...c8dimages.Handler) (err error) { +func (pm *Manager) fetch(ctx context.Context, ref reference.Named, auth *registry.AuthConfig, out progress.Output, metaHeader http.Header, handlers ...c8dimages.Handler) error { // We need to make sure we have a domain on the reference withDomain, err := reference.ParseNormalizedNamed(ref.String()) if err != nil { diff --git a/plugin/manager_linux.go b/plugin/manager_linux.go index a2bb166f26..0f12b8cd85 100644 --- a/plugin/manager_linux.go +++ b/plugin/manager_linux.go @@ -212,7 +212,7 @@ func (pm *Manager) Shutdown() { } } -func (pm *Manager) upgradePlugin(p *v2.Plugin, configDigest, manifestDigest digest.Digest, blobsums []digest.Digest, tmpRootFSDir string, privileges *types.PluginPrivileges) (err error) { +func (pm *Manager) upgradePlugin(p *v2.Plugin, configDigest, manifestDigest digest.Digest, blobsums []digest.Digest, tmpRootFSDir string, privileges *types.PluginPrivileges) (retErr error) { config, err := pm.setupNewPlugin(configDigest, privileges) if err != nil { return err @@ -234,20 +234,20 @@ func (pm *Manager) upgradePlugin(p *v2.Plugin, configDigest, manifestDigest dige } defer func() { - if err != nil { - if rmErr := os.RemoveAll(orig); rmErr != nil { - log.G(context.TODO()).WithError(rmErr).WithField("dir", backup).Error("error cleaning up after failed upgrade") + if retErr != nil { + if err := os.RemoveAll(orig); err != nil { + log.G(context.TODO()).WithError(err).WithField("dir", backup).Error("error cleaning up after failed upgrade") return } - if mvErr := os.Rename(backup, orig); mvErr != nil { - err = errors.Wrap(mvErr, "error restoring old plugin root on upgrade failure") + if err := os.Rename(backup, orig); err != nil { + retErr = errors.Wrap(err, "error restoring old plugin root on upgrade failure") } - if rmErr := os.RemoveAll(tmpRootFSDir); rmErr != nil && !os.IsNotExist(rmErr) { - log.G(context.TODO()).WithError(rmErr).WithField("plugin", p.Name()).Errorf("error cleaning up plugin upgrade dir: %s", tmpRootFSDir) + if err := os.RemoveAll(tmpRootFSDir); err != nil && !os.IsNotExist(err) { + log.G(context.TODO()).WithError(err).WithField("plugin", p.Name()).Errorf("error cleaning up plugin upgrade dir: %s", tmpRootFSDir) } } else { - if rmErr := os.RemoveAll(backup); rmErr != nil { - log.G(context.TODO()).WithError(rmErr).WithField("dir", backup).Error("error cleaning up old plugin root after successful upgrade") + if err := os.RemoveAll(backup); err != nil { + log.G(context.TODO()).WithError(err).WithField("dir", backup).Error("error cleaning up old plugin root after successful upgrade") } p.Config = configDigest @@ -261,8 +261,11 @@ func (pm *Manager) upgradePlugin(p *v2.Plugin, configDigest, manifestDigest dige p.PluginObj.Config = config p.Manifest = manifestDigest - err = pm.save(p) - return errors.Wrap(err, "error saving upgraded plugin config") + if err := pm.save(p); err != nil { + return errors.Wrap(err, "error saving upgraded plugin config") + } + + return nil } func (pm *Manager) setupNewPlugin(configDigest digest.Digest, privileges *types.PluginPrivileges) (types.PluginConfig, error) { @@ -294,7 +297,7 @@ func (pm *Manager) setupNewPlugin(configDigest digest.Digest, privileges *types. } // createPlugin creates a new plugin. take lock before calling. -func (pm *Manager) createPlugin(name string, configDigest, manifestDigest digest.Digest, blobsums []digest.Digest, rootFSDir string, privileges *types.PluginPrivileges, opts ...CreateOpt) (p *v2.Plugin, err error) { +func (pm *Manager) createPlugin(name string, configDigest, manifestDigest digest.Digest, blobsums []digest.Digest, rootFSDir string, privileges *types.PluginPrivileges, opts ...CreateOpt) (_ *v2.Plugin, retErr error) { if err := pm.config.Store.validateName(name); err != nil { // todo: this check is wrong. remove store return nil, errdefs.InvalidParameter(err) } @@ -304,7 +307,7 @@ func (pm *Manager) createPlugin(name string, configDigest, manifestDigest digest return nil, err } - p = &v2.Plugin{ + p := &v2.Plugin{ PluginObj: types.Plugin{ Name: name, ID: stringid.GenerateRandomID(), @@ -325,8 +328,8 @@ func (pm *Manager) createPlugin(name string, configDigest, manifestDigest digest } defer func() { - if err != nil { - os.RemoveAll(pdir) + if retErr != nil { + _ = os.RemoveAll(pdir) } }()