Merge pull request #2238 from weaveworks/missing-persist

Persist the IPAM ring on `weave reset` and `weave rmpeer`
This commit is contained in:
Matthias Radestock committed 2016-05-05 14:41:53 +01:00
commit b1aa52b3ed
2 files changed
+7 -3

No files matched your search

+6 -3
View File
@@ -415,6 +415,7 @@ func (alloc *Allocator) Shutdown() {
alloc.cancelOps(&alloc.pendingPrimes)
if heir := alloc.pickPeerForTransfer(); heir != mesh.UnknownPeerName {
alloc.ring.Transfer(alloc.ourName, heir)
alloc.persistRing()
alloc.space.Clear()
alloc.gossip.GossipBroadcast(alloc.Gossip())
time.Sleep(100 * time.Millisecond)
@@ -452,7 +453,7 @@ func (alloc *Allocator) AdminTakeoverRanges(peerNameOrNickname string) address.C
}
before := alloc.space.NumFreeAddresses()
alloc.space.AddRanges(newRanges)
alloc.ringUpdated()
after := alloc.space.NumFreeAddresses()
alloc.gossip.GossipBroadcast(alloc.Gossip())
@@ -627,11 +628,13 @@ func (alloc *Allocator) actorLoop(actionChan <-chan func(), stopChan <-chan stru
case <-stopChan:
return
case <-alloc.ticker.C:
// Retry things in case messages got lost between here and recipients
if alloc.awaitingConsensus {
alloc.propose()
} else {
alloc.tryPendingOps()
}
alloc.removeDeadContainers()
alloc.tryPendingOps()
}
alloc.assertInvariants()
@@ -660,8 +663,8 @@ func (alloc *Allocator) establishRing() {
func (alloc *Allocator) createRing(peers []mesh.PeerName) {
alloc.debugln("Paxos consensus:", peers)
alloc.ring.ClaimForPeers(normalizeConsensus(peers))
alloc.gossip.GossipBroadcast(alloc.Gossip())
alloc.ringUpdated()
alloc.gossip.GossipBroadcast(alloc.Gossip())
}
func (alloc *Allocator) ringUpdated() {
+1
View File
@@ -176,6 +176,7 @@ func TestAllocatorClaim(t *testing.T) {
alloc.Prime()
// Do an allocate on the other peer, which we will try to claim later
addrx, err := allocs[0].Allocate(container1, subnet, true, returnFalse)
router.Flush()
// Now try the claim again
err = alloc.Claim(container3, addr1, true, true)