summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Hsu <andrewhsu@docker.com>2019-04-08 08:09:54 -0700
committerGitHub <noreply@github.com>2019-04-08 08:09:54 -0700
commit50ebe4562dfce3c7dfeeb5c0d2695b23879162c1 (patch)
treee286fbaf138ad5600c8109973c478dfae829e313
parent1046c6371132875d80f287950bb9e9e5cefa8a85 (diff)
parenta9e2f27bf0bdb335bd1619cccfea889a76c949e5 (diff)
downloaddocker-50ebe4562dfce3c7dfeeb5c0d2695b23879162c1.tar.gz
Merge pull request #192 from mavenugo/18.09_ln_vndrv18.09.5-rc1v18.09.5
[18.09 backport] Vendor Libnetwork c902989
-rw-r--r--vendor.conf2
-rw-r--r--vendor/github.com/docker/libnetwork/drivers/windows/overlay/joinleave_windows.go5
-rw-r--r--vendor/github.com/docker/libnetwork/drivers/windows/overlay/ov_endpoint_windows.go31
-rw-r--r--vendor/github.com/docker/libnetwork/drivers/windows/overlay/peerdb_windows.go5
4 files changed, 31 insertions, 12 deletions
diff --git a/vendor.conf b/vendor.conf
index 0f48939f7e..03f2e96f69 100644
--- a/vendor.conf
+++ b/vendor.conf
@@ -37,7 +37,7 @@ github.com/mitchellh/hashstructure 2bca23e0e452137f789efbc8610126fd8b94f73b
#get libnetwork packages
# When updating, also update LIBNETWORK_COMMIT in hack/dockerfile/install/proxy accordingly
-github.com/docker/libnetwork 4725f2163fb214a6312f3beae5991f838ec36326 # bump_18.09 branch
+github.com/docker/libnetwork c9029898e32f7c89bbb81511fbb721df252ce61a # bump_18.09 branch
github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9
github.com/armon/go-radix e39d623f12e8e41c7b5529e9a9dd67a1e2261f80
github.com/armon/go-metrics eb0af217e5e9747e41dd5303755356b62d28e3ec
diff --git a/vendor/github.com/docker/libnetwork/drivers/windows/overlay/joinleave_windows.go b/vendor/github.com/docker/libnetwork/drivers/windows/overlay/joinleave_windows.go
index 83bee5ad93..65500852b4 100644
--- a/vendor/github.com/docker/libnetwork/drivers/windows/overlay/joinleave_windows.go
+++ b/vendor/github.com/docker/libnetwork/drivers/windows/overlay/joinleave_windows.go
@@ -95,7 +95,10 @@ func (d *driver) EventNotify(etype driverapi.EventType, nid, tableName, key stri
return
}
- d.peerAdd(nid, eid, addr.IP, addr.Mask, mac, vtep, true)
+ err = d.peerAdd(nid, eid, addr.IP, addr.Mask, mac, vtep, true)
+ if err != nil {
+ logrus.Errorf("peerAdd failed (%v) for ip %s with mac %s", err, addr.IP.String(), mac.String())
+ }
}
func (d *driver) DecodeTableEntry(tablename string, key string, value []byte) (string, map[string]string) {
diff --git a/vendor/github.com/docker/libnetwork/drivers/windows/overlay/ov_endpoint_windows.go b/vendor/github.com/docker/libnetwork/drivers/windows/overlay/ov_endpoint_windows.go
index c990357922..d1a4d9ec36 100644
--- a/vendor/github.com/docker/libnetwork/drivers/windows/overlay/ov_endpoint_windows.go
+++ b/vendor/github.com/docker/libnetwork/drivers/windows/overlay/ov_endpoint_windows.go
@@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"
"net"
+ "sync"
"github.com/Microsoft/hcsshim"
"github.com/docker/docker/pkg/system"
@@ -29,6 +30,13 @@ type endpoint struct {
portMapping []types.PortBinding // Operation port bindings
}
+var (
+ //Server 2016 (RS1) does not support concurrent add/delete of endpoints. Therefore, we need
+ //to use this mutex and serialize the add/delete of endpoints on RS1.
+ endpointMu sync.Mutex
+ windowsBuild = system.GetOSVersion().Build
+)
+
func validateID(nid, eid string) error {
if nid == "" {
return fmt.Errorf("invalid network id")
@@ -77,8 +85,7 @@ func (n *network) removeEndpointWithAddress(addr *net.IPNet) {
if networkEndpoint != nil {
logrus.Debugf("Removing stale endpoint from HNS")
- _, err := hcsshim.HNSEndpointRequest("DELETE", networkEndpoint.profileID, "")
-
+ _, err := endpointRequest("DELETE", networkEndpoint.profileID, "")
if err != nil {
logrus.Debugf("Failed to delete stale overlay endpoint (%.7s) from hns", networkEndpoint.id)
}
@@ -101,8 +108,7 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
if ep != nil {
logrus.Debugf("Deleting stale endpoint %s", eid)
n.deleteEndpoint(eid)
-
- _, err := hcsshim.HNSEndpointRequest("DELETE", ep.profileID, "")
+ _, err := endpointRequest("DELETE", ep.profileID, "")
if err != nil {
return err
}
@@ -179,7 +185,7 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
return err
}
- hnsresponse, err := hcsshim.HNSEndpointRequest("POST", "", string(configurationb))
+ hnsresponse, err := endpointRequest("POST", "", string(configurationb))
if err != nil {
return err
}
@@ -199,7 +205,7 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
ep.portMapping, err = windows.ParsePortBindingPolicies(hnsresponse.Policies)
if err != nil {
- hcsshim.HNSEndpointRequest("DELETE", hnsresponse.Id, "")
+ endpointRequest("DELETE", hnsresponse.Id, "")
return err
}
@@ -225,7 +231,7 @@ func (d *driver) DeleteEndpoint(nid, eid string) error {
n.deleteEndpoint(eid)
- _, err := hcsshim.HNSEndpointRequest("DELETE", ep.profileID, "")
+ _, err := endpointRequest("DELETE", ep.profileID, "")
if err != nil {
return err
}
@@ -263,3 +269,14 @@ func (d *driver) EndpointOperInfo(nid, eid string) (map[string]interface{}, erro
return data, nil
}
+
+func endpointRequest(method, path, request string) (*hcsshim.HNSEndpoint, error) {
+ if windowsBuild == 14393 {
+ endpointMu.Lock()
+ }
+ hnsresponse, err := hcsshim.HNSEndpointRequest(method, path, request)
+ if windowsBuild == 14393 {
+ endpointMu.Unlock()
+ }
+ return hnsresponse, err
+}
diff --git a/vendor/github.com/docker/libnetwork/drivers/windows/overlay/peerdb_windows.go b/vendor/github.com/docker/libnetwork/drivers/windows/overlay/peerdb_windows.go
index 159bfd6ed1..34f77cbfae 100644
--- a/vendor/github.com/docker/libnetwork/drivers/windows/overlay/peerdb_windows.go
+++ b/vendor/github.com/docker/libnetwork/drivers/windows/overlay/peerdb_windows.go
@@ -67,8 +67,7 @@ func (d *driver) peerAdd(nid, eid string, peerIP net.IP, peerIPMask net.IPMask,
}
n.removeEndpointWithAddress(addr)
-
- hnsresponse, err := hcsshim.HNSEndpointRequest("POST", "", string(configurationb))
+ hnsresponse, err := endpointRequest("POST", "", string(configurationb))
if err != nil {
return err
}
@@ -108,7 +107,7 @@ func (d *driver) peerDelete(nid, eid string, peerIP net.IP, peerIPMask net.IPMas
}
if updateDb {
- _, err := hcsshim.HNSEndpointRequest("DELETE", ep.profileID, "")
+ _, err := endpointRequest("DELETE", ep.profileID, "")
if err != nil {
return err
}