Remove persisted IPAM ring data on peerName change

This commit is contained in:
Bryan Boreham committed 2016-02-12 18:12:26 +00:00
1 parent f396c60402
commit 06f3793f05
1 file changed
+16
+16
View File
@@ -768,15 +768,31 @@ func (alloc *Allocator) reportFreeSpace() {
// Persisting the Ring
const (
ringIdent = "ring"
nameIdent = "peername"
)
func (alloc *Allocator) persistRing() {
// It would be better if these two Save operations happened in the same transaction
if err := alloc.db.Save(nameIdent, alloc.ourName); err != nil {
common.Log.Errorf("Error persisting ring data: %s", err)
return
}
if err := alloc.db.Save(ringIdent, alloc.ring); err != nil {
common.Log.Errorf("Error persisting ring data: %s", err)
}
}
func (alloc *Allocator) loadPersistedRing() {
var checkPeerName mesh.PeerName
if err := alloc.db.Load(nameIdent, &checkPeerName); err != nil {
common.Log.Errorf("Error loading persisted peer name: %s", err)
return
}
if checkPeerName != alloc.ourName {
alloc.infof("Deleting persisted data for peername %s", checkPeerName)
alloc.persistRing()
return
}
if err := alloc.db.Load(ringIdent, &alloc.ring); err != nil {
common.Log.Errorf("Error loading persisted ring data: %s", err)
}