Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/utils/usage_data.rb')
-rw-r--r--lib/gitlab/utils/usage_data.rb54
1 files changed, 44 insertions, 10 deletions
diff --git a/lib/gitlab/utils/usage_data.rb b/lib/gitlab/utils/usage_data.rb
index efa2f7a943f..b1ccdcb1df0 100644
--- a/lib/gitlab/utils/usage_data.rb
+++ b/lib/gitlab/utils/usage_data.rb
@@ -121,7 +121,7 @@ module Gitlab
count_grouped = relation.group(column).select(Arel.star.count.as('count_grouped'))
cte = Gitlab::SQL::CTE.new(:count_cte, count_grouped)
- # For example, 9 segements gives 10 buckets
+ # For example, 9 segments gives 10 buckets
bucket_segments = bucket_size - 1
width_bucket = Arel::Nodes::NamedFunction
@@ -171,7 +171,7 @@ module Gitlab
else
value
end
- rescue
+ rescue StandardError
fallback
end
@@ -188,7 +188,7 @@ module Gitlab
return fallback unless client
yield client
- rescue
+ rescue StandardError
fallback
end
@@ -210,20 +210,54 @@ module Gitlab
Gitlab::UsageDataCounters::HLLRedisCounter.track_event(event_name.to_s, values: values)
end
- def maximum_id(model)
- key = :"#{model.name.downcase}_maximum_id"
+ def maximum_id(model, column = nil)
+ key = :"#{model.name.downcase.gsub('::', '_')}_maximum_id"
+ column_to_read = column || :id
+
strong_memoize(key) do
- model.maximum(:id)
+ model.maximum(column_to_read)
end
end
- def minimum_id(model)
- key = :"#{model.name.downcase}_minimum_id"
+ # rubocop: disable UsageData/LargeTable:
+ def jira_service_data
+ data = {
+ projects_jira_server_active: 0,
+ projects_jira_cloud_active: 0
+ }
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ JiraService.active.includes(:jira_tracker_data).find_in_batches(batch_size: 100) do |services|
+ counts = services.group_by do |service|
+ # TODO: Simplify as part of https://gitlab.com/gitlab-org/gitlab/issues/29404
+ service_url = service.data_fields&.url || (service.properties && service.properties['url'])
+ service_url&.include?('.atlassian.net') ? :cloud : :server
+ end
+
+ data[:projects_jira_server_active] += counts[:server].size if counts[:server]
+ data[:projects_jira_cloud_active] += counts[:cloud].size if counts[:cloud]
+ end
+
+ data
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+ # rubocop: enable UsageData/LargeTable:
+
+ def minimum_id(model, column = nil)
+ key = :"#{model.name.downcase.gsub('::', '_')}_minimum_id"
+ column_to_read = column || :id
+
strong_memoize(key) do
- model.minimum(:id)
+ model.minimum(column_to_read)
end
end
+ def epics_deepest_relationship_level
+ # rubocop: disable UsageData/LargeTable
+ { epics_deepest_relationship_level: ::Epic.deepest_relationship_level.to_i }
+ # rubocop: enable UsageData/LargeTable
+ end
+
private
def prometheus_client(verify:)
@@ -237,7 +271,7 @@ module Gitlab
api_url = "#{scheme}://#{server_address}"
client = Gitlab::PrometheusClient.new(api_url, allow_local_requests: true, verify: verify)
break client if client.ready?
- rescue
+ rescue StandardError
nil
end
end