Commit Graph
4047 Commits
Author SHA1 Message Date
Matthias Radestock 4fffa6fa43 fix typo 2016-01-08 15:11:21 +00:00
Tom Wilkie c0cd9dffc2 Merge pull request #1862 from weaveworks/1651-pause-differently
Fix race condition in ipam TestHTTPCancel
2016-01-08 14:07:06 +00:00
Bryan Boreham f91d7bb7e4 Rewrite TestHTTPCancel to avoid fiddling inside Allocator 2016-01-08 13:37:15 +00:00
Matthias Radestock 3e6f31c8e2 add missing dependencies and netgo checks 2016-01-08 13:27:37 +00:00
Matthias Radestock 19b53cdeb1 refactor: get rid of superfluous rule 2016-01-08 12:06:38 +00:00
Matthias Radestock c6cc10169f refactor: put all dependencies in one place 2016-01-08 12:05:48 +00:00
Bryan Boreham 987d89632d Merge pull request #1847 from weaveworks/1613-weaveutil
extract script utilities into single binary; LGTM
2016-01-07 18:53:25 +00:00
Bryan Boreham 8804f88c93 Merge pull request #1856 from weaveworks/no-gossip-sender-gc
get rid of GossipSender gc; LTGM
2016-01-07 17:29:54 +00:00
Bryan Boreham 3c654bc036 Merge pull request #1561 from weaveworks/proxy-retry-attach
Proxy retry attaching containers; fixes #1556
2016-01-07 17:27:19 +00:00
Paul Bellamy 8ddbb3d8af [proxy] Keep retrying container attaches until they succeed. 2016-01-07 17:09:34 +00:00
Tom Wilkie 422e9b58cd Merge pull request #1857 from weaveworks/issues/864-gce-retry
Stop masking failures in gce hosts destroy
2016-01-07 14:53:02 +00:00
Matthias Radestock 64a017c972 Merge branch '1.4' 2016-01-07 14:36:08 +00:00
Matthias Radestock e4295a2da9 don't attach rewrite_etc_hosts helper container to weave
...since that is a) inefficent and b) can block when IPAM hasn't had
consensus.

We can only end up in this situation when DOCKER_HOST is pointing at
the weave proxy and we are running `weave run|attach` with
`--local`. So it's very much an edge case.

Fixes #1858.
2016-01-07 14:32:52 +00:00
Matthias Radestock 216a0fe4fc refactor: WEAVE_CIDR=none is redundant when --net=host 2016-01-07 14:29:51 +00:00
Bryan Boreham 604f5c599a Check if there are any machines to destroy, and stop masking failures 2016-01-07 13:40:34 +00:00
Matthias Radestock 9aa4313d37 refactor 2016-01-06 17:38:40 +00:00
Matthias Radestock 969dc4e527 get rid of GossipSender gc
With the per-broadcast-source GossipSenders gone, we can get rid of
GossipSender gc...

Instead of maintaining a Connection->GossipSender map in the
GossipChannels - which we then need to gc when connections get closed
- we keep gossip_channel_name->GossipSender maps in LocalConnections.

Access to the map is guarded by a separate lock, rather than re-using
the LocalConnection lock. This reduces lock contention and risk of
deadlock.

In the GossipSenders, we replace the Stop() method with a signalling
channel, i.e. senders stop when that channel gets closed. Handily, the
LocalConnection.finished channel fits that description. So when a
LocalConnection's run loop terminates, any existing and future
associated GossipSenders will end up terminating too.
2016-01-06 17:38:40 +00:00
Bryan Boreham bbd0b15792 Merge pull request #1855 from weaveworks/gossip-broadcast-stall-3
don't stall gossip broadcasting when there are blocked connections; LGTM
2016-01-06 16:43:37 +00:00
Matthias Radestock 99b7fbbc71 optimisation: stop GossipSender on send error 2016-01-05 17:18:41 +00:00
Matthias Radestock 486eb740b5 optimisation: abort GossipSender.deliver when stopped 2016-01-05 17:18:41 +00:00
Matthias Radestock c6a73b8a75 don't stall broadcasting when there are blocked connections
Previously broadcasts were being handled by one GossipSender per
broadcast source (and channel), which sends the broadcast to all next
hops, and hence can stall when a single destination is stalled.

Here we get rid of these per broadcast source GossipSenders. Instead
broadcasts are sent to per-connection GossipSenders for all next hops.

For this we use the existing GossipSenders we have set up for ordinary
gossip. In order to deal with broadcasts they need one GossipData cell
per broadcast source, since only broadcasts from the same source can
be Merge()ed. So we add a PeerName->GossipData map of cells, in
addition to the existing cell for ordinary gossip.

The GossipSender goroutine picks one of the cells at a time, Encode()s
the contents and sends it. It prefers the ordinary gossip cell over
the broadcast cells since typically ordinary gossip is more important.

To reduce coupling, the GossipSenders don't actually know how to
construct protocol messages. They just invoke a couple of functions
for that - one for ordinary gossip and one for broadcast - which are
supplied by the GossipChannel.

There are two downsides to this change:

1. broadcasts get encoded per connection, rather than just once

2. we can potentially end up with O(n_peers^2) cells, each containing
accumulated (via GossipData.Merge()) broadcasts. For this to happen,
the peer must

- deal with gossip from most nodes. This doesn't happen in
  (near)complete connection topologies. Hypercube topologies are
  probably the worst case uniform topology. And a star topology is the
  worst case for a single (the centre) peer.

- have backlogged connections to most of its neighbours, without
  those connections being completely stalled (since that would cause
  heartbeat timeouts to terminate them).

Furthermore, for this to matter in practise, the accumulated broadcast
GossipData must be sizeable:

- For topology gossip, GossipData is just a set of PeerNames. Which
  takes very little space and is bounded, since there is a finite
  number of peers. And, if we could get rid of workaround for #1793
  (cbaa92dcb), then topology broadcasts would only ever contain
  information about the source peer, so the GossipData would contain
  just one PeerName.

- IPAM only employs broadcast during initialisation and shutdown.

- DNS broadcasts contain DNS entries for containers on the source
  peer. Each entry will typically be 100-200 bytes. The accumulated
  broadcast GossipData from a peer will contain entries for all the
  peer's DNS entries, worst case. This includes tombstones,
  i.e. entries for containers that have died. If there is churn,
  i.e. DNS entries being added and removed continuously, and the churn
  rate exceeds the rate at which we can forward those entries, then
  the accumulated broadcast GossipData can grow unbounded. Note that
  this is the case on master too; the difference here is that we can
  have up to n_peers copies of that GossipData.
2016-01-05 17:18:19 +00:00
Bryan Boreham 262f8915a8 Merge pull request #1826 from weaveworks/cleaner-gossip-sender
clean up GossipSender
2016-01-05 16:36:26 +00:00
Ilya Dmitrichenko b623e914c9 update year in copyright notices 2016-01-05 12:19:00 +00:00
Matthias Radestock 70bfcd033b Merge branch '1.4' 2016-01-04 11:14:28 +00:00
Matthias Radestock 80770d39e5 oops 2016-01-04 10:53:41 +00:00
Matthias Radestock beb15fa32c don't fail weave launch when plugin is disabled
Fixes #1851.
2016-01-04 10:35:44 +00:00
Matthias Radestock 1bec425510 Merge branch '1.4' 2016-01-04 09:46:35 +00:00
Matthias Radestock 0adf7626d0 Merge branch 'latest_release_doc_updates' into 1.4 2016-01-04 09:45:56 +00:00
Matthias Radestock 9c17fe259c add ToC to build instructions 2016-01-04 09:41:39 +00:00
Matthias Radestock ecab4b4716 correct image names 2016-01-04 09:35:17 +00:00
Matthias Radestock c3e6669d18 Merge branch '1.4' 2016-01-03 16:45:41 +00:00
Matthias Radestock 7660ad761a oops
I broke this in 370212609.

Fixes #1848.
2016-01-03 16:42:39 +00:00
Matthias Radestock d010000583 fall back to invoking weaveutil in a container
As a result, `weave --local ...` now runs both netcheck and
docker-tls-args.
2016-01-02 14:13:29 +00:00
Matthias Radestock 419f2ff71b move fastdp helpers into weaveutil
so the weave script can invoke them w/o having to run a container
2016-01-02 14:00:44 +00:00
Matthias Radestock 4ebcd355f6 move docker_tls_args into weaveutil
and also give users a clue what went wrong when docker isn't running
2016-01-02 14:00:44 +00:00
Matthias Radestock ec872d7b45 move netcheck into weaveutil 2016-01-02 14:00:44 +00:00
Matthias Radestock 9801e00ba6 add weaveutil
just a placeholder for now
2016-01-02 14:00:44 +00:00
Matthias Radestock 79452d3a9a cosmetic(ish) 2016-01-02 14:00:23 +00:00
Matthias Radestock 0ee22af32d refactor: further simplify fastdp initialisation 2016-01-02 13:17:40 +00:00
Matthias Radestock 13f37edb64 refactor: simplify fastdp initialisation 2016-01-02 13:17:28 +00:00
Matthias Radestock 75d9e95b15 appease linter 2016-01-02 12:35:10 +00:00
Matthias Radestock d59594c6b0 Revert "refactor: pass procfs location to docker_tls_args on command line"
changed my mind

This reverts commit be8260ae79.
2016-01-02 10:50:13 +00:00
Matthias Radestock 4a6b72c649 Revert "cosmetic"
changed my mind

This reverts commit 20a8488a15.
2016-01-02 10:49:22 +00:00
Matthias Radestock 20a8488a15 cosmetic
PROCFS is always set
2016-01-02 00:14:18 +00:00
Matthias Radestock be8260ae79 refactor: pass procfs location to docker_tls_args on command line
...rather than via an env var. This is cleaner.
2016-01-01 23:52:46 +00:00
Matthias Radestock 9c31de9cb9 refactor: replace some 'if's with && and || expressions 2015-12-31 15:36:18 +00:00
Matthias Radestock c1e8c9c537 Merge branch '1.4' 2015-12-31 13:26:55 +00:00
Matthias Radestock c8ff2de3b3 properly deal with unavailable docker server api version
Fixes #1845.
2015-12-31 12:51:16 +00:00
Matthias Radestock 24d1c73012 Merge branch '1.4' 2015-12-31 12:32:30 +00:00
Matthias Radestock 24a2e43547 Merge pull request #1841 from weaveworks/1840-weave-stop-plugin-complaint
don't complain in `weave stop` when plugin is not enabled

Fixes #1840.
2015-12-31 12:32:05 +00:00