From ef8e2fe282b56367c8b971dc869bcf306d7ebfd4 Mon Sep 17 00:00:00 2001 From: Rob Murray Date: Thu, 18 Jul 2024 16:43:22 +0100 Subject: [PATCH] Use retErr in Endpoint.sbJoin Signed-off-by: Rob Murray --- libnetwork/endpoint.go | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/libnetwork/endpoint.go b/libnetwork/endpoint.go index 3d8591effe..bfba8948a1 100644 --- a/libnetwork/endpoint.go +++ b/libnetwork/endpoint.go @@ -481,7 +481,7 @@ func (ep *Endpoint) Join(ctx context.Context, sb *Sandbox, options ...EndpointOp return ep.sbJoin(ctx, sb, options...) } -func (ep *Endpoint) sbJoin(ctx context.Context, sb *Sandbox, options ...EndpointOption) (err error) { +func (ep *Endpoint) sbJoin(ctx context.Context, sb *Sandbox, options ...EndpointOption) (retErr error) { ctx, span := otel.Tracer("").Start(ctx, "libnetwork.sbJoin") defer span.End() @@ -506,7 +506,7 @@ func (ep *Endpoint) sbJoin(ctx context.Context, sb *Sandbox, options ...Endpoint epid := ep.id ep.mu.Unlock() defer func() { - if err != nil { + if retErr != nil { ep.mu.Lock() ep.sandboxID = "" ep.mu.Unlock() @@ -522,12 +522,11 @@ func (ep *Endpoint) sbJoin(ctx context.Context, sb *Sandbox, options ...Endpoint return fmt.Errorf("failed to get driver during join: %v", err) } - err = d.Join(ctx, nid, epid, sb.Key(), ep, sb.Labels()) - if err != nil { + if err := d.Join(ctx, nid, epid, sb.Key(), ep, sb.Labels()); err != nil { return err } defer func() { - if err != nil { + if retErr != nil { if e := d.Leave(nid, epid); e != nil { log.G(ctx).Warnf("driver leave failed while rolling back join: %v", e) } @@ -543,7 +542,7 @@ func (ep *Endpoint) sbJoin(ctx context.Context, sb *Sandbox, options ...Endpoint if err := sb.updateHostsFile(ctx, ep.getEtcHostsAddrs()); err != nil { return err } - if err = sb.updateDNS(n.enableIPv6); err != nil { + if err := sb.updateDNS(n.enableIPv6); err != nil { return err } @@ -552,29 +551,29 @@ func (ep *Endpoint) sbJoin(ctx context.Context, sb *Sandbox, options ...Endpoint sb.addEndpoint(ep) defer func() { - if err != nil { + if retErr != nil { sb.removeEndpoint(ep) } }() - if err = sb.populateNetworkResources(ctx, ep); err != nil { + if err := sb.populateNetworkResources(ctx, ep); err != nil { return err } - if err = addEpToResolver(ctx, n.Name(), ep.Name(), &sb.config, ep.iface, n.Resolvers()); err != nil { + if err := addEpToResolver(ctx, n.Name(), ep.Name(), &sb.config, ep.iface, n.Resolvers()); err != nil { return errdefs.System(err) } - if err = n.getController().updateToStore(ctx, ep); err != nil { + if err := n.getController().updateToStore(ctx, ep); err != nil { return err } - if err = ep.addDriverInfoToCluster(); err != nil { + if err := ep.addDriverInfoToCluster(); err != nil { return err } defer func() { - if err != nil { + if retErr != nil { if e := ep.deleteDriverInfoFromCluster(); e != nil { log.G(ctx).Errorf("Could not delete endpoint state for endpoint %s from cluster on join failure: %v", ep.Name(), e) } @@ -609,13 +608,13 @@ func (ep *Endpoint) sbJoin(ctx context.Context, sb *Sandbox, options ...Endpoint if err != nil { return fmt.Errorf("failed to get driver for revoking external connectivity during join: %v", err) } - if err = extD.RevokeExternalConnectivity(extEp.network.ID(), extEp.ID()); err != nil { + if err := extD.RevokeExternalConnectivity(extEp.network.ID(), extEp.ID()); err != nil { return types.InternalErrorf( "driver failed revoking external connectivity on endpoint %s (%s): %v", extEp.Name(), extEp.ID(), err) } defer func() { - if err != nil { + if retErr != nil { if e := extD.ProgramExternalConnectivity(context.WithoutCancel(ctx), extEp.network.ID(), extEp.ID(), sb.Labels()); e != nil { log.G(ctx).Warnf("Failed to roll-back external connectivity on endpoint %s (%s): %v", extEp.Name(), extEp.ID(), e) @@ -625,7 +624,7 @@ func (ep *Endpoint) sbJoin(ctx context.Context, sb *Sandbox, options ...Endpoint } if !n.internal { log.G(ctx).Debugf("Programming external connectivity on endpoint %s (%s)", ep.Name(), ep.ID()) - if err = d.ProgramExternalConnectivity(ctx, n.ID(), ep.ID(), sb.Labels()); err != nil { + if err := d.ProgramExternalConnectivity(ctx, n.ID(), ep.ID(), sb.Labels()); err != nil { return types.InternalErrorf( "driver failed programming external connectivity on endpoint %s (%s): %v", ep.Name(), ep.ID(), err)