migrate: decrease memory usage (only duplicate machines)

release-2.0
Barak Michener 2015-02-13 15:26:54 -05:00
parent 02c52f175f
commit e9f4be498d
1 changed files with 20 additions and 14 deletions

View File

@ -105,9 +105,23 @@ func pullNodesFromEtcd(n *node) map[string]uint64 {
return out
}
func fixEtcd(n *node) {
n.Path = "/0"
machines := n.Children["machines"]
func fixEtcd(etcdref *node) *node {
n := &node{
Path: "/0",
CreatedIndex: etcdref.CreatedIndex,
ModifiedIndex: etcdref.ModifiedIndex,
ExpireTime: etcdref.ExpireTime,
ACL: etcdref.ACL,
Children: make(map[string]*node),
}
var machines *node
if machineOrig, ok := etcdref.Children["machines"]; ok {
machines = deepCopyNode(machineOrig, n)
}
if machines == nil {
return n
}
n.Children["members"] = &node{
Path: "/0/members",
CreatedIndex: machines.CreatedIndex,
@ -160,13 +174,7 @@ func fixEtcd(n *node) {
}
n.Children["members"].Children[m.ID.String()] = newNode
}
for k, _ := range n.Children {
if k != "members" {
delete(n.Children, k)
}
}
return n
}
func mangleRoot(n *node) *node {
@ -180,11 +188,9 @@ func mangleRoot(n *node) *node {
}
newRoot.Children["1"] = n
etcd := n.Children["_etcd"]
newEtcd := deepCopyNode(etcd, newRoot)
replacePathNames(n, "/", "/1/")
fixEtcd(newEtcd)
newRoot.Children["0"] = newEtcd
newRoot.Children["0"].Parent = newRoot
newZero := fixEtcd(etcd)
newRoot.Children["0"] = newZero
return newRoot
}