From d338c6fcec2a1505a394b9bba092d6a9fdc83971 Mon Sep 17 00:00:00 2001 From: James Wong Date: Tue, 10 Oct 2017 15:54:21 -0400 Subject: [PATCH] remove duplicate metric_rollups not dealing with active relation --- app/models/metric/helper.rb | 2 +- spec/models/metric/helper_spec.rb | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/models/metric/helper.rb b/app/models/metric/helper.rb index fb21a5010e3..3a008e6b895 100644 --- a/app/models/metric/helper.rb +++ b/app/models/metric/helper.rb @@ -121,7 +121,7 @@ def self.sanitize_start_end_time(interval, interval_name, start_time, end_time) def self.remove_duplicate_timestamps(recs) if recs.respond_to?(:klass) # active record relation - return recs unless recs.klass.kind_of?(Metric) || recs.klass.kind_of?(MetricRollup) + return recs unless recs.klass <= Metric || recs.klass <= MetricRollup elsif recs.empty? || !recs.all? { |r| r.kind_of?(Metric) || r.kind_of?(MetricRollup) } return recs end diff --git a/spec/models/metric/helper_spec.rb b/spec/models/metric/helper_spec.rb index 99998bcb46a..1ad8843cbfc 100644 --- a/spec/models/metric/helper_spec.rb +++ b/spec/models/metric/helper_spec.rb @@ -29,6 +29,11 @@ expect(recs).to match_array([metric_rollup_1, metric_rollup_3]) end + it "dedups a given scope" do + recs = described_class.remove_duplicate_timestamps(MetricRollup.where(:id => [metric_rollup_1, metric_rollup_2, metric_rollup_3])) + expect(recs).to match_array([metric_rollup_1, metric_rollup_3]) + end + it "returns only unique records and merge values with the same timestamp" do metric_rollup_1.cpu_usage_rate_average = nil metric_rollup_1.save