|
@@ -1156,33 +1156,34 @@ func (n *network) createEndpoint(name string, options ...EndpointOption) (Endpoi
|
|
|
ep.releaseAddress()
|
|
|
}
|
|
|
}()
|
|
|
-
|
|
|
- if err = n.addEndpoint(ep); err != nil {
|
|
|
+ // Moving updateToSTore before calling addEndpoint so that we shall clean up VETH interfaces in case
|
|
|
+ // DockerD get killed between addEndpoint and updateSTore call
|
|
|
+ if err = n.getController().updateToStore(ep); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
|
- if e := ep.deleteEndpoint(false); e != nil {
|
|
|
- logrus.Warnf("cleaning up endpoint failed %s : %v", name, e)
|
|
|
+ if e := n.getController().deleteFromStore(ep); e != nil {
|
|
|
+ logrus.Warnf("error rolling back endpoint %s from store: %v", name, e)
|
|
|
}
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
- if err = ep.assignAddress(ipam, false, n.enableIPv6 && n.postIPv6); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
-
|
|
|
- if err = n.getController().updateToStore(ep); err != nil {
|
|
|
+ if err = n.addEndpoint(ep); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
|
- if e := n.getController().deleteFromStore(ep); e != nil {
|
|
|
- logrus.Warnf("error rolling back endpoint %s from store: %v", name, e)
|
|
|
+ if e := ep.deleteEndpoint(false); e != nil {
|
|
|
+ logrus.Warnf("cleaning up endpoint failed %s : %v", name, e)
|
|
|
}
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
+ if err = ep.assignAddress(ipam, false, n.enableIPv6 && n.postIPv6); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
// Watch for service records
|
|
|
n.getController().watchSvcRecord(ep)
|
|
|
defer func() {
|