From d9ab72d6080f594d0b3cae15f14b3ef2c6c638cb Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 20 Oct 2021 08:43:02 +0000 Subject: Add latest changes from gitlab-org/gitlab@14-4-stable-ee --- .../initializers/00_active_record_disable_joins.rb | 11 ++ config/initializers/0_acts_as_taggable.rb | 4 +- config/initializers/1_settings.rb | 7 +- config/initializers/7_prometheus_metrics.rb | 2 +- config/initializers/7_redis.rb | 8 ++ config/initializers/action_cable.rb | 2 +- config/initializers/backtrace_silencers.rb | 2 +- config/initializers/batch_loader.rb | 10 ++ config/initializers/carrierwave_patch.rb | 10 +- config/initializers/database_config.rb | 10 -- config/initializers/gettext_rails_i18n_patch.rb | 22 ---- config/initializers/grape_validators.rb | 1 + config/initializers/load_balancing.rb | 43 ++++--- config/initializers/mailer_retries.rb | 40 +------ config/initializers/postgres_partitioning.rb | 3 +- config/initializers/postgresql_cte.rb | 2 +- config/initializers/sidekiq.rb | 12 +- config/initializers/zz_metrics.rb | 130 +-------------------- 18 files changed, 80 insertions(+), 239 deletions(-) create mode 100644 config/initializers/00_active_record_disable_joins.rb (limited to 'config/initializers') diff --git a/config/initializers/00_active_record_disable_joins.rb b/config/initializers/00_active_record_disable_joins.rb new file mode 100644 index 00000000000..6348fd7c53b --- /dev/null +++ b/config/initializers/00_active_record_disable_joins.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module ActiveRecordRelationAllowCrossJoins + def allow_cross_joins_across_databases(url:) + # this method is implemented in: + # spec/support/database/prevent_cross_joins.rb + self + end +end + +ActiveRecord::Relation.prepend(ActiveRecordRelationAllowCrossJoins) diff --git a/config/initializers/0_acts_as_taggable.rb b/config/initializers/0_acts_as_taggable.rb index 04619590e3c..8dee3c52a53 100644 --- a/config/initializers/0_acts_as_taggable.rb +++ b/config/initializers/0_acts_as_taggable.rb @@ -11,8 +11,8 @@ raise "Counter cache is not disabled" if ActsAsTaggableOn::Tagging.reflections["tag"].options[:counter_cache] ActsAsTaggableOn::Tagging.include IgnorableColumns -ActsAsTaggableOn::Tagging.ignore_column :id_convert_to_bigint, remove_with: '14.2', remove_after: '2021-08-22' -ActsAsTaggableOn::Tagging.ignore_column :taggable_id_convert_to_bigint, remove_with: '14.2', remove_after: '2021-08-22' +ActsAsTaggableOn::Tagging.ignore_column :id_convert_to_bigint, remove_with: '14.5', remove_after: '2021-10-22' +ActsAsTaggableOn::Tagging.ignore_column :taggable_id_convert_to_bigint, remove_with: '14.5', remove_after: '2021-10-22' # The tags and taggings are supposed to be part of `gitlab_ci` ActsAsTaggableOn::Tag.gitlab_schema = :gitlab_ci diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 1c22216d442..0e4e6f5cc84 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -466,9 +466,6 @@ Settings.cron_jobs['personal_access_tokens_expired_notification_worker']['job_cl 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' -Settings.cron_jobs['packages_composer_cache_cleanup_worker'] ||= Settingslogic.new({}) -Settings.cron_jobs['packages_composer_cache_cleanup_worker']['cron'] ||= '30 * * * *' -Settings.cron_jobs['packages_composer_cache_cleanup_worker']['job_class'] = 'Packages::Composer::CacheCleanupWorker' Settings.cron_jobs['import_export_project_cleanup_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['import_export_project_cleanup_worker']['cron'] ||= '0 * * * *' Settings.cron_jobs['import_export_project_cleanup_worker']['job_class'] = 'ImportExportProjectCleanupWorker' @@ -535,6 +532,9 @@ Settings.cron_jobs['namespaces_prune_aggregation_schedules_worker']['job_class'] Settings.cron_jobs['container_expiration_policy_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['container_expiration_policy_worker']['cron'] ||= '50 * * * *' Settings.cron_jobs['container_expiration_policy_worker']['job_class'] = 'ContainerExpirationPolicyWorker' +Settings.cron_jobs['image_ttl_group_policy_worker'] ||= Settingslogic.new({}) +Settings.cron_jobs['image_ttl_group_policy_worker']['cron'] ||= '40 0 * * *' +Settings.cron_jobs['image_ttl_group_policy_worker']['job_class'] = 'DependencyProxy::ImageTtlGroupPolicyWorker' Settings.cron_jobs['x509_issuer_crl_check_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['x509_issuer_crl_check_worker']['cron'] ||= '30 1 * * *' Settings.cron_jobs['x509_issuer_crl_check_worker']['job_class'] = 'X509IssuerCrlCheckWorker' @@ -757,6 +757,7 @@ Settings.gitlab_kas['enabled'] ||= false Settings.gitlab_kas['secret_file'] ||= Rails.root.join('.gitlab_kas_secret') Settings.gitlab_kas['external_url'] ||= 'wss://kas.example.com' Settings.gitlab_kas['internal_url'] ||= 'grpc://localhost:8153' +# Settings.gitlab_kas['external_k8s_proxy_url'] ||= 'grpc://localhost:8154' # NOTE: Do not set a default until all distributions have been updated with a correct value # # Repositories diff --git a/config/initializers/7_prometheus_metrics.rb b/config/initializers/7_prometheus_metrics.rb index d2d546a5438..587d393fd77 100644 --- a/config/initializers/7_prometheus_metrics.rb +++ b/config/initializers/7_prometheus_metrics.rb @@ -48,7 +48,7 @@ if !Rails.env.test? && Gitlab::Metrics.prometheus_metrics_enabled? Gitlab::Metrics.gauge(:deployments, 'GitLab Version', {}, :max).set({ version: Gitlab::VERSION, revision: Gitlab.revision }, 1) - unless Gitlab::Runtime.sidekiq? + if Gitlab::Runtime.web_server? Gitlab::Metrics::RequestsRackMiddleware.initialize_metrics end diff --git a/config/initializers/7_redis.rb b/config/initializers/7_redis.rb index 84aa231089b..50f0fb92317 100644 --- a/config/initializers/7_redis.rb +++ b/config/initializers/7_redis.rb @@ -1,5 +1,11 @@ # frozen_string_literal: true +# We set the instance variable directly to suppress warnings. +# We cannot switch to the new behavior until we change all existing `redis.exists` calls to `redis.exists?`. +# Some gems also need to be updated +# https://gitlab.com/gitlab-org/gitlab/-/issues/340602 +Redis.instance_variable_set(:@exists_returns_integer, false) + Redis::Client.prepend(Gitlab::Instrumentation::RedisInterceptor) # Make sure we initialize a Redis connection pool before multi-threaded @@ -11,3 +17,5 @@ Gitlab::Redis::Cache.with { nil } Gitlab::Redis::Queues.with { nil } Gitlab::Redis::SharedState.with { nil } Gitlab::Redis::TraceChunks.with { nil } +Gitlab::Redis::RateLimiting.with { nil } +Gitlab::Redis::Sessions.with { nil } diff --git a/config/initializers/action_cable.rb b/config/initializers/action_cable.rb index 16d29f5910f..a7ef5cc332c 100644 --- a/config/initializers/action_cable.rb +++ b/config/initializers/action_cable.rb @@ -19,4 +19,4 @@ ActionCable::SubscriptionAdapter::Redis.redis_connector = lambda do |config| end Gitlab::ActionCable::RequestStoreCallbacks.install -Gitlab::Database::LoadBalancing::ActionCableCallbacks.install if Gitlab::Database::LoadBalancing.enable? +Gitlab::Database::LoadBalancing::ActionCableCallbacks.install diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb index f3e01d23448..4fd41bd4c75 100644 --- a/config/initializers/backtrace_silencers.rb +++ b/config/initializers/backtrace_silencers.rb @@ -4,7 +4,7 @@ Rails.backtrace_cleaner.remove_silencers! # This allows us to see the proper caller of SQL calls in {development,test}.log if (Rails.env.development? || Rails.env.test?) && Gitlab.ee? - Rails.backtrace_cleaner.add_silencer { |line| %r(^ee/lib/gitlab/database/load_balancing).match?(line) } + Rails.backtrace_cleaner.add_silencer { |line| %r(^lib/gitlab/database/load_balancing).match?(line) } end Rails.backtrace_cleaner.add_silencer { |line| !Gitlab::APP_DIRS_PATTERN.match?(line) } diff --git a/config/initializers/batch_loader.rb b/config/initializers/batch_loader.rb index d88b43fbcea..e542a26cb81 100644 --- a/config/initializers/batch_loader.rb +++ b/config/initializers/batch_loader.rb @@ -1,3 +1,13 @@ # frozen_string_literal: true Rails.application.config.middleware.use(BatchLoader::Middleware) + +# Disables replace_methods by default. +# See https://github.com/exAspArk/batch-loader#replacing-methods for more information. +module BatchLoaderWithoutMethodReplacementByDefault + def batch(replace_methods: false, **kw_args, &batch_block) + super + end +end + +BatchLoader.prepend(BatchLoaderWithoutMethodReplacementByDefault) diff --git a/config/initializers/carrierwave_patch.rb b/config/initializers/carrierwave_patch.rb index c8c6f75949c..a9c74478541 100644 --- a/config/initializers/carrierwave_patch.rb +++ b/config/initializers/carrierwave_patch.rb @@ -49,14 +49,8 @@ module CarrierWave local_file = local_directory.files.new(key: path) expire_at = options[:expire_at] || ::Fog::Time.now + @uploader.fog_authenticated_url_expiration case @uploader.fog_credentials[:provider] - when 'AWS', 'Google' - # Older versions of fog-google do not support options as a parameter - if url_options_supported?(local_file) - local_file.url(expire_at, options) - else - warn "Options hash not supported in #{local_file.class}. You may need to upgrade your Fog provider." - local_file.url(expire_at) - end + when 'AWS', 'Google', 'AzureRM' + local_file.url(expire_at, options) when 'Rackspace' connection.get_object_https_url(@uploader.fog_directory, path, expire_at, options) when 'OpenStack' diff --git a/config/initializers/database_config.rb b/config/initializers/database_config.rb index e9f10abd0b9..7aedf9013ae 100644 --- a/config/initializers/database_config.rb +++ b/config/initializers/database_config.rb @@ -1,15 +1,5 @@ # frozen_string_literal: true -def log_pool_size(db, previous_pool_size, current_pool_size) - log_message = ["#{db} connection pool size: #{current_pool_size}"] - - if previous_pool_size && current_pool_size > previous_pool_size - log_message << "(increased from #{previous_pool_size} to match thread count)" - end - - Gitlab::AppLogger.debug(log_message.join(' ')) -end - Gitlab.ee do # We need to initialize the Geo database before # setting the Geo DB connection pool size. diff --git a/config/initializers/gettext_rails_i18n_patch.rb b/config/initializers/gettext_rails_i18n_patch.rb index c23049e93c9..3c994516b2d 100644 --- a/config/initializers/gettext_rails_i18n_patch.rb +++ b/config/initializers/gettext_rails_i18n_patch.rb @@ -1,30 +1,8 @@ # frozen_string_literal: true -require 'gettext_i18n_rails/haml_parser' require 'gettext_i18n_rails_js/parser/javascript' require 'json' -VUE_TRANSLATE_REGEX = /((%[\w.-]+)(?:\s))?{{ (N|n|s)?__\((.*)\) }}/.freeze - -module GettextI18nRails - class HamlParser - singleton_class.send(:alias_method, :old_convert_to_code, :convert_to_code) - - # We need to convert text in Mustache format - # to a format that can be parsed by Gettext scripts. - # If we found a content like "{{ __('Stage') }}" - # in a HAML file we convert it to "= _('Stage')", that way - # it can be processed by the "rake gettext:find" script. - # - # Overwrites: https://github.com/grosser/gettext_i18n_rails/blob/8396387a431e0f8ead72fc1cd425cad2fa4992f2/lib/gettext_i18n_rails/haml_parser.rb#L9 - def self.convert_to_code(text) - text.gsub!(VUE_TRANSLATE_REGEX, "\\2= \\3_(\\4)") - - old_convert_to_code(text) - end - end -end - module GettextI18nRailsJs module Parser module Javascript diff --git a/config/initializers/grape_validators.rb b/config/initializers/grape_validators.rb index 07dd70822a2..1492894e1fa 100644 --- a/config/initializers/grape_validators.rb +++ b/config/initializers/grape_validators.rb @@ -10,3 +10,4 @@ Grape::Validations.register_validator(:check_assignees_count, ::API::Validations Grape::Validations.register_validator(:untrusted_regexp, ::API::Validations::Validators::UntrustedRegexp) Grape::Validations.register_validator(:email_or_email_list, ::API::Validations::Validators::EmailOrEmailList) Grape::Validations.register_validator(:iteration_id, ::API::Validations::Validators::IntegerOrCustomValue) +Grape::Validations.register_validator(:project_portable, ::API::Validations::Validators::ProjectPortable) diff --git a/config/initializers/load_balancing.rb b/config/initializers/load_balancing.rb index 2b58ae0f642..a31b11bb2be 100644 --- a/config/initializers/load_balancing.rb +++ b/config/initializers/load_balancing.rb @@ -1,28 +1,33 @@ # frozen_string_literal: true -ActiveRecord::Base.singleton_class.attr_accessor :load_balancing_proxy +Gitlab::Application.configure do |config| + config.middleware.use(Gitlab::Database::LoadBalancing::RackMiddleware) +end -if Gitlab::Database::LoadBalancing.enable? - Gitlab::Database.main.disable_prepared_statements +Gitlab::Database::LoadBalancing.base_models.each do |model| + # The load balancer needs to be configured immediately, and re-configured + # after forking. This ensures queries that run before forking use the load + # balancer, and queries running after a fork don't run into any errors when + # using dead database connections. + # + # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63485 for more + # information. + Gitlab::Database::LoadBalancing::Setup.new(model).setup - Gitlab::Application.configure do |config| - config.middleware.use(Gitlab::Database::LoadBalancing::RackMiddleware) + # Database queries may be run before we fork, so we must set up the load + # balancer as early as possible. When we do fork, we need to make sure all the + # hosts are disconnected. + Gitlab::Cluster::LifecycleEvents.on_before_fork do + # When forking, we don't want to wait until the connections aren't in use + # any more, as this could delay the boot cycle. + model.connection.load_balancer.disconnect!(timeout: 0) end - # This hijacks the "connection" method to ensure both - # `ActiveRecord::Base.connection` and all models use the same load - # balancing proxy. - ActiveRecord::Base.singleton_class.prepend(Gitlab::Database::LoadBalancing::ActiveRecordProxy) - - Gitlab::Database::LoadBalancing.configure_proxy - - # This needs to be executed after fork of clustered processes + # Service discovery only needs to run in the worker processes, as the main one + # won't be running many (if any) database queries. Gitlab::Cluster::LifecycleEvents.on_worker_start do - # For Host-based LB, we need to re-connect as Rails discards connections on fork - Gitlab::Database::LoadBalancing.configure_proxy - - # Service discovery must be started after configuring the proxy, as service - # discovery depends on this. - Gitlab::Database::LoadBalancing.start_service_discovery + Gitlab::Database::LoadBalancing::Setup + .new(model, start_service_discovery: true) + .setup end end diff --git a/config/initializers/mailer_retries.rb b/config/initializers/mailer_retries.rb index 64fb0ffaa55..5980513af92 100644 --- a/config/initializers/mailer_retries.rb +++ b/config/initializers/mailer_retries.rb @@ -1,41 +1,5 @@ # frozen_string_literal: true -class ActiveJob::QueueAdapters::SidekiqAdapter - # With Sidekiq 6, we can do something like: - # class ActionMailer::MailDeliveryJob - # sidekiq_options retry: 3 - # end - # - # See https://gitlab.com/gitlab-org/gitlab/-/issues/329430 - raise "Update this monkey patch: #{__FILE__}" unless Sidekiq::VERSION == '5.2.9' - - def enqueue(job) #:nodoc: - # Sidekiq::Client does not support symbols as keys - job.provider_job_id = Sidekiq::Client.push \ - "class" => JobWrapper, - "wrapped" => job.class.to_s, - "queue" => job.queue_name, - "args" => [job.serialize], - "retry" => retry_for(job) - end - - def enqueue_at(job, timestamp) #:nodoc: - job.provider_job_id = Sidekiq::Client.push \ - "class" => JobWrapper, - "wrapped" => job.class.to_s, - "queue" => job.queue_name, - "args" => [job.serialize], - "at" => timestamp, - "retry" => retry_for(job) - end - - private - - def retry_for(job) - if job.queue_name == 'mailers' - 3 - else - true - end - end +Rails.application.config.after_initialize do + ActionMailer::MailDeliveryJob.sidekiq_options retry: 3 end diff --git a/config/initializers/postgres_partitioning.rb b/config/initializers/postgres_partitioning.rb index f2e2fba1559..49f382547d6 100644 --- a/config/initializers/postgres_partitioning.rb +++ b/config/initializers/postgres_partitioning.rb @@ -2,8 +2,7 @@ Gitlab::Database::Partitioning.register_models([ AuditEvent, - WebHookLog, - LooseForeignKeys::DeletedRecord + WebHookLog ]) if Gitlab.ee? diff --git a/config/initializers/postgresql_cte.rb b/config/initializers/postgresql_cte.rb index 6a9af7b4868..7d00776e460 100644 --- a/config/initializers/postgresql_cte.rb +++ b/config/initializers/postgresql_cte.rb @@ -96,7 +96,7 @@ module ActiveRecord end end - def build_arel(aliases) + def build_arel(aliases = nil) arel = super build_with(arel) if @values[:with] diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index 19c5e4df854..d33550b82d1 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -27,8 +27,14 @@ use_sidekiq_daemon_memory_killer = ENV.fetch("SIDEKIQ_DAEMON_MEMORY_KILLER", 1). use_sidekiq_legacy_memory_killer = !use_sidekiq_daemon_memory_killer Sidekiq.configure_server do |config| + config.options[:strict] = false + config.options[:queues] = Gitlab::SidekiqConfig.expand_queues(config.options[:queues]) + config.options[:scheduled_enq] = Gitlab::SidekiqEnq + + Sidekiq.logger.info "Listening on queues #{config.options[:queues].uniq.sort}" + if enable_json_logs - Sidekiq.logger.formatter = Gitlab::SidekiqLogging::JSONFormatter.new + config.log_formatter = Gitlab::SidekiqLogging::JSONFormatter.new config.options[:job_logger] = Gitlab::SidekiqLogging::StructuredLogger # Remove the default-provided handler. The exception is logged inside @@ -38,11 +44,11 @@ Sidekiq.configure_server do |config| config.redis = queues_config_hash - config.server_middleware(&Gitlab::SidekiqMiddleware.server_configurator({ + config.server_middleware(&Gitlab::SidekiqMiddleware.server_configurator( metrics: Settings.monitoring.sidekiq_exporter, arguments_logger: SidekiqLogArguments.enabled? && !enable_json_logs, memory_killer: enable_sidekiq_memory_killer && use_sidekiq_legacy_memory_killer - })) + )) config.client_middleware(&Gitlab::SidekiqMiddleware.client_configurator) diff --git a/config/initializers/zz_metrics.rb b/config/initializers/zz_metrics.rb index 25e4ec0d483..8e69e1634f1 100644 --- a/config/initializers/zz_metrics.rb +++ b/config/initializers/zz_metrics.rb @@ -3,128 +3,6 @@ # This file was prefixed with zz_ because we want to load it the last! # See: https://gitlab.com/gitlab-org/gitlab-foss/issues/55611 -# Autoload all classes that we want to instrument, and instrument the methods we -# need. This takes the Gitlab::Metrics::Instrumentation module as an argument so -# that we can stub it for testing, as it is only called when metrics are -# enabled. -# -# rubocop:disable Metrics/AbcSize -def instrument_classes(instrumentation) - return if ENV['STATIC_VERIFICATION'] - - instrumentation.instrument_instance_methods(Gitlab::Shell) - - instrumentation.instrument_methods(Gitlab::Git) - - Gitlab::Git.constants.each do |name| - const = Gitlab::Git.const_get(name, false) - - next unless const.is_a?(Module) - - instrumentation.instrument_methods(const) - instrumentation.instrument_instance_methods(const) - end - - # Path to search => prefix to strip from constant - paths_to_instrument = { - %w(app finders) => %w(app finders), - %w(app mailers emails) => %w(app mailers), - # Don't instrument `app/services/concerns` - # It contains modules that are included in the services. - # The services themselves are instrumented so the methods from the modules - # are included. - %w(app services [^concerns]**) => %w(app services), - %w(lib gitlab conflicts) => ['lib'], - %w(lib gitlab email message) => ['lib'], - %w(lib gitlab checks) => ['lib'] - } - - paths_to_instrument.each do |(path, prefix)| - prefix = Rails.root.join(*prefix) - - Dir[Rails.root.join(*path + ['*.rb'])].each do |file_path| - path = Pathname.new(file_path).relative_path_from(prefix) - const = path.to_s.sub('.rb', '').camelize.constantize - - instrumentation.instrument_methods(const) - instrumentation.instrument_instance_methods(const) - end - end - - instrumentation.instrument_methods(Premailer::Adapter::Nokogiri) - instrumentation.instrument_instance_methods(Premailer::Adapter::Nokogiri) - - instrumentation.instrument_methods(Banzai::Renderer) - instrumentation.instrument_methods(Banzai::Querying) - - instrumentation.instrument_instance_methods(Banzai::ObjectRenderer) - instrumentation.instrument_instance_methods(Banzai::ReferenceRedactor) - - [Issuable, Mentionable, Participable].each do |klass| - instrumentation.instrument_instance_methods(klass) - instrumentation.instrument_instance_methods(klass::ClassMethods) - end - - instrumentation.instrument_methods(Gitlab::ReferenceExtractor) - instrumentation.instrument_instance_methods(Gitlab::ReferenceExtractor) - - # Instrument the classes used for checking if somebody has push access. - instrumentation.instrument_instance_methods(Gitlab::GitAccess) - instrumentation.instrument_instance_methods(Gitlab::GitAccessWiki) - - instrumentation.instrument_instance_methods(API::Helpers) - - instrumentation.instrument_instance_methods(RepositoryCheck::SingleRepositoryWorker) - - instrumentation.instrument_instance_methods(Rouge::Formatters::HTMLGitlab) - - [:XML, :HTML].each do |namespace| - namespace_mod = Nokogiri.const_get(namespace, false) - - instrumentation.instrument_methods(namespace_mod) - instrumentation.instrument_methods(namespace_mod::Document) - end - - instrumentation.instrument_methods(Rinku) - instrumentation.instrument_instance_methods(Repository) - - instrumentation.instrument_methods(Gitlab::Highlight) - instrumentation.instrument_instance_methods(Gitlab::Highlight) - instrumentation.instrument_instance_method(Gitlab::Ci::Config::Yaml::Tags::Resolver, :to_hash) - - Gitlab.ee do - 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) - - instrumentation.instrument_instance_methods(Gitlab::Elastic::SearchResults) - instrumentation.instrument_instance_methods(Gitlab::Elastic::ProjectSearchResults) - instrumentation.instrument_instance_methods(Gitlab::Elastic::Indexer) - instrumentation.instrument_instance_methods(Gitlab::Elastic::SnippetSearchResults) - instrumentation.instrument_instance_methods(Gitlab::Elastic::Helper) - - instrumentation.instrument_instance_methods(Elastic::ApplicationVersionedSearch) - instrumentation.instrument_instance_methods(Elastic::ProjectsSearch) - instrumentation.instrument_instance_methods(Elastic::RepositoriesSearch) - instrumentation.instrument_instance_methods(Elastic::SnippetsSearch) - instrumentation.instrument_instance_methods(Elastic::WikiRepositoriesSearch) - - instrumentation.instrument_instance_methods(Gitlab::BitbucketImport::Importer) - instrumentation.instrument_instance_methods(Bitbucket::Connection) - - instrumentation.instrument_instance_methods(Geo::RepositorySyncWorker) - end - - # This is a Rails scope so we have to instrument it manually. - instrumentation.instrument_method(Project, :visible_to_user) - - # Needed for https://gitlab.com/gitlab-org/gitlab-foss/issues/30224#note_32306159 - instrumentation.instrument_instance_method(MergeRequestDiff, :load_commits) -end -# rubocop:enable Metrics/AbcSize - # With prometheus enabled by default this breaks all specs # that stubs methods using `any_instance_of` for the models reloaded here. # @@ -151,12 +29,8 @@ if Gitlab::Metrics.enabled? && !Rails.env.test? && !(Rails.env.development? && d Gitlab::Application.configure do |config| # We want to track certain metrics during the Load Balancing host resolving process. # Because of that, we need to have metrics code available earlier for Load Balancing. - if Gitlab::Database::LoadBalancing.enable? - config.middleware.insert_before Gitlab::Database::LoadBalancing::RackMiddleware, - Gitlab::Metrics::RackMiddleware - else - config.middleware.use(Gitlab::Metrics::RackMiddleware) - end + config.middleware.insert_before Gitlab::Database::LoadBalancing::RackMiddleware, + Gitlab::Metrics::RackMiddleware config.middleware.use(Gitlab::Middleware::RailsQueueDuration) config.middleware.use(Gitlab::Metrics::ElasticsearchRackMiddleware) -- cgit v1.2.1