Fix Service ping failing metrics for protect stage
Summary
The following metrics are failing in GitLab.com for devopsprotect
- counts.container_scanning_jobs
Resources
- See Service ping guide for how to optimize queries
- Use Metrics dictionary to find more information about metrics
Implementation plan
-
database optimize query to use different batch size when counting container_scanning_jobs
, we should use500_000
(currently ~4200 loops) or1_000_000
(currently ~2100 loops).
diff --git a/ee/lib/gitlab/usage/metrics/instrumentations/count_ci_builds_metric.rb b/ee/lib/gitlab/usage/metrics/instrumentations/count_ci_builds_metric.rb
index bb7a6ec0d87..adc7fc3f740 100644
--- a/ee/lib/gitlab/usage/metrics/instrumentations/count_ci_builds_metric.rb
+++ b/ee/lib/gitlab/usage/metrics/instrumentations/count_ci_builds_metric.rb
@@ -7,6 +7,11 @@ module Instrumentations
class CountCiBuildsMetric < DatabaseMetric
relation { ::Ci::Build }
operation :count
+ metric_options do
+ {
+ batch_size: 1_000_000
+ }
+ end
def initialize(time_frame:, options: {})
super
diff --git a/lib/gitlab/usage/metrics/instrumentations/database_metric.rb b/lib/gitlab/usage/metrics/instrumentations/database_metric.rb
index d7fc798ebe2..34a8bfd08b5 100644
--- a/lib/gitlab/usage/metrics/instrumentations/database_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/database_metric.rb
@@ -33,6 +33,12 @@ def relation(&block)
@metric_relation = block
end
+ def metric_options(&block)
+ return @metric_options&.call.to_h unless block_given?
+
+ @metric_options = block
+ end
+
def operation(symbol, column: nil, &block)
@metric_operation = symbol
@column = column
@@ -54,6 +60,7 @@ def value
self.class.column,
start: start,
finish: finish,
+ **self.class.metric_options,
&self.class.metric_operation_block)
end
Edited by Alan (Maciej) Paruszewski