summaryrefslogtreecommitdiff
path: root/config/initializers
diff options
context:
space:
mode:
Diffstat (limited to 'config/initializers')
-rw-r--r--config/initializers/0_marginalia.rb18
-rw-r--r--config/initializers/1_settings.rb12
-rw-r--r--config/initializers/7_prometheus_metrics.rb11
-rw-r--r--config/initializers/devise_dynamic_password_length_validation.rb39
-rw-r--r--config/initializers/direct_upload_support.rb28
-rw-r--r--config/initializers/elastic_client_setup.rb22
-rw-r--r--config/initializers/forbid_sidekiq_in_transactions.rb2
-rw-r--r--config/initializers/hamlit.rb16
-rw-r--r--config/initializers/rack_attack_git_basic_auth.rb14
-rw-r--r--config/initializers/rack_attack_new.rb27
-rw-r--r--config/initializers/sentry.rb33
-rw-r--r--config/initializers/sidekiq.rb28
-rw-r--r--config/initializers/snowplow_tracker.rb23
-rw-r--r--config/initializers/zz_metrics.rb6
14 files changed, 166 insertions, 113 deletions
diff --git a/config/initializers/0_marginalia.rb b/config/initializers/0_marginalia.rb
new file mode 100644
index 00000000000..f88a90854e3
--- /dev/null
+++ b/config/initializers/0_marginalia.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'marginalia'
+
+::Marginalia::Comment.extend(::Gitlab::Marginalia::Comment)
+
+# Patch to modify 'Marginalia::ActiveRecordInstrumentation.annotate_sql' method with feature check.
+# Orignal Marginalia::ActiveRecordInstrumentation is included to ActiveRecord::ConnectionAdapters::PostgreSQLAdapter in the Marginalia Railtie.
+# Refer: https://github.com/basecamp/marginalia/blob/v1.8.0/lib/marginalia/railtie.rb#L67
+ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(Gitlab::Marginalia::ActiveRecordInstrumentation)
+
+Marginalia::Comment.components = [:application, :controller, :action, :correlation_id, :jid, :job_class, :line]
+
+Gitlab::Marginalia.set_application_name
+
+Gitlab::Marginalia.enable_sidekiq_instrumentation
+
+Gitlab::Marginalia.set_feature_cache
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index df4f49524bc..691e4339bf0 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -291,7 +291,7 @@ Settings.pages['url'] ||= Settings.__send__(:build_pages_url)
Settings.pages['external_http'] ||= false unless Settings.pages['external_http'].present?
Settings.pages['external_https'] ||= false unless Settings.pages['external_https'].present?
Settings.pages['artifacts_server'] ||= Settings.pages['enabled'] if Settings.pages['artifacts_server'].nil?
-Settings.pages['secret_file'] ||= Rails.root.join('.gitlab_pages_shared_secret')
+Settings.pages['secret_file'] ||= Rails.root.join('.gitlab_pages_secret')
#
# Geo
@@ -407,6 +407,9 @@ Settings.cron_jobs['repository_check_worker']['job_class'] = 'RepositoryCheck::D
Settings.cron_jobs['admin_email_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['admin_email_worker']['cron'] ||= '0 0 * * 0'
Settings.cron_jobs['admin_email_worker']['job_class'] = 'AdminEmailWorker'
+Settings.cron_jobs['personal_access_tokens_expiring_worker'] ||= Settingslogic.new({})
+Settings.cron_jobs['personal_access_tokens_expiring_worker']['cron'] ||= '0 1 * * *'
+Settings.cron_jobs['personal_access_tokens_expiring_worker']['job_class'] = 'PersonalAccessTokens::ExpiringWorker'
Settings.cron_jobs['repository_archive_cache_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['repository_archive_cache_worker']['cron'] ||= '0 * * * *'
Settings.cron_jobs['repository_archive_cache_worker']['job_class'] = 'RepositoryArchiveCacheWorker'
@@ -466,9 +469,15 @@ Settings.cron_jobs['namespaces_prune_aggregation_schedules_worker']['cron'] ||=
Settings.cron_jobs['namespaces_prune_aggregation_schedules_worker']['job_class'] = 'Namespaces::PruneAggregationSchedulesWorker'
Gitlab.ee do
+ Settings.cron_jobs['adjourned_group_deletion_worker'] ||= Settingslogic.new({})
+ Settings.cron_jobs['adjourned_group_deletion_worker']['cron'] ||= '0 3 * * *'
+ Settings.cron_jobs['adjourned_group_deletion_worker']['job_class'] = 'AdjournedGroupDeletionWorker'
Settings.cron_jobs['clear_shared_runners_minutes_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['clear_shared_runners_minutes_worker']['cron'] ||= '0 0 1 * *'
Settings.cron_jobs['clear_shared_runners_minutes_worker']['job_class'] = 'ClearSharedRunnersMinutesWorker'
+ Settings.cron_jobs['adjourned_projects_deletion_cron_worker'] ||= Settingslogic.new({})
+ Settings.cron_jobs['adjourned_projects_deletion_cron_worker']['cron'] ||= '0 4 * * *'
+ Settings.cron_jobs['adjourned_projects_deletion_cron_worker']['job_class'] = 'AdjournedProjectsDeletionCronWorker'
Settings.cron_jobs['geo_file_download_dispatch_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['geo_file_download_dispatch_worker']['cron'] ||= '*/1 * * * *'
Settings.cron_jobs['geo_file_download_dispatch_worker']['job_class'] ||= 'Geo::FileDownloadDispatchWorker'
@@ -645,6 +654,7 @@ Settings.rack_attack.git_basic_auth['ip_whitelist'] ||= %w{127.0.0.1}
Settings.rack_attack.git_basic_auth['maxretry'] ||= 10
Settings.rack_attack.git_basic_auth['findtime'] ||= 1.minute
Settings.rack_attack.git_basic_auth['bantime'] ||= 1.hour
+Settings.rack_attack['admin_area_protected_paths_enabled'] ||= false
#
# Gitaly
diff --git a/config/initializers/7_prometheus_metrics.rb b/config/initializers/7_prometheus_metrics.rb
index d40049970c1..c14ee1458bc 100644
--- a/config/initializers/7_prometheus_metrics.rb
+++ b/config/initializers/7_prometheus_metrics.rb
@@ -32,15 +32,8 @@ end
Sidekiq.configure_server do |config|
config.on(:startup) do
- # webserver metrics are cleaned up in config.ru: `warmup` block
- Prometheus::CleanupMultiprocDirService.new.execute
- # In production, sidekiq is run in a multi-process setup where processes might interfere
- # with each other cleaning up and reinitializing prometheus database files, which is why
- # we're re-doing the work every time here.
- # A cleaner solution would be to run the cleanup pre-fork, and the initialization once
- # after all workers have forked, but I don't know how at this point.
- ::Prometheus::Client.reinitialize_on_pid_change(force: true)
-
+ # Do not clean the metrics directory here - the supervisor script should
+ # have already taken care of that
Gitlab::Metrics::Exporter::SidekiqExporter.instance.start
end
end
diff --git a/config/initializers/devise_dynamic_password_length_validation.rb b/config/initializers/devise_dynamic_password_length_validation.rb
new file mode 100644
index 00000000000..03d613da929
--- /dev/null
+++ b/config/initializers/devise_dynamic_password_length_validation.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+# Discard the default Devise length validation from the `User` model.
+
+# This needs to be discarded because the length validation provided by Devise does not
+# support dynamically checking for min and max lengths.
+
+# A new length validation has been added to the User model instead, to keep supporting
+# dynamic password length validations, like:
+
+# validates :password, length: { maximum: proc { password_length.max }, minimum: proc { password_length.min } }, allow_blank: true
+
+def length_validator_supports_dynamic_length_checks?(validator)
+ validator.options[:minimum].is_a?(Proc) &&
+ validator.options[:maximum].is_a?(Proc)
+end
+
+# Get the in-built Devise validator on password length.
+password_length_validator = User.validators_on(:password).find do |validator|
+ validator.kind == :length
+end
+
+# This initializer can be removed as soon as https://github.com/plataformatec/devise/pull/5166
+# is merged into Devise.
+
+# TODO: Update Devise. Issue: https://gitlab.com/gitlab-org/gitlab/issues/118450
+if length_validator_supports_dynamic_length_checks?(password_length_validator)
+ raise "Devise now supports dynamic length checks, please remove the monkey patch in #{__FILE__}"
+else
+ # discard the in-built length validator by always returning true
+ def password_length_validator.validate(*_)
+ true
+ end
+
+ # add a custom password length validator with support for dynamic length validation.
+ User.class_eval do
+ validates :password, length: { maximum: proc { password_length.max }, minimum: proc { password_length.min } }, allow_blank: true
+ end
+end
diff --git a/config/initializers/direct_upload_support.rb b/config/initializers/direct_upload_support.rb
index 32fc8c8bc69..0fc6e82207e 100644
--- a/config/initializers/direct_upload_support.rb
+++ b/config/initializers/direct_upload_support.rb
@@ -3,17 +3,35 @@ class DirectUploadsValidator
ValidationError = Class.new(StandardError)
- def verify!(object_store)
+ def verify!(uploader_type, object_store)
return unless object_store.enabled
return unless object_store.direct_upload
- return if SUPPORTED_DIRECT_UPLOAD_PROVIDERS.include?(object_store.connection&.provider.to_s)
- raise ValidationError, "Only #{SUPPORTED_DIRECT_UPLOAD_PROVIDERS.join(',')} are supported as a object storage provider when 'direct_upload' is used"
+ raise ValidationError, "Object storage is configured for '#{uploader_type}', but the 'connection' section is missing" unless object_store.key?('connection')
+
+ provider = object_store.connection&.provider.to_s
+
+ raise ValidationError, "No provider configured for '#{uploader_type}'. #{supported_provider_text}" if provider.blank?
+
+ return if SUPPORTED_DIRECT_UPLOAD_PROVIDERS.include?(provider)
+
+ raise ValidationError, "Object storage provider '#{provider}' is not supported " \
+ "when 'direct_upload' is used for '#{uploader_type}'. #{supported_provider_text}"
+ end
+
+ def supported_provider_text
+ "Only #{SUPPORTED_DIRECT_UPLOAD_PROVIDERS.join(', ')} are supported."
end
end
DirectUploadsValidator.new.tap do |validator|
- [Gitlab.config.artifacts, Gitlab.config.uploads, Gitlab.config.lfs].each do |uploader|
- validator.verify!(uploader.object_store)
+ CONFIGS = {
+ artifacts: Gitlab.config.artifacts,
+ uploads: Gitlab.config.uploads,
+ lfs: Gitlab.config.lfs
+ }.freeze
+
+ CONFIGS.each do |uploader_type, uploader|
+ validator.verify!(uploader_type, uploader.object_store)
end
end
diff --git a/config/initializers/elastic_client_setup.rb b/config/initializers/elastic_client_setup.rb
index a1abb29838b..f38b606b3a8 100644
--- a/config/initializers/elastic_client_setup.rb
+++ b/config/initializers/elastic_client_setup.rb
@@ -7,6 +7,17 @@ require 'gitlab/current_settings'
Gitlab.ee do
require 'elasticsearch/model'
+ ### Monkey patches
+
+ Elasticsearch::Model::Response::Records.prepend GemExtensions::Elasticsearch::Model::Response::Records
+ Elasticsearch::Model::Adapter::Multiple::Records.prepend GemExtensions::Elasticsearch::Model::Adapter::Multiple::Records
+ Elasticsearch::Model::Indexing::InstanceMethods.prepend GemExtensions::Elasticsearch::Model::Indexing::InstanceMethods
+ Elasticsearch::Model::Adapter::ActiveRecord::Importing.prepend GemExtensions::Elasticsearch::Model::Adapter::ActiveRecord::Importing
+ Elasticsearch::Model::Client::InstanceMethods.prepend GemExtensions::Elasticsearch::Model::Client
+ Elasticsearch::Model::Client::ClassMethods.prepend GemExtensions::Elasticsearch::Model::Client
+ Elasticsearch::Model::ClassMethods.prepend GemExtensions::Elasticsearch::Model::Client
+ Elasticsearch::Model.singleton_class.prepend GemExtensions::Elasticsearch::Model::Client
+
### Modified from elasticsearch-model/lib/elasticsearch/model.rb
[
@@ -32,15 +43,4 @@ Gitlab.ee do
target.respond_to?(:as_indexed_json) ? target.__send__(:as_indexed_json, options) : super
end
CODE
-
- ### Monkey patches
-
- Elasticsearch::Model::Response::Records.prepend GemExtensions::Elasticsearch::Model::Response::Records
- Elasticsearch::Model::Adapter::Multiple::Records.prepend GemExtensions::Elasticsearch::Model::Adapter::Multiple::Records
- Elasticsearch::Model::Indexing::InstanceMethods.prepend GemExtensions::Elasticsearch::Model::Indexing::InstanceMethods
- Elasticsearch::Model::Adapter::ActiveRecord::Importing.prepend GemExtensions::Elasticsearch::Model::Adapter::ActiveRecord::Importing
- Elasticsearch::Model::Client::InstanceMethods.prepend GemExtensions::Elasticsearch::Model::Client
- Elasticsearch::Model::Client::ClassMethods.prepend GemExtensions::Elasticsearch::Model::Client
- Elasticsearch::Model::ClassMethods.prepend GemExtensions::Elasticsearch::Model::Client
- Elasticsearch::Model.singleton_class.prepend GemExtensions::Elasticsearch::Model::Client
end
diff --git a/config/initializers/forbid_sidekiq_in_transactions.rb b/config/initializers/forbid_sidekiq_in_transactions.rb
index bb190af60b5..9bade443aae 100644
--- a/config/initializers/forbid_sidekiq_in_transactions.rb
+++ b/config/initializers/forbid_sidekiq_in_transactions.rb
@@ -29,7 +29,7 @@ module Sidekiq
MSG
rescue Sidekiq::Worker::EnqueueFromTransactionError => e
::Rails.logger.error(e.message) if ::Rails.env.production?
- Gitlab::Sentry.track_exception(e)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e)
end
end
diff --git a/config/initializers/hamlit.rb b/config/initializers/hamlit.rb
index 51dbffeda05..b5bcae4bbfc 100644
--- a/config/initializers/hamlit.rb
+++ b/config/initializers/hamlit.rb
@@ -1,18 +1,4 @@
-module Hamlit
- class TemplateHandler
- def call(template)
- Engine.new(
- generator: Temple::Generators::RailsOutputBuffer,
- attr_quote: '"'
- ).call(template.source)
- end
- end
-end
-
-ActionView::Template.register_template_handler(
- :haml,
- Hamlit::TemplateHandler.new
-)
+Hamlit::RailsTemplate.set_options(attr_quote: '"')
Hamlit::Filters.remove_filter('coffee')
Hamlit::Filters.remove_filter('coffeescript')
diff --git a/config/initializers/rack_attack_git_basic_auth.rb b/config/initializers/rack_attack_git_basic_auth.rb
deleted file mode 100644
index 71e5e2969ce..00000000000
--- a/config/initializers/rack_attack_git_basic_auth.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# Tell the Rack::Attack Rack middleware to maintain an IP blacklist.
-# We update the blacklist in Gitlab::Auth::IpRateLimiter.
-Rack::Attack.blocklist('Git HTTP Basic Auth') do |req|
- rate_limiter = Gitlab::Auth::IpRateLimiter.new(req.ip)
-
- next false if !rate_limiter.enabled? || rate_limiter.trusted_ip?
-
- Rack::Attack::Allow2Ban.filter(req.ip, Gitlab.config.rack_attack.git_basic_auth) do
- # This block only gets run if the IP was not already banned.
- # Return false, meaning that we do not see anything wrong with the
- # request at this time
- false
- end
-end
diff --git a/config/initializers/rack_attack_new.rb b/config/initializers/rack_attack_new.rb
index 92a8bf79432..267d4c1eda9 100644
--- a/config/initializers/rack_attack_new.rb
+++ b/config/initializers/rack_attack_new.rb
@@ -1,11 +1,22 @@
+# Specs for this file can be found on:
+# * spec/lib/gitlab/throttle_spec.rb
+# * spec/requests/rack_attack_global_spec.rb
module Gitlab::Throttle
def self.settings
Gitlab::CurrentSettings.current_application_settings
end
+ # Returns true if we should use the Admin Area protected paths throttle
def self.protected_paths_enabled?
- !self.omnibus_protected_paths_present? &&
- self.settings.throttle_protected_paths_enabled?
+ return false if should_use_omnibus_protected_paths?
+
+ self.settings.throttle_protected_paths_enabled?
+ end
+
+ # To be removed in 13.0: https://gitlab.com/gitlab-org/gitlab/issues/29952
+ def self.should_use_omnibus_protected_paths?
+ !Settings.rack_attack.admin_area_protected_paths_enabled &&
+ self.omnibus_protected_paths_present?
end
def self.omnibus_protected_paths_present?
@@ -102,11 +113,15 @@ class Rack::Attack
class Request
def unauthenticated?
- !authenticated_user_id([:api, :rss, :ics])
+ !(authenticated_user_id([:api, :rss, :ics]) || authenticated_runner_id)
end
def authenticated_user_id(request_formats)
- Gitlab::Auth::RequestAuthenticator.new(self).user(request_formats)&.id
+ request_authenticator.user(request_formats)&.id
+ end
+
+ def authenticated_runner_id
+ request_authenticator.runner&.id
end
def api_request?
@@ -139,6 +154,10 @@ class Rack::Attack
private
+ def request_authenticator
+ @request_authenticator ||= Gitlab::Auth::RequestAuthenticator.new(self)
+ end
+
def protected_paths
Gitlab::CurrentSettings.current_application_settings.protected_paths
end
diff --git a/config/initializers/sentry.rb b/config/initializers/sentry.rb
index 48daca3d254..a1eddd6a2c2 100644
--- a/config/initializers/sentry.rb
+++ b/config/initializers/sentry.rb
@@ -2,35 +2,4 @@
require 'gitlab/current_settings'
-def configure_sentry
- if Gitlab::Sentry.enabled?
- Raven.configure do |config|
- config.dsn = Gitlab.config.sentry.dsn
- config.release = Gitlab.revision
- config.current_environment = Gitlab.config.sentry.environment
-
- # Sanitize fields based on those sanitized from Rails.
- config.sanitize_fields = Rails.application.config.filter_parameters.map(&:to_s)
- # Sanitize authentication headers
- config.sanitize_http_headers = %w[Authorization Private-Token]
- config.tags = { program: Gitlab.process_name }
- # Debugging for https://gitlab.com/gitlab-org/gitlab-foss/issues/57727
- config.before_send = lambda do |event, hint|
- if ActiveModel::MissingAttributeError === hint[:exception]
- columns_hash = ActiveRecord::Base
- .connection
- .schema_cache
- .instance_variable_get(:@columns_hash)
- .map { |k, v| [k, v.map(&:first)] }
- .to_h
-
- event.extra.merge!(columns_hash)
- end
-
- event
- end
- end
- end
-end
-
-configure_sentry if Rails.env.production? || Rails.env.development?
+Gitlab::ErrorTracking.configure
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index b5d98399015..b4a1e0da41a 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -31,21 +31,17 @@ enable_json_logs = Gitlab.config.sidekiq.log_format == 'json'
enable_sidekiq_memory_killer = ENV['SIDEKIQ_MEMORY_KILLER_MAX_RSS'].to_i.nonzero?
use_sidekiq_daemon_memory_killer = ENV["SIDEKIQ_DAEMON_MEMORY_KILLER"].to_i.nonzero?
use_sidekiq_legacy_memory_killer = !use_sidekiq_daemon_memory_killer
+use_request_store = ENV.fetch('SIDEKIQ_REQUEST_STORE', 1).to_i.nonzero?
Sidekiq.configure_server do |config|
config.redis = queues_config_hash
- config.server_middleware do |chain|
- chain.add Gitlab::SidekiqMiddleware::Monitor
- chain.add Gitlab::SidekiqMiddleware::Metrics if Settings.monitoring.sidekiq_exporter
- chain.add Gitlab::SidekiqMiddleware::ArgumentsLogger if ENV['SIDEKIQ_LOG_ARGUMENTS'] && !enable_json_logs
- chain.add Gitlab::SidekiqMiddleware::MemoryKiller if enable_sidekiq_memory_killer && use_sidekiq_legacy_memory_killer
- chain.add Gitlab::SidekiqMiddleware::RequestStoreMiddleware unless ENV['SIDEKIQ_REQUEST_STORE'] == '0'
- chain.add Gitlab::SidekiqMiddleware::BatchLoader
- chain.add Gitlab::SidekiqMiddleware::CorrelationLogger
- chain.add Gitlab::SidekiqMiddleware::InstrumentationLogger
- chain.add Gitlab::SidekiqStatus::ServerMiddleware
- end
+ config.server_middleware(&Gitlab::SidekiqMiddleware.server_configurator({
+ metrics: Settings.monitoring.sidekiq_exporter,
+ arguments_logger: ENV['SIDEKIQ_LOG_ARGUMENTS'] && !enable_json_logs,
+ memory_killer: enable_sidekiq_memory_killer && use_sidekiq_legacy_memory_killer,
+ request_store: use_request_store
+ }))
if enable_json_logs
Sidekiq.logger.formatter = Gitlab::SidekiqLogging::JSONFormatter.new
@@ -56,10 +52,7 @@ Sidekiq.configure_server do |config|
config.error_handlers << Gitlab::SidekiqLogging::ExceptionHandler.new
end
- config.client_middleware do |chain|
- chain.add Gitlab::SidekiqStatus::ClientMiddleware
- chain.add Gitlab::SidekiqMiddleware::CorrelationInjector
- end
+ config.client_middleware(&Gitlab::SidekiqMiddleware.client_configurator)
config.on :startup do
# Clear any connections that might have been obtained before starting
@@ -125,8 +118,5 @@ end
Sidekiq.configure_client do |config|
config.redis = queues_config_hash
- config.client_middleware do |chain|
- chain.add Gitlab::SidekiqMiddleware::CorrelationInjector
- chain.add Gitlab::SidekiqStatus::ClientMiddleware
- end
+ config.client_middleware(&Gitlab::SidekiqMiddleware.client_configurator)
end
diff --git a/config/initializers/snowplow_tracker.rb b/config/initializers/snowplow_tracker.rb
new file mode 100644
index 00000000000..3c730e03738
--- /dev/null
+++ b/config/initializers/snowplow_tracker.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+# Gitlab.com uses Snowplow for identifying users and events.
+# https://gitlab.com/gitlab-org/gitlab/issues/6329
+#
+# SnowplowTracker write log into STDERR
+# https://github.com/snowplow/snowplow-ruby-tracker/blob/39fcfa2be793f2e25e73087a9700abc93f43b5e8/lib/snowplow-tracker/emitters.rb#L23
+# `LOGGER = Logger.new(STDERR)`
+#
+# In puma.rb, if `stdout_redirect` specify stderr, Puma will overwrite STDERR in:
+# https://github.com/puma/puma/blob/b41205f5cacbc2ad0060472bdce68ba636f42175/lib/puma/runner.rb#L134
+# `STDERR.reopen stderr, (append ? "a" : "w")`
+# As a result, SnowplowTracker will log into Puma stderr, when Puma enabled.
+#
+# By default, SnowplowTracker uses default log formatter.
+# When enable Puma, SnowplowTracker log is expected to be JSON format, as part of puma_stderr.log.
+# Hence overwrite ::SnowplowTracker::LOGGER.formatter to JSON formatter
+
+if defined?(::Puma) && defined?(::SnowplowTracker::LOGGER)
+ ::SnowplowTracker::LOGGER.formatter = proc do |severity, datetime, progname, msg|
+ { severity: severity, timestamp: datetime.utc.iso8601(3), pid: $$, progname: progname, message: msg }.to_json << "\n"
+ end
+end
diff --git a/config/initializers/zz_metrics.rb b/config/initializers/zz_metrics.rb
index bc28780cc77..5bbfb97277c 100644
--- a/config/initializers/zz_metrics.rb
+++ b/config/initializers/zz_metrics.rb
@@ -8,6 +8,8 @@
#
# rubocop:disable Metrics/AbcSize
def instrument_classes(instrumentation)
+ return if ENV['STATIC_VERIFICATION']
+
instrumentation.instrument_instance_methods(Gitlab::Shell)
instrumentation.instrument_methods(Gitlab::Git)
@@ -88,8 +90,8 @@ def instrument_classes(instrumentation)
instrumentation.instrument_instance_methods(Gitlab::Highlight)
Gitlab.ee do
- instrumentation.instrument_methods(Elasticsearch::Git::Repository)
- instrumentation.instrument_instance_methods(Elasticsearch::Git::Repository)
+ instrumentation.instrument_instance_methods(Elastic::Latest::GitInstanceProxy)
+ instrumentation.instrument_instance_methods(Elastic::Latest::GitClassProxy)
instrumentation.instrument_instance_methods(Search::GlobalService)
instrumentation.instrument_instance_methods(Search::ProjectService)