summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Boch <aboch@docker.com>2017-04-25 11:19:51 -0700
committerAlessandro Boch <aboch@docker.com>2017-04-25 11:19:51 -0700
commitdbd2c592dfa0d8a0af9d3de8644f76ecff972792 (patch)
tree33a844149954ecd220ea1565a5da21f7d5dc31c1
parent4c29313d4ca1e2cd317c0ce74ea09c335bc8d719 (diff)
downloaddocker-dbd2c592dfa0d8a0af9d3de8644f76ecff972792.tar.gz
[17.05.x] Vendoring libnetwork @5d4e5de
Signed-off-by: Alessandro Boch <aboch@docker.com>
-rw-r--r--vendor.conf2
-rw-r--r--vendor/github.com/docker/libnetwork/agent.go7
-rw-r--r--vendor/github.com/docker/libnetwork/default_gateway.go13
-rw-r--r--vendor/github.com/docker/libnetwork/endpoint.go22
-rw-r--r--vendor/github.com/docker/libnetwork/networkdb/broadcast.go9
-rw-r--r--vendor/github.com/docker/libnetwork/networkdb/cluster.go2
6 files changed, 41 insertions, 14 deletions
diff --git a/vendor.conf b/vendor.conf
index 293656428b..e2d6d66840 100644
--- a/vendor.conf
+++ b/vendor.conf
@@ -24,7 +24,7 @@ github.com/RackSec/srslog 456df3a81436d29ba874f3590eeeee25d666f8a5
github.com/imdario/mergo 0.2.1
#get libnetwork packages
-github.com/docker/libnetwork b13e0604016a4944025aaff521d9c125850b0d04
+github.com/docker/libnetwork 5d4e5de2f9962c2de8a7872128e2cc09dfdd99aa
github.com/docker/go-events 18b43f1bc85d9cdd42c05a6cd2d444c7a200a894
github.com/armon/go-radix e39d623f12e8e41c7b5529e9a9dd67a1e2261f80
github.com/armon/go-metrics eb0af217e5e9747e41dd5303755356b62d28e3ec
diff --git a/vendor/github.com/docker/libnetwork/agent.go b/vendor/github.com/docker/libnetwork/agent.go
index ff1869055f..923c3af1e8 100644
--- a/vendor/github.com/docker/libnetwork/agent.go
+++ b/vendor/github.com/docker/libnetwork/agent.go
@@ -187,6 +187,13 @@ func (c *controller) agentSetup() error {
clusterProvider := c.cfg.Daemon.ClusterProvider
agent := c.agent
c.Unlock()
+
+ if clusterProvider == nil {
+ msg := "Aborting initialization of Libnetwork Agent because cluster provider is now unset"
+ logrus.Errorf(msg)
+ return fmt.Errorf(msg)
+ }
+
bindAddr := clusterProvider.GetLocalAddress()
advAddr := clusterProvider.GetAdvertiseAddress()
remote := clusterProvider.GetRemoteAddress()
diff --git a/vendor/github.com/docker/libnetwork/default_gateway.go b/vendor/github.com/docker/libnetwork/default_gateway.go
index b042539b88..bf1592435f 100644
--- a/vendor/github.com/docker/libnetwork/default_gateway.go
+++ b/vendor/github.com/docker/libnetwork/default_gateway.go
@@ -4,6 +4,7 @@ import (
"fmt"
"strings"
+ "github.com/Sirupsen/logrus"
"github.com/docker/libnetwork/netlabel"
"github.com/docker/libnetwork/types"
)
@@ -72,9 +73,19 @@ func (sb *sandbox) setupDefaultGW() error {
if err != nil {
return fmt.Errorf("container %s: endpoint create on GW Network failed: %v", sb.containerID, err)
}
+
+ defer func() {
+ if err != nil {
+ if err2 := newEp.Delete(true); err2 != nil {
+ logrus.Warnf("Failed to remove gw endpoint for container %s after failing to join the gateway network: %v",
+ sb.containerID, err2)
+ }
+ }
+ }()
+
epLocal := newEp.(*endpoint)
- if err := epLocal.sbJoin(sb); err != nil {
+ if err = epLocal.sbJoin(sb); err != nil {
return fmt.Errorf("container %s: endpoint join on GW Network failed: %v", sb.containerID, err)
}
diff --git a/vendor/github.com/docker/libnetwork/endpoint.go b/vendor/github.com/docker/libnetwork/endpoint.go
index de63cf34e8..8e70c38d76 100644
--- a/vendor/github.com/docker/libnetwork/endpoint.go
+++ b/vendor/github.com/docker/libnetwork/endpoint.go
@@ -427,7 +427,7 @@ func (ep *endpoint) Join(sbox Sandbox, options ...EndpointOption) error {
return ep.sbJoin(sb, options...)
}
-func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
+func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) (err error) {
n, err := ep.getNetworkFromStore()
if err != nil {
return fmt.Errorf("failed to get network from store during join: %v", err)
@@ -462,7 +462,7 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
d, err := n.driver(true)
if err != nil {
- return fmt.Errorf("failed to join endpoint: %v", err)
+ return fmt.Errorf("failed to get driver during join: %v", err)
}
err = d.Join(nid, epid, sb.Key(), ep, sb.Labels())
@@ -471,8 +471,8 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
}
defer func() {
if err != nil {
- if err := d.Leave(nid, epid); err != nil {
- logrus.Warnf("driver leave failed while rolling back join: %v", err)
+ if e := d.Leave(nid, epid); e != nil {
+ logrus.Warnf("driver leave failed while rolling back join: %v", e)
}
}
}()
@@ -538,11 +538,11 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
logrus.Debugf("Revoking external connectivity on endpoint %s (%s)", extEp.Name(), extEp.ID())
extN, err := extEp.getNetworkFromStore()
if err != nil {
- return fmt.Errorf("failed to get network from store during join: %v", err)
+ return fmt.Errorf("failed to get network from store for revoking external connectivity during join: %v", err)
}
extD, err := extN.driver(true)
if err != nil {
- return fmt.Errorf("failed to join endpoint: %v", err)
+ 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 {
return types.InternalErrorf(
@@ -570,9 +570,9 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
}
if !sb.needDefaultGW() {
- if err := sb.clearDefaultGW(); err != nil {
+ if e := sb.clearDefaultGW(); e != nil {
logrus.Warnf("Failure while disconnecting sandbox %s (%s) from gateway network: %v",
- sb.ID(), sb.ContainerID(), err)
+ sb.ID(), sb.ContainerID(), e)
}
}
@@ -705,7 +705,7 @@ func (ep *endpoint) sbLeave(sb *sandbox, force bool, options ...EndpointOption)
d, err := n.driver(!force)
if err != nil {
- return fmt.Errorf("failed to leave endpoint: %v", err)
+ return fmt.Errorf("failed to get driver during endpoint leave: %v", err)
}
ep.Lock()
@@ -765,11 +765,11 @@ func (ep *endpoint) sbLeave(sb *sandbox, force bool, options ...EndpointOption)
logrus.Debugf("Programming external connectivity on endpoint %s (%s)", extEp.Name(), extEp.ID())
extN, err := extEp.getNetworkFromStore()
if err != nil {
- return fmt.Errorf("failed to get network from store during leave: %v", err)
+ return fmt.Errorf("failed to get network from store for programming external connectivity during leave: %v", err)
}
extD, err := extN.driver(true)
if err != nil {
- return fmt.Errorf("failed to leave endpoint: %v", err)
+ return fmt.Errorf("failed to get driver for programming external connectivity during leave: %v", err)
}
if err := extD.ProgramExternalConnectivity(extEp.network.ID(), extEp.ID(), sb.Labels()); err != nil {
logrus.Warnf("driver failed programming external connectivity on endpoint %s: (%s) %v",
diff --git a/vendor/github.com/docker/libnetwork/networkdb/broadcast.go b/vendor/github.com/docker/libnetwork/networkdb/broadcast.go
index 5555634179..3fe9f6271a 100644
--- a/vendor/github.com/docker/libnetwork/networkdb/broadcast.go
+++ b/vendor/github.com/docker/libnetwork/networkdb/broadcast.go
@@ -86,6 +86,15 @@ func (nDB *NetworkDB) sendNodeEvent(event NodeEvent_Type) error {
notify: notifyCh,
})
+ nDB.RLock()
+ noPeers := len(nDB.nodes) <= 1
+ nDB.RUnlock()
+
+ // Message enqueued, do not wait for a send if no peer is present
+ if noPeers {
+ return nil
+ }
+
// Wait for the broadcast
select {
case <-notifyCh:
diff --git a/vendor/github.com/docker/libnetwork/networkdb/cluster.go b/vendor/github.com/docker/libnetwork/networkdb/cluster.go
index 62d05c0aea..54c392c5a4 100644
--- a/vendor/github.com/docker/libnetwork/networkdb/cluster.go
+++ b/vendor/github.com/docker/libnetwork/networkdb/cluster.go
@@ -17,7 +17,7 @@ import (
)
const (
- reapInterval = 60 * time.Second
+ reapInterval = 30 * time.Minute
reapPeriod = 5 * time.Second
retryInterval = 1 * time.Second
nodeReapInterval = 24 * time.Hour