Skip to content

Commit 6b5ea17

Browse files
authored
fix: delete endpoint on cni state save failure (#2577)
* Delete endpoint on cni state save failure * Move code to defer * Address feedback * Log create endpoint error before deleting endpoint * Adjust logs
1 parent 65d80ac commit 6b5ea17

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

network/manager.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -393,9 +393,21 @@ func (nm *networkManager) CreateEndpoint(cli apipaClient, networkID string, epIn
393393
if err != nil {
394394
return err
395395
}
396+
// any error after this point should also clean up the endpoint we created above
397+
defer func() {
398+
if err != nil {
399+
logger.Error("Create endpoint failure", zap.Error(err))
400+
logger.Info("Cleanup resources")
401+
delErr := nw.deleteEndpoint(nm.netlink, nm.plClient, nm.netio, nm.nsClient, nm.iptablesClient, ep.Id)
402+
if delErr != nil {
403+
logger.Error("Deleting endpoint after create endpoint failure failed with", zap.Error(delErr))
404+
}
405+
}
406+
}()
396407

397408
if nm.IsStatelessCNIMode() {
398-
return nm.UpdateEndpointState(ep)
409+
err = nm.UpdateEndpointState(ep)
410+
return err
399411
}
400412

401413
err = nm.save()

0 commit comments

Comments
 (0)