Skip to content

Commit 2df6517

Browse files
committed
Move to code to defer
1 parent 3bb5221 commit 2df6517

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

network/manager.go

+15-8
Original file line numberDiff line numberDiff line change
@@ -395,18 +395,25 @@ func (nm *networkManager) CreateEndpoint(cli apipaClient, networkID string, epIn
395395
if err != nil {
396396
return err
397397
}
398+
var delEndpointErr error = nil
399+
// any error after this point should also clean up the endpoint we created above
400+
defer func() {
401+
if delEndpointErr != nil {
402+
delErr := nw.deleteEndpoint(nm.netlink, nm.plClient, nm.netio, nm.nsClient, nm.iptablesClient, ep.Id)
403+
if delErr != nil {
404+
logger.Error("Deleting endpoint after failing to save state failed with", zap.Error(delErr))
405+
}
406+
}
407+
}()
398408

399409
if nm.IsStatelessCNIMode() {
400-
return nm.UpdateEndpointState(ep)
410+
delEndpointErr = nm.UpdateEndpointState(ep)
411+
return delEndpointErr
401412
}
402413

403-
err = nm.save()
404-
if err != nil {
405-
delErr := nw.deleteEndpoint(nm.netlink, nm.plClient, nm.netio, nm.nsClient, nm.iptablesClient, ep.Id)
406-
if delErr != nil {
407-
logger.Error("Deleting endpoint after failing to save state failed with", zap.Error(delErr))
408-
}
409-
return err
414+
delEndpointErr = nm.save()
415+
if delEndpointErr != nil {
416+
return delEndpointErr
410417
}
411418

412419
return nil

0 commit comments

Comments
 (0)