Skip to content

Commit f72ced3

Browse files
authored
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.
1 parent 474298c commit f72ced3

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

probe/host/tagger.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (t Tagger) Tag(r report.Report) (report.Report, error) {
3333
// and as such do their own host tagging.
3434
for _, topology := range []report.Topology{r.Process, r.Container, r.ContainerImage, r.Host, r.Pod} {
3535
for _, node := range topology.Nodes {
36-
topology.AddNode(node.WithLatests(metadata).WithParents(parents))
36+
topology.ReplaceNode(node.WithLatests(metadata).WithParents(parents))
3737
}
3838
}
3939
return r, nil

probe/topology_tagger.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func (topologyTagger) Name() string { return "Topology" }
1818
func (topologyTagger) Tag(r report.Report) (report.Report, error) {
1919
r.WalkNamedTopologies(func(name string, t *report.Topology) {
2020
for _, node := range t.Nodes {
21-
t.AddNode(node.WithTopology(name))
21+
t.ReplaceNode(node.WithTopology(name))
2222
}
2323
})
2424
return r, nil

report/topology.go

+7
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,13 @@ func (t Topology) AddNode(node Node) {
111111
t.Nodes[node.ID] = node
112112
}
113113

114+
// ReplaceNode adds node to the topology under key nodeID; if a
115+
// node already exists for this key, node replaces that node.
116+
// Like AddNode, it mutates the Topology
117+
func (t Topology) ReplaceNode(node Node) {
118+
t.Nodes[node.ID] = node
119+
}
120+
114121
// GetShape returns the current topology shape, or the default if there isn't one.
115122
func (t Topology) GetShape() string {
116123
if t.Shape == "" {

0 commit comments

Comments
 (0)