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:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-05-17 19:05:49 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-05-17 19:05:49 +0300
commit43a25d93ebdabea52f99b05e15b06250cd8f07d7 (patch)
treedceebdc68925362117480a5d672bcff122fb625b /lib/gitlab/usage
parent20c84b99005abd1c82101dfeff264ac50d2df211 (diff)
Add latest changes from gitlab-org/gitlab@16-0-stable-eev16.0.0-rc42
Diffstat (limited to 'lib/gitlab/usage')
-rw-r--r--lib/gitlab/usage/metrics/aggregates/aggregate.rb7
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric.rb5
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_online_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_metric.rb17
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_online_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ci_runners_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/database_mode.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/edition_metric.rb19
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/gitlab_dedicated_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric.rb2
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/index_inconsistencies_metric.rb46
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/installation_creation_date_approximation_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/installation_creation_date_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/installation_type_metric.rb19
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric.rb2
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/version_metric.rb15
-rw-r--r--lib/gitlab/usage/service_ping_report.rb10
20 files changed, 277 insertions, 15 deletions
diff --git a/lib/gitlab/usage/metrics/aggregates/aggregate.rb b/lib/gitlab/usage/metrics/aggregates/aggregate.rb
index b68e1ace658..a0a58534661 100644
--- a/lib/gitlab/usage/metrics/aggregates/aggregate.rb
+++ b/lib/gitlab/usage/metrics/aggregates/aggregate.rb
@@ -7,11 +7,6 @@ module Gitlab
class Aggregate
include Gitlab::Usage::TimeFrame
- # TODO: define this missing event https://gitlab.com/gitlab-org/gitlab/-/issues/385080
- EVENTS_NOT_DEFINED_YET = %w[
- i_code_review_merge_request_widget_license_compliance_warning
- ].freeze
-
def initialize(recorded_at)
@recorded_at = recorded_at
end
@@ -84,7 +79,7 @@ module Gitlab
return events if source != ::Gitlab::Usage::Metrics::Aggregates::REDIS_SOURCE
events.select do |event|
- ::Gitlab::UsageDataCounters::HLLRedisCounter.known_event?(event) || EVENTS_NOT_DEFINED_YET.include?(event)
+ ::Gitlab::UsageDataCounters::HLLRedisCounter.known_event?(event)
end
end
end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric.rb
index 642b67a3b02..ca122ccf6f3 100644
--- a/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric.rb
@@ -23,6 +23,7 @@ module Gitlab
scope = super
scope = scope.where(source_type: source_type) if source_type.present?
scope = scope.where(status: status) if status.present?
+ scope = scope.where(has_failures: failures) if failures.present?
scope
end
@@ -34,6 +35,10 @@ module Gitlab
options[:status]
end
+ def failures
+ options[:has_failures].to_s
+ end
+
def allowed_source_types
BulkImports::Entity.source_types.keys.map(&:to_s)
end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_metric.rb
new file mode 100644
index 00000000000..fbf4e0f904b
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class CountCiRunnersGroupTypeActiveMetric < DatabaseMetric
+ operation :count
+
+ relation { ::Ci::Runner.group_type.active }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_online_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_online_metric.rb
new file mode 100644
index 00000000000..acb6de53d14
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_online_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class CountCiRunnersGroupTypeActiveOnlineMetric < DatabaseMetric
+ operation :count
+
+ relation { ::Ci::Runner.group_type.active.online }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_metric.rb
new file mode 100644
index 00000000000..d9a785679d7
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_metric.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class CountCiRunnersInstanceTypeActiveMetric < DatabaseMetric
+ operation :count
+
+ relation do
+ ::Ci::Runner.instance_type.active
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_online_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_online_metric.rb
new file mode 100644
index 00000000000..05a9c47c016
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_online_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class CountCiRunnersInstanceTypeActiveOnlineMetric < DatabaseMetric
+ operation :count
+
+ relation { ::Ci::Runner.instance_type.active.online }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_metric.rb
new file mode 100644
index 00000000000..8be4955e28d
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class CountCiRunnersMetric < DatabaseMetric
+ operation :count
+
+ relation { ::Ci::Runner }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_metric.rb
new file mode 100644
index 00000000000..e713e85b270
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class CountCiRunnersProjectTypeActiveMetric < DatabaseMetric
+ operation :count
+
+ relation { ::Ci::Runner.project_type.active }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric.rb
new file mode 100644
index 00000000000..91e7c6063b8
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class CountCiRunnersProjectTypeActiveOnlineMetric < DatabaseMetric
+ operation :count
+
+ relation { ::Ci::Runner.project_type.active.online }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/database_mode.rb b/lib/gitlab/usage/metrics/instrumentations/database_mode.rb
new file mode 100644
index 00000000000..1b97ef4a1d2
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/database_mode.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class DatabaseMode < GenericMetric
+ value do
+ Gitlab::Database.database_mode
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/edition_metric.rb b/lib/gitlab/usage/metrics/instrumentations/edition_metric.rb
new file mode 100644
index 00000000000..83153242703
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/edition_metric.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class EditionMetric < GenericMetric
+ value do
+ if Gitlab.ee?
+ ::License.current&.edition || 'EE Free'
+ else
+ 'CE'
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/gitlab_dedicated_metric.rb b/lib/gitlab/usage/metrics/instrumentations/gitlab_dedicated_metric.rb
new file mode 100644
index 00000000000..b7ca5fadd5b
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/gitlab_dedicated_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class GitlabDedicatedMetric < GenericMetric
+ value do
+ Gitlab::CurrentSettings.gitlab_dedicated_instance
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric.rb b/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric.rb
index ab9c6f87023..be3b3b3d682 100644
--- a/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric.rb
@@ -6,7 +6,7 @@ module Gitlab
module Instrumentations
class IncomingEmailEncryptedSecretsEnabledMetric < GenericMetric
value do
- Gitlab::IncomingEmail.encrypted_secrets.active?
+ Gitlab::Email::IncomingEmail.encrypted_secrets.active?
end
end
end
diff --git a/lib/gitlab/usage/metrics/instrumentations/index_inconsistencies_metric.rb b/lib/gitlab/usage/metrics/instrumentations/index_inconsistencies_metric.rb
new file mode 100644
index 00000000000..409027925d1
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/index_inconsistencies_metric.rb
@@ -0,0 +1,46 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class IndexInconsistenciesMetric < GenericMetric
+ value do
+ runner = Gitlab::Database::SchemaValidation::Runner.new(structure_sql, database, validators: validators)
+
+ inconsistencies = runner.execute
+
+ inconsistencies.map do |inconsistency|
+ {
+ object_name: inconsistency.object_name,
+ inconsistency_type: inconsistency.type
+ }
+ end
+ end
+
+ class << self
+ private
+
+ def database
+ database_model = Gitlab::Database.database_base_models[Gitlab::Database::MAIN_DATABASE_NAME]
+ Gitlab::Database::SchemaValidation::Database.new(database_model.connection)
+ end
+
+ def structure_sql
+ stucture_sql_path = Rails.root.join('db/structure.sql')
+ Gitlab::Database::SchemaValidation::StructureSql.new(stucture_sql_path)
+ end
+
+ def validators
+ [
+ Gitlab::Database::SchemaValidation::Validators::MissingIndexes,
+ Gitlab::Database::SchemaValidation::Validators::DifferentDefinitionIndexes,
+ Gitlab::Database::SchemaValidation::Validators::ExtraIndexes
+ ]
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/installation_creation_date_approximation_metric.rb b/lib/gitlab/usage/metrics/instrumentations/installation_creation_date_approximation_metric.rb
new file mode 100644
index 00000000000..e8ae4b4f906
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/installation_creation_date_approximation_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class InstallationCreationDateApproximationMetric < GenericMetric
+ value do
+ [User.first, ApplicationSetting.first].compact.pluck(:created_at).compact.min
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/installation_creation_date_metric.rb b/lib/gitlab/usage/metrics/instrumentations/installation_creation_date_metric.rb
new file mode 100644
index 00000000000..c2ca62f9eba
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/installation_creation_date_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class InstallationCreationDateMetric < GenericMetric
+ value do
+ User.where(id: 1).pick(:created_at)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/installation_type_metric.rb b/lib/gitlab/usage/metrics/instrumentations/installation_type_metric.rb
new file mode 100644
index 00000000000..7147fc2e624
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/installation_type_metric.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class InstallationTypeMetric < GenericMetric
+ value do
+ if Rails.env.production?
+ Gitlab::INSTALLATION_TYPE
+ else
+ "gitlab-development-kit"
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric.rb b/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric.rb
index 4332043de8a..5e38339801b 100644
--- a/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric.rb
@@ -6,7 +6,7 @@ module Gitlab
module Instrumentations
class ServiceDeskEmailEncryptedSecretsEnabledMetric < GenericMetric
value do
- Gitlab::ServiceDeskEmail.encrypted_secrets.active?
+ Gitlab::Email::ServiceDeskEmail.encrypted_secrets.active?
end
end
end
diff --git a/lib/gitlab/usage/metrics/instrumentations/version_metric.rb b/lib/gitlab/usage/metrics/instrumentations/version_metric.rb
new file mode 100644
index 00000000000..cc26268067f
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/version_metric.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class VersionMetric < GenericMetric
+ value do
+ Gitlab::VERSION
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/service_ping_report.rb b/lib/gitlab/usage/service_ping_report.rb
index 1eda72ba570..3bc941260d6 100644
--- a/lib/gitlab/usage/service_ping_report.rb
+++ b/lib/gitlab/usage/service_ping_report.rb
@@ -9,7 +9,9 @@ module Gitlab
def for(output:, cached: false)
case output.to_sym
when :all_metrics_values
- with_instrumentation_classes(all_metrics_values(cached), :with_value)
+ Rails.cache.fetch(CACHE_KEY, force: !cached, expires_in: 2.weeks) do
+ with_instrumentation_classes(Gitlab::UsageData.data, :with_value)
+ end
when :metrics_queries
with_instrumentation_classes(metrics_queries, :with_instrumentation)
when :non_sql_metrics_values
@@ -27,12 +29,6 @@ module Gitlab
old_payload.with_indifferent_access.deep_merge(instrumented_payload)
end
- def all_metrics_values(cached)
- Rails.cache.fetch(CACHE_KEY, force: !cached, expires_in: 2.weeks) do
- Gitlab::UsageData.data
- end
- end
-
def metrics_queries
Gitlab::UsageDataQueries.data
end