mirror of
https://github.com/weaveworks/scope.git
synced 2026-02-14 10:00:13 +00:00
Add topology.ReplaceNode() for efficiency (#3073)
* Add topology.ReplaceNode() for efficiency In some places AddNode() was called after adding to an existing node, in which case the Merge() is just a waste of time.
This commit is contained in:
@@ -33,7 +33,7 @@ func (t Tagger) Tag(r report.Report) (report.Report, error) {
|
||||
// and as such do their own host tagging.
|
||||
for _, topology := range []report.Topology{r.Process, r.Container, r.ContainerImage, r.Host, r.Pod} {
|
||||
for _, node := range topology.Nodes {
|
||||
topology.AddNode(node.WithLatests(metadata).WithParents(parents))
|
||||
topology.ReplaceNode(node.WithLatests(metadata).WithParents(parents))
|
||||
}
|
||||
}
|
||||
return r, nil
|
||||
|
||||
@@ -18,7 +18,7 @@ func (topologyTagger) Name() string { return "Topology" }
|
||||
func (topologyTagger) Tag(r report.Report) (report.Report, error) {
|
||||
r.WalkNamedTopologies(func(name string, t *report.Topology) {
|
||||
for _, node := range t.Nodes {
|
||||
t.AddNode(node.WithTopology(name))
|
||||
t.ReplaceNode(node.WithTopology(name))
|
||||
}
|
||||
})
|
||||
return r, nil
|
||||
|
||||
@@ -111,6 +111,13 @@ func (t Topology) AddNode(node Node) {
|
||||
t.Nodes[node.ID] = node
|
||||
}
|
||||
|
||||
// ReplaceNode adds node to the topology under key nodeID; if a
|
||||
// node already exists for this key, node replaces that node.
|
||||
// Like AddNode, it mutates the Topology
|
||||
func (t Topology) ReplaceNode(node Node) {
|
||||
t.Nodes[node.ID] = node
|
||||
}
|
||||
|
||||
// GetShape returns the current topology shape, or the default if there isn't one.
|
||||
func (t Topology) GetShape() string {
|
||||
if t.Shape == "" {
|
||||
|
||||
Reference in New Issue
Block a user