diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-09-19 18:14:42 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-09-19 18:14:42 +0300 |
commit | 0c9606b712220cea41dbaffaa1f19a942398b2aa (patch) | |
tree | ea69987533df6b81eaa4a166f7f96fb69b100ece /lib | |
parent | 6b95202d1c2157c2e7f5135b2cff298470fc77b1 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r-- | lib/api/helpers.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/pages.rb | 15 | ||||
-rw-r--r-- | lib/gitlab/prometheus/queries/matched_metric_query.rb | 82 | ||||
-rw-r--r-- | lib/gitlab/prometheus/queries/validate_query.rb | 21 | ||||
-rw-r--r-- | lib/gitlab/usage/metric_definition.rb | 3 |
5 files changed, 18 insertions, 107 deletions
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 4dcca4bdbf9..e967b88e500 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -709,8 +709,8 @@ module API namespace_id: namespace_id, project_id: project_id ) - rescue StandardError => error - Gitlab::AppLogger.warn("Internal Event tracking event failed for event: #{event_name}, message: #{error.message}") + rescue StandardError => e + Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e, event_name: event_name) end def order_by_similarity?(allow_unauthorized: true) diff --git a/lib/gitlab/pages.rb b/lib/gitlab/pages.rb index 367fe7639da..700a39c6b41 100644 --- a/lib/gitlab/pages.rb +++ b/lib/gitlab/pages.rb @@ -24,6 +24,21 @@ module Gitlab ::Gitlab::CurrentSettings.current_application_settings.force_pages_access_control end + def enabled? + Gitlab.config.pages.enabled + end + + def add_unique_domain_to(project) + return unless enabled? + # If the project used a unique domain once, it'll always use the same + return if project.project_setting.pages_unique_domain_in_database.present? + + project.project_setting.pages_unique_domain_enabled = true + project.project_setting.pages_unique_domain = Gitlab::Pages::RandomDomain.generate( + project_path: project.path, + namespace_path: project.parent.full_path) + end + def multiple_versions_enabled_for?(project) return false if project.blank? diff --git a/lib/gitlab/prometheus/queries/matched_metric_query.rb b/lib/gitlab/prometheus/queries/matched_metric_query.rb deleted file mode 100644 index 73de5a11998..00000000000 --- a/lib/gitlab/prometheus/queries/matched_metric_query.rb +++ /dev/null @@ -1,82 +0,0 @@ -# frozen_string_literal: true - -module Gitlab - module Prometheus - module Queries - class MatchedMetricQuery < BaseQuery - MAX_QUERY_ITEMS = 40 - - def query - groups_data.map do |group, data| - { - group: group.name, - priority: group.priority, - active_metrics: data[:active_metrics], - metrics_missing_requirements: data[:metrics_missing_requirements] - } - end - end - - private - - def groups_data - metrics_groups = groups_with_active_metrics(Gitlab::Prometheus::MetricGroup.common_metrics) - lookup = active_series_lookup(metrics_groups) - - groups = {} - - metrics_groups.each do |group| - groups[group] ||= { active_metrics: 0, metrics_missing_requirements: 0 } - active_metrics = group.metrics.count { |metric| metric.required_metrics.all?(&lookup.method(:has_key?)) } - - groups[group][:active_metrics] += active_metrics - groups[group][:metrics_missing_requirements] += group.metrics.count - active_metrics - end - - groups - end - - def active_series_lookup(metric_groups) - timeframe_start = 8.hours.ago - timeframe_end = Time.now - - series = metric_groups.flat_map(&:metrics).flat_map(&:required_metrics).uniq - - lookup = series.each_slice(MAX_QUERY_ITEMS).flat_map do |batched_series| - client_series(*batched_series, start_time: timeframe_start, end_time: timeframe_end) - .select(&method(:has_matching_label?)) - .map { |series_info| [series_info['__name__'], true] } - end - lookup.to_h - end - - def has_matching_label?(series_info) - series_info.key?('environment') - end - - def available_metrics - @available_metrics ||= client_label_values || [] - end - - def filter_active_metrics(metric_group) - metric_group.metrics.select! do |metric| - metric.required_metrics.all?(&available_metrics.method(:include?)) - end - metric_group - end - - def groups_with_active_metrics(metric_groups) - metric_groups.map(&method(:filter_active_metrics)).select { |group| group.metrics.any? } - end - - def metrics_with_required_series(metric_groups) - metric_groups.flat_map do |group| - group.metrics.select do |metric| - metric.required_metrics.all?(&available_metrics.method(:include?)) - end - end - end - end - end - end -end diff --git a/lib/gitlab/prometheus/queries/validate_query.rb b/lib/gitlab/prometheus/queries/validate_query.rb deleted file mode 100644 index 160db7d44bc..00000000000 --- a/lib/gitlab/prometheus/queries/validate_query.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -module Gitlab - module Prometheus - module Queries - class ValidateQuery < BaseQuery - def query(query) - client_query(query) - { valid: true } - rescue Gitlab::PrometheusClient::QueryError, Gitlab::PrometheusClient::ConnectionError => ex - { valid: false, error: ex.message } - end - - def self.transform_reactive_result(result) - result[:query] = result.delete :data - result - end - end - end - end -end diff --git a/lib/gitlab/usage/metric_definition.rb b/lib/gitlab/usage/metric_definition.rb index 5a321eb7a1a..450575b7223 100644 --- a/lib/gitlab/usage/metric_definition.rb +++ b/lib/gitlab/usage/metric_definition.rb @@ -4,7 +4,6 @@ module Gitlab module Usage class MetricDefinition METRIC_SCHEMA_PATH = Rails.root.join('config', 'metrics', 'schema.json') - SKIP_VALIDATION_STATUS = 'removed' AVAILABLE_STATUSES = %w[active broken].to_set.freeze VALID_SERVICE_PING_STATUSES = %w[active broken].to_set.freeze @@ -177,7 +176,7 @@ module Gitlab end def skip_validation? - !!attributes[:skip_validation] || @skip_validation || attributes[:status] == SKIP_VALIDATION_STATUS + !!attributes[:skip_validation] || @skip_validation end def events_from_new_structure |