From e58f865d3fa8b87c5d6b7f08481f404dbba7b302 Mon Sep 17 00:00:00 2001 From: Roberto Bruggemann Date: Tue, 12 Dec 2017 11:25:04 +0000 Subject: [PATCH 1/2] Upgrade reports before caching This change will reduces upgrades, since `report.Upgrade` only performs an upgrade if necessary. --- app/multitenant/aws_collector.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/multitenant/aws_collector.go b/app/multitenant/aws_collector.go index 964b5b241..18aff2769 100644 --- a/app/multitenant/aws_collector.go +++ b/app/multitenant/aws_collector.go @@ -284,6 +284,7 @@ func (c *awsCollector) getReports(ctx context.Context, reportKeys []string) ([]r log.Warningf("Error fetching from cache: %v", err) } for key, report := range found { + report = report.Upgrade() c.inProcess.StoreReport(key, report) reports = append(reports, report) } @@ -337,7 +338,7 @@ func (c *awsCollector) Report(ctx context.Context, timestamp time.Time) (report. return report.MakeReport(), err } - return c.merger.Merge(reports).Upgrade(), nil + return c.merger.Merge(reports), nil } func (c *awsCollector) HasHistoricReports() bool { From 10f3e4c0dc73075aadae07f9bb58d24a7161b681 Mon Sep 17 00:00:00 2001 From: Roberto Bruggemann Date: Tue, 12 Dec 2017 11:48:55 +0000 Subject: [PATCH 2/2] In-memory collector: merge reports after upgrade Upgrading reports individually reduces the amount of upgrades, since some reports might have been upgraded in previously. --- app/collector.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/collector.go b/app/collector.go index 434edcd81..d71ff2087 100644 --- a/app/collector.go +++ b/app/collector.go @@ -152,7 +152,11 @@ func (c *collector) Report(_ context.Context, timestamp time.Time) (report.Repor c.clean() c.quantise() - rpt := c.merger.Merge(c.reports).Upgrade() + for i := range c.reports { + c.reports[i] = c.reports[i].Upgrade() + } + + rpt := c.merger.Merge(c.reports) c.cached = &rpt return rpt, nil }