Restrict cycle analytics usage data to instances that use postgres only

This commit is contained in:
Tiago Botelho 2018-02-13 16:52:00 +00:00
parent 41bb23ae1d
commit 3f31da9c69
5 changed files with 9 additions and 10 deletions

View file

@ -7,13 +7,8 @@ class CycleAnalytics
end end
def all_medians_per_stage def all_medians_per_stage
medians_per_stage = {} STAGES.each_with_object({}) do |stage_name, hsh|
hsh[stage_name] = self[stage_name].median
# We only need this data for Postgres instances
return medians_per_stage if Gitlab::Database.mysql?
STAGES.each do |stage_name|
medians_per_stage[stage_name] = self[stage_name].median
end end
end end

View file

@ -8,14 +8,14 @@ module Gitlab
private private
def base_query def base_query
@base_query ||= stage_query([@project.id]) @base_query ||= stage_query([@project.id]) # rubocop:disable Gitlab/ModuleWithInstanceVariables
end end
def stage_query(project_ids) def stage_query(project_ids)
query = mr_closing_issues_table.join(issue_table).on(issue_table[:id].eq(mr_closing_issues_table[:issue_id])) query = mr_closing_issues_table.join(issue_table).on(issue_table[:id].eq(mr_closing_issues_table[:issue_id]))
.join(issue_metrics_table).on(issue_table[:id].eq(issue_metrics_table[:issue_id])) .join(issue_metrics_table).on(issue_table[:id].eq(issue_metrics_table[:issue_id]))
.project(issue_table[:project_id].as("project_id")) .project(issue_table[:project_id].as("project_id"))
.where(issue_table[:project_id].in(project_ids)) # rubocop:disable Gitlab/ModuleWithInstanceVariables .where(issue_table[:project_id].in(project_ids))
.where(issue_table[:created_at].gteq(@options[:from])) # rubocop:disable Gitlab/ModuleWithInstanceVariables .where(issue_table[:created_at].gteq(@options[:from])) # rubocop:disable Gitlab/ModuleWithInstanceVariables
# Load merge_requests # Load merge_requests

View file

@ -73,6 +73,9 @@ module Gitlab
end end
def cycle_analytics_usage_data def cycle_analytics_usage_data
# We only want to generate this data for instances that use PostgreSQL
return {} if Gitlab::Database.mysql?
projects = Project.sorted_by_activity.limit(Gitlab::CycleAnalytics::UsageData::PROJECTS_LIMIT) projects = Project.sorted_by_activity.limit(Gitlab::CycleAnalytics::UsageData::PROJECTS_LIMIT)
Gitlab::CycleAnalytics::UsageData.new(projects, { from: 7.days.ago }).to_json Gitlab::CycleAnalytics::UsageData.new(projects, { from: 7.days.ago }).to_json

View file

@ -36,6 +36,7 @@ describe Gitlab::UsageData do
gitlab_shared_runners gitlab_shared_runners
git git
database database
avg_cycle_analytics
)) ))
end end

View file

@ -50,7 +50,7 @@ module CycleAnalyticsHelpers
end end
median_time_difference = time_differences.sort[2] median_time_difference = time_differences.sort[2]
expect(subject[phase].median).to be_within(5).of(median_time_difference) expect(subject[phase].median.presence).to be_within(5).of(median_time_difference)
end end
context "when the data belongs to another project" do context "when the data belongs to another project" do