Bryan Boreham
5e4ab7f307
Plumb isContainer through Claim calls
2016-04-18 10:16:54 +01:00
Bryan Boreham
2b159b0c75
Pass checkAlive flag through as isContainer in Allocate
2016-04-18 10:16:54 +01:00
Bryan Boreham
984ba8a377
Extend 'owned' structure to store IsContainer flag
2016-04-18 10:13:09 +01:00
Bryan Boreham
01be916c37
Add test to expose problem deleting non-container IPs
...
and check dead containers are removed
2016-04-18 10:13:09 +01:00
Adam Harrison
a09986baa2
Rename consense -> prime
2016-04-14 12:46:03 +01:00
Bryan Boreham
61b0d0ba9e
Merge pull request #2149 from weaveworks/stop-test-router
...
stop ipam tests from leaking routers
2016-04-11 13:34:21 +01:00
Matthias Radestock
695babf7ba
make Allocator.Stop() idempotent and non-blocking
...
So that tests don't have to be careful about ensuring that allocators
are stopped exactly once, or rely on the magic mesh.ChannelSize for
non-blocking behaviour.
2016-04-11 12:32:01 +01:00
Bryan Boreham
ecf1887e5b
Initialize Paxos quorum to 0 until this node needs to request consensus.
...
With a 0 quorum we will participate in voting, but will not actively
try to form a ring.
2016-04-11 11:42:24 +01:00
Bryan Boreham
c12a52d20e
Better log and status messages for Paxos observer
2016-04-07 12:50:52 +01:00
Bryan Boreham
0c59de40e7
Refactor Paxos status call to remove type assertion
2016-04-07 12:12:08 +01:00
Adam Harrison
436dc01f52
Merge pull request #2070 from weaveworks/issues/1721-quorum-callback
...
Use current target list to compute quorum
2016-03-29 11:11:30 +01:00
Bryan Boreham
2b617633ae
Compute quorum based on the dynamic number of target peers
2016-03-24 12:06:59 +00:00
Tom Wilkie
7a7867ae16
Fix spelling mistakes.
2016-03-23 16:09:43 +00:00
Adam Harrison
e9081c6607
Allow specification of initial IPAM ring via --ipam-seed
2016-03-21 09:49:54 +00:00
Matthias Radestock
9f10b21c9c
use Space.NumFreeAddresses for calculating transferred ip count
...
...rather than Space.NumFreeAddressesInRange; we don't care about the
universe.
Alternatively we could make Space.AddRanges return the count. But
AddRanges doesn't know whether the ranges overlap with existing free
space - that is only guaranteed by the context - so would have to do
much the same before/after calculation.
Another alternative would be to add the range sizes in
AdminTakeoverRanges. But that is more code and less clear.
2016-03-19 14:41:36 +00:00
Matthias Radestock
62d823850c
make rmpeer report on size of transferred space, and not fail
...
Closes #2058 .
2016-03-19 14:40:26 +00:00
Matthias Radestock
c48eefa82d
refactor(ish): extract allocator logging commonality
...
and add warnf
2016-03-19 14:32:54 +00:00
Matthias Radestock
65eff683dd
Merge branch '1.4'
2016-03-19 14:30:38 +00:00
Matthias Radestock
f42e275884
broadcast ipam ring update after rmpeer
...
So that other peers notice the change more promptly.
Fixes #2068 .
2016-03-19 13:57:20 +00:00
Bryan Boreham
f11314ed3e
Introduce 'Count' type to avoid abusing 'Offset'
2016-03-19 11:47:34 +00:00
Adam Harrison
2eeb754454
refactor: Introduce IPAM config object
2016-03-14 17:41:20 +00:00
Bryan Boreham
a57335738d
Don't do unnecessary clock skew check in IPAM
2016-03-10 11:41:47 +00:00
Adam Harrison
6584df274e
Implement weave consense
2016-03-03 18:52:09 +00:00
Adam Harrison
b84ef98de8
Support non-electing peers via --observer
2016-03-03 17:48:50 +00:00
Bryan Boreham
73f1a04d5f
Deal in subnets, not ranges, when requesting address allocation
2016-03-02 17:21:51 -08:00
Bryan Boreham
b76e2a87cf
Store address+subnet prefix for 'owned' addresses
2016-03-02 17:21:24 -08:00
Bryan Boreham
b6eec08247
Return all applicable results from Lookup
...
and stop erroring on Lookup not found; just return a blank result
2016-03-02 17:01:12 -08:00
Bryan Boreham
95cbc8940e
Sync 'owned' data with existing containers at startup
2016-03-02 11:35:24 -08:00
Bryan Boreham
f29716387f
Persist the 'owned' address set
2016-03-02 11:35:24 -08:00
Bryan Boreham
7453c7a5dd
Merge branch '1.4'
2016-02-29 08:22:22 -08:00
Adam Harrison
bceabe32a2
Try all pending allocations
...
We can have outstanding allocations for different ranges owned by
different peers, so we should not short circuit after the first space
request.
2016-02-25 14:56:33 +00:00
Bryan Boreham
546f9592f9
Hard-fail on persistence errors, otherwise the network can get confused on a restart.
...
Create `Allocator.fatalf()`, for consistency
2016-02-12 18:12:26 +00:00
Bryan Boreham
06f3793f05
Remove persisted IPAM ring data on peerName change
2016-02-12 18:12:26 +00:00
Bryan Boreham
f396c60402
Persist the Ring
2016-02-12 18:12:26 +00:00
Bryan Boreham
ad036499eb
Add db infra to IPAM
2016-02-12 18:12:26 +00:00
Bryan Boreham
07b79568dd
Resurrect apparently-dead containers on ContainerStarted event
2016-02-04 13:49:43 +00:00
Matthias Radestock
6bebce0b5a
tiny refactor
2016-02-02 14:03:01 +00:00
Bryan Boreham
71da517e88
Refactor to collect all code that touches alloc.owned
2016-02-02 13:57:12 +00:00
Bryan Boreham
952e9de265
Remove superfluous line and fix comment typo
2016-01-25 18:05:43 +00:00
Peter Bourgon
e27b320ede
Update import location for mesh
2016-01-15 15:57:01 +01:00
Bryan Boreham
e468399616
Extend the timeout for dead containers to 30 seconds,
...
but remove them if they are destroyed, to reduce starvation
when users are creating and destroying containers quickly.
2016-01-12 14:38:44 +00:00
Bryan Boreham
b2b293a8ee
Added 'ContainerDestroyed()' callback from docker client
2016-01-12 14:38:44 +00:00
Bryan Boreham
f84b933d7c
Leave container allocations for a time after death
...
so they will be reclaimed if the container is restarted.
Still cancel pending operations immediately a container dies
2016-01-12 14:38:44 +00:00
Bryan Boreham
4672e9ec1f
Generalise ticker so we can use it for more than paxos,
...
and call tryPendingOps() from it so we eventually re-try operations
2016-01-12 14:38:44 +00:00
Matthias Radestock
274265f001
typo
2015-12-21 17:03:03 +00:00
Matthias Radestock
3cd199e852
make GossipData immutable
...
The same piece of GossipData can be shared and subject to different
Merge operations. We either need to copy the data when we share it, or
create copies on modification, i.e. copy-on-write.
We choose the latter, since it is more efficient and there is just one
mutating operation.
Fixes #1697 .
2015-11-17 20:13:46 +00:00
Matthias Radestock
dc9f8762ca
move generic communication substrate into its own 'mesh' package
...
This is mostly a matter of moving some files, changing package names,
changing some imports, and changing some type references.
We duplicate the odd constant & global var, and the intmac/macint
functions, since neither 'router' or 'mesh' nor, really,' common' are
a natural home for them.
2015-11-09 16:37:39 +00:00
Matthias Radestock
8bd77c0d47
refactor: get rid of router/utils.go
...
most functions end up in other files in the router package, but a few
land in common.
2015-11-07 15:45:29 +00:00
Bryan Boreham
67e9310cc1
Review feedback
2015-11-03 17:01:27 +00:00
Bryan Boreham
8742957f75
Tweak naming to be closer to code changes in nameserver
2015-11-03 14:15:49 +00:00