More efficient docker Tagger

Augment existing node rather than creating a new one then merging it,
and avoid creating a set with one entry.
This commit is contained in:
Bryan Boreham
2018-02-18 18:42:26 +00:00
parent 6593720472
commit 262cea2797

View File

@@ -4,6 +4,7 @@ import (
"strconv"
"strings"
"github.com/weaveworks/common/mtime"
"github.com/weaveworks/scope/probe/process"
"github.com/weaveworks/scope/report"
)
@@ -80,7 +81,7 @@ func (t *Tagger) Tag(r report.Report) (report.Report, error) {
}
func (t *Tagger) tag(tree process.Tree, topology *report.Topology) {
for nodeID, node := range topology.Nodes {
for _, node := range topology.Nodes {
pidStr, ok := node.Latest.Lookup(process.PID)
if !ok {
continue
@@ -114,9 +115,8 @@ func (t *Tagger) tag(tree process.Tree, topology *report.Topology) {
continue
}
node := report.MakeNodeWith(nodeID, map[string]string{
ContainerID: c.ID(),
}).WithParents(report.MakeSets().
node = node.WithLatest(ContainerID, mtime.Now(), c.ID())
node = node.WithParents(report.MakeSets().
Add(report.Container, report.MakeStringSet(report.MakeContainerNodeID(c.ID()))),
)
@@ -129,6 +129,6 @@ func (t *Tagger) tag(tree process.Tree, topology *report.Topology) {
)
}
topology.AddNode(node)
topology.ReplaceNode(node)
}
}