diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 12:55:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 12:55:51 +0300 |
commit | e8d2c2579383897a1dd7f9debd359abe8ae8373d (patch) | |
tree | c42be41678c2586d49a75cabce89322082698334 /config/initializers | |
parent | fc845b37ec3a90aaa719975f607740c22ba6a113 (diff) |
Add latest changes from gitlab-org/gitlab@14-1-stable-eev14.1.0-rc42
Diffstat (limited to 'config/initializers')
-rw-r--r-- | config/initializers/0_migration_paths_additional.rb (renamed from config/initializers/0_post_deployment_migrations.rb) | 3 | ||||
-rw-r--r-- | config/initializers/1_settings.rb | 28 | ||||
-rw-r--r-- | config/initializers/7_prometheus_metrics.rb | 12 | ||||
-rw-r--r-- | config/initializers/7_redis.rb | 2 | ||||
-rw-r--r-- | config/initializers/9_runtime_identify.rb (renamed from config/initializers/0_runtime_identify.rb) | 2 | ||||
-rw-r--r-- | config/initializers/active_record_build_select.rb | 6 | ||||
-rw-r--r-- | config/initializers/active_record_force_reconnects.rb | 3 | ||||
-rw-r--r-- | config/initializers/asciidoctor_patch.rb | 20 | ||||
-rw-r--r-- | config/initializers/attr_encrypted_no_db_connection.rb | 16 | ||||
-rw-r--r-- | config/initializers/check_decomposition_database_config.rb | 7 | ||||
-rw-r--r-- | config/initializers/gitlab_experiment.rb | 15 | ||||
-rw-r--r-- | config/initializers/global_id.rb | 2 | ||||
-rw-r--r-- | config/initializers/postgres_partitioning.rb | 10 | ||||
-rw-r--r-- | config/initializers/rspec_profiling.rb | 2 | ||||
-rw-r--r-- | config/initializers/zz_metrics.rb | 10 |
15 files changed, 80 insertions, 58 deletions
diff --git a/config/initializers/0_post_deployment_migrations.rb b/config/initializers/0_migration_paths_additional.rb index dabb82c8525..bf0c36e9bb6 100644 --- a/config/initializers/0_post_deployment_migrations.rb +++ b/config/initializers/0_migration_paths_additional.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +# Because we use Gitlab::Database, which in turn uses prepend_mod_with, +# we need this intializer to be after config/initializers/0_inject_enterprise_edition_module.rb. + # Post deployment migrations are included by default. This file must be loaded # before other initializers as Rails may otherwise memoize a list of migrations # excluding the post deployment migrations. diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index e311a364977..42c7063378b 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -222,7 +222,6 @@ Gitlab.ee do Settings.gitlab['mirror_max_delay'] ||= 300 Settings.gitlab['mirror_max_capacity'] ||= 30 Settings.gitlab['mirror_capacity_threshold'] ||= 15 - Settings.gitlab['seat_link_enabled'] = true if Settings.gitlab['seat_link_enabled'].nil? end # @@ -499,9 +498,9 @@ Settings.cron_jobs['jira_import_stuck_jira_import_jobs']['job_class'] = 'Gitlab: Settings.cron_jobs['stuck_export_jobs_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['stuck_export_jobs_worker']['cron'] ||= '30 * * * *' Settings.cron_jobs['stuck_export_jobs_worker']['job_class'] = 'StuckExportJobsWorker' -Settings.cron_jobs['gitlab_usage_ping_worker'] ||= Settingslogic.new({}) -Settings.cron_jobs['gitlab_usage_ping_worker']['cron'] ||= nil # This is dynamically loaded in the sidekiq initializer -Settings.cron_jobs['gitlab_usage_ping_worker']['job_class'] = 'GitlabUsagePingWorker' +Settings.cron_jobs['gitlab_service_ping_worker'] ||= Settingslogic.new({}) +Settings.cron_jobs['gitlab_service_ping_worker']['cron'] ||= nil # This is dynamically loaded in the sidekiq initializer +Settings.cron_jobs['gitlab_service_ping_worker']['job_class'] = 'GitlabServicePingWorker' Settings.cron_jobs['stuck_merge_jobs_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['stuck_merge_jobs_worker']['cron'] ||= '0 */2 * * *' Settings.cron_jobs['stuck_merge_jobs_worker']['job_class'] = 'StuckMergeJobsWorker' @@ -541,9 +540,9 @@ Settings.cron_jobs['authorized_project_update_periodic_recalculate_worker']['job Settings.cron_jobs['update_container_registry_info_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['update_container_registry_info_worker']['cron'] ||= '0 0 * * *' Settings.cron_jobs['update_container_registry_info_worker']['job_class'] = 'UpdateContainerRegistryInfoWorker' -Settings.cron_jobs['postgres_dynamic_partitions_creator'] ||= Settingslogic.new({}) -Settings.cron_jobs['postgres_dynamic_partitions_creator']['cron'] ||= '21 */6 * * *' -Settings.cron_jobs['postgres_dynamic_partitions_creator']['job_class'] ||= 'PartitionCreationWorker' +Settings.cron_jobs['postgres_dynamic_partitions_manager'] ||= Settingslogic.new({}) +Settings.cron_jobs['postgres_dynamic_partitions_manager']['cron'] ||= '21 */6 * * *' +Settings.cron_jobs['postgres_dynamic_partitions_manager']['job_class'] ||= 'Database::PartitionManagementWorker' Settings.cron_jobs['ci_platform_metrics_update_cron_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['ci_platform_metrics_update_cron_worker']['cron'] ||= '47 9 * * *' Settings.cron_jobs['ci_platform_metrics_update_cron_worker']['job_class'] = 'CiPlatformMetricsUpdateCronWorker' @@ -583,7 +582,7 @@ Settings.cron_jobs['batched_background_migrations_worker']['job_class'] = 'Datab Gitlab.ee do Settings.cron_jobs['analytics_devops_adoption_create_all_snapshots_worker'] ||= Settingslogic.new({}) - Settings.cron_jobs['analytics_devops_adoption_create_all_snapshots_worker']['cron'] ||= '0 0 1 * *' + Settings.cron_jobs['analytics_devops_adoption_create_all_snapshots_worker']['cron'] ||= '0 1 * * *' Settings.cron_jobs['analytics_devops_adoption_create_all_snapshots_worker']['job_class'] = 'Analytics::DevopsAdoption::CreateAllSnapshotsWorker' Settings.cron_jobs['active_user_count_threshold_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['active_user_count_threshold_worker']['cron'] ||= '0 12 * * *' @@ -642,6 +641,9 @@ Gitlab.ee do Settings.cron_jobs['incident_management_persist_oncall_rotation_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['incident_management_persist_oncall_rotation_worker']['cron'] ||= '*/5 * * * *' Settings.cron_jobs['incident_management_persist_oncall_rotation_worker']['job_class'] = 'IncidentManagement::OncallRotations::PersistAllRotationsShiftsJob' + Settings.cron_jobs['incident_management_schedule_escalation_check_worker'] ||= Settingslogic.new({}) + Settings.cron_jobs['incident_management_schedule_escalation_check_worker']['cron'] ||= '*/1 * * * *' + Settings.cron_jobs['incident_management_schedule_escalation_check_worker']['job_class'] = 'IncidentManagement::PendingEscalations::ScheduleCheckCronWorker' Settings.cron_jobs['import_software_licenses_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['import_software_licenses_worker']['cron'] ||= '0 3 * * 0' Settings.cron_jobs['import_software_licenses_worker']['job_class'] = 'ImportSoftwareLicensesWorker' @@ -791,6 +793,7 @@ Settings.backup['upload']['multipart_chunk_size'] ||= 104857600 Settings.backup['upload']['encryption'] ||= nil Settings.backup['upload']['encryption_key'] ||= ENV['GITLAB_BACKUP_ENCRYPTION_KEY'] Settings.backup['upload']['storage_class'] ||= nil +Settings.backup['gitaly_backup_path'] ||= Gitlab::Utils.which('gitaly-backup') # # Pseudonymizer @@ -915,13 +918,8 @@ Settings.monitoring.web_exporter['port'] ||= 8083 # Prometheus settings # Settings['prometheus'] ||= Settingslogic.new({}) -# TODO: Remove listen_address and enable in GitLab 14.0 and set default value -# of server_address to be nil and enabled to be false - -# https://gitlab.com/gitlab-org/gitlab/-/issues/296022 -Settings.prometheus['enable'] ||= false -Settings.prometheus['listen_address'] ||= nil -Settings.prometheus['enabled'] = Settings.prometheus['enable'] if Settings.prometheus['enabled'].nil? -Settings.prometheus['server_address'] ||= Settings.prometheus['listen_address'] +Settings.prometheus['enabled'] ||= false +Settings.prometheus['server_address'] ||= nil # # Shutdown settings diff --git a/config/initializers/7_prometheus_metrics.rb b/config/initializers/7_prometheus_metrics.rb index 8dee21016f9..fc69ae7b077 100644 --- a/config/initializers/7_prometheus_metrics.rb +++ b/config/initializers/7_prometheus_metrics.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'prometheus/client' - # Keep separate directories for separate processes def prometheus_default_multiproc_dir return unless Rails.env.development? || Rails.env.test? @@ -15,14 +13,14 @@ def prometheus_default_multiproc_dir end end -Prometheus::Client.configure do |config| +::Prometheus::Client.configure do |config| config.logger = Gitlab::AppLogger config.initial_mmap_file_size = 4 * 1024 config.multiprocess_files_dir = ENV['prometheus_multiproc_dir'] || prometheus_default_multiproc_dir - config.pid_provider = Prometheus::PidProvider.method(:worker_id) + config.pid_provider = ::Prometheus::PidProvider.method(:worker_id) end Gitlab::Application.configure do |config| @@ -43,7 +41,7 @@ if !Rails.env.test? && Gitlab::Metrics.prometheus_metrics_enabled? # Thus, we order these events to run `reinitialize_on_pid_change` with `force: true` first. Gitlab::Cluster::LifecycleEvents.on_master_start do # Ensure that stale Prometheus metrics don't accumulate over time - Prometheus::CleanupMultiprocDirService.new.execute + ::Prometheus::CleanupMultiprocDirService.new.execute ::Prometheus::Client.reinitialize_on_pid_change(force: true) @@ -51,7 +49,7 @@ if !Rails.env.test? && Gitlab::Metrics.prometheus_metrics_enabled? Gitlab::Metrics::Samplers::PumaSampler.instance.start end - Gitlab::Metrics.gauge(:deployments, 'GitLab Version', {}, :max).set({ version: Gitlab::VERSION }, 1) + Gitlab::Metrics.gauge(:deployments, 'GitLab Version', {}, :max).set({ version: Gitlab::VERSION, revision: Gitlab.revision }, 1) unless Gitlab::Runtime.sidekiq? Gitlab::Metrics::RequestsRackMiddleware.initialize_metrics @@ -64,7 +62,7 @@ if !Rails.env.test? && Gitlab::Metrics.prometheus_metrics_enabled? end Gitlab::Cluster::LifecycleEvents.on_worker_start do - defined?(::Prometheus::Client.reinitialize_on_pid_change) && Prometheus::Client.reinitialize_on_pid_change + defined?(::Prometheus::Client.reinitialize_on_pid_change) && ::Prometheus::Client.reinitialize_on_pid_change Gitlab::Metrics::Samplers::RubySampler.initialize_instance.start Gitlab::Metrics::Samplers::DatabaseSampler.initialize_instance.start diff --git a/config/initializers/7_redis.rb b/config/initializers/7_redis.rb index fe37dfd7579..84aa231089b 100644 --- a/config/initializers/7_redis.rb +++ b/config/initializers/7_redis.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +Redis::Client.prepend(Gitlab::Instrumentation::RedisInterceptor) + # Make sure we initialize a Redis connection pool before multi-threaded # execution starts by # 1. Sidekiq diff --git a/config/initializers/0_runtime_identify.rb b/config/initializers/9_runtime_identify.rb index e6be19ffb79..c5efc9b17cb 100644 --- a/config/initializers/0_runtime_identify.rb +++ b/config/initializers/9_runtime_identify.rb @@ -7,7 +7,7 @@ rescue Gitlab::Runtime::IdentificationError => e \n!! RUNTIME IDENTIFICATION FAILED: #{e} Runtime based configuration settings may not work properly. If you continue to see this error, please file an issue via - https://gitlab.com/gitlab-org/gitlab/issues/new + https://gitlab.com/gitlab-org/gitlab/-/issues/new NOTICE Gitlab::AppLogger.error(message) Gitlab::ErrorTracking.track_exception(e) diff --git a/config/initializers/active_record_build_select.rb b/config/initializers/active_record_build_select.rb index ab5a872cac6..48f1b1ee407 100644 --- a/config/initializers/active_record_build_select.rb +++ b/config/initializers/active_record_build_select.rb @@ -9,6 +9,10 @@ # statement cache. If a different migration is then run and one of these columns is # removed in the meantime, the query is invalid. +ActiveRecord::Base.class_eval do + class_attribute :enumerate_columns_in_select_statements +end + module ActiveRecord module QueryMethods private @@ -16,6 +20,8 @@ module ActiveRecord def build_select(arel) if select_values.any? arel.project(*arel_columns(select_values.uniq)) + elsif klass.enumerate_columns_in_select_statements + arel.project(*klass.column_names.map { |field| table[field] }) else arel.project(@klass.arel_table[Arel.star]) end diff --git a/config/initializers/active_record_force_reconnects.rb b/config/initializers/active_record_force_reconnects.rb index 73dfaf5e121..ff264a55ad2 100644 --- a/config/initializers/active_record_force_reconnects.rb +++ b/config/initializers/active_record_force_reconnects.rb @@ -1,7 +1,8 @@ # frozen_string_literal: true Gitlab::Database::ConnectionTimer.configure do |config| - config.interval = Rails.application.config_for(:database)[:force_reconnect_interval] + configuration_hash = ActiveRecord::Base.configurations.find_db_config(Rails.env).configuration_hash + config.interval = configuration_hash[:force_reconnect_interval] end ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(Gitlab::Database::PostgresqlAdapter::ForceDisconnectableMixin) diff --git a/config/initializers/asciidoctor_patch.rb b/config/initializers/asciidoctor_patch.rb deleted file mode 100644 index b7da50db77c..00000000000 --- a/config/initializers/asciidoctor_patch.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -# Ensure that locked attributes can not be changed using a counter. -# TODO: this can be removed once `asciidoctor` gem is > 2.0.12 -# and https://github.com/asciidoctor/asciidoctor/issues/3939 is merged -module Asciidoctor - module DocumentPatch - def counter(name, seed = nil) - return @parent_document.counter(name, seed) if @parent_document # rubocop: disable Gitlab/ModuleWithInstanceVariables - - unless attribute_locked? name - super - end - end - end -end - -class Asciidoctor::Document - prepend Asciidoctor::DocumentPatch -end diff --git a/config/initializers/attr_encrypted_no_db_connection.rb b/config/initializers/attr_encrypted_no_db_connection.rb index f8d0effbbad..91eef7d0a5c 100644 --- a/config/initializers/attr_encrypted_no_db_connection.rb +++ b/config/initializers/attr_encrypted_no_db_connection.rb @@ -27,6 +27,22 @@ module AttrEncrypted AttrEncrypted.instance_method(:attribute_instance_methods_as_symbols).bind(self).call end end + + protected + + # The attr_encrypted gem is not actively maintained + # At the same time it contains the code that raises kwargs deprecation warnings: + # https://github.com/attr-encrypted/attr_encrypted/blob/master/lib/attr_encrypted/adapters/active_record.rb#L65 + # + def attr_encrypted(*attrs) + super + + attr = attrs.first + + redefine_method(:"#{attr}_changed?") do |**options| + attribute_changed?(attr, **options) + end + end end end end diff --git a/config/initializers/check_decomposition_database_config.rb b/config/initializers/check_decomposition_database_config.rb new file mode 100644 index 00000000000..f32c72efa75 --- /dev/null +++ b/config/initializers/check_decomposition_database_config.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +ci_db_config = Gitlab::Application.config.database_configuration[Rails.env]["ci"] + +if ci_db_config.present? + raise "migrations_paths setting for ci database must be `db/ci_migrate`" unless ci_db_config["migrations_paths"] == 'db/ci_migrate' +end diff --git a/config/initializers/gitlab_experiment.rb b/config/initializers/gitlab_experiment.rb index 055979bb66b..40c706ea922 100644 --- a/config/initializers/gitlab_experiment.rb +++ b/config/initializers/gitlab_experiment.rb @@ -2,16 +2,15 @@ Gitlab::Experiment.configure do |config| config.base_class = 'ApplicationExperiment' + config.mount_at = '/-/experiment' config.cache = Gitlab::Experiment::Cache::RedisHashStore.new( pool: ->(&block) { Gitlab::Redis::SharedState.with { |redis| block.call(redis) } } ) - - # TODO: This will be deprecated as of v0.6.0, but needs to stay intact for - # actively running experiments until a versioning concept is put in place to - # enable migrating into the new SHA2 strategy. - config.context_hash_strategy = lambda do |source, seed| - source = source.keys + source.values if source.is_a?(Hash) - data = Array(source).map { |v| (v.respond_to?(:to_global_id) ? v.to_global_id : v).to_s } - Digest::MD5.hexdigest(data.unshift(seed).join('|')) + config.tracking_behavior = lambda do |action, event_args| + Gitlab::Tracking.event(name, action.to_s, **event_args.merge( + context: (event_args[:context] || []) << SnowplowTracker::SelfDescribingJson.new( + 'iglu:com.gitlab/gitlab_experiment/jsonschema/1-0-0', signature + ) + )) end end diff --git a/config/initializers/global_id.rb b/config/initializers/global_id.rb index 8f1b8f2aeeb..c3ab9f10c08 100644 --- a/config/initializers/global_id.rb +++ b/config/initializers/global_id.rb @@ -1,3 +1,3 @@ # frozen_string_literal: true -GlobalID.prepend(Gitlab::Patch::GlobalID) +GlobalID.prepend(Gitlab::Patch::GlobalId) diff --git a/config/initializers/postgres_partitioning.rb b/config/initializers/postgres_partitioning.rb index 787e46c2405..d4be1e7670d 100644 --- a/config/initializers/postgres_partitioning.rb +++ b/config/initializers/postgres_partitioning.rb @@ -3,11 +3,15 @@ # Make sure we have loaded partitioned models here # (even with eager loading disabled). -Gitlab::Database::Partitioning::PartitionCreator.register(AuditEvent) -Gitlab::Database::Partitioning::PartitionCreator.register(WebHookLog) +Gitlab::Database::Partitioning::PartitionManager.register(AuditEvent) +Gitlab::Database::Partitioning::PartitionManager.register(WebHookLog) + +if Gitlab.ee? + Gitlab::Database::Partitioning::PartitionManager.register(IncidentManagement::PendingEscalations::Alert) +end begin - Gitlab::Database::Partitioning::PartitionCreator.new.create_partitions unless ENV['DISABLE_POSTGRES_PARTITION_CREATION_ON_STARTUP'] + Gitlab::Database::Partitioning::PartitionManager.new.sync_partitions unless ENV['DISABLE_POSTGRES_PARTITION_CREATION_ON_STARTUP'] rescue ActiveRecord::ActiveRecordError, PG::Error # ignore - happens when Rake tasks yet have to create a database, e.g. for testing end diff --git a/config/initializers/rspec_profiling.rb b/config/initializers/rspec_profiling.rb index 1288fad8a94..5edea6489ed 100644 --- a/config/initializers/rspec_profiling.rb +++ b/config/initializers/rspec_profiling.rb @@ -61,7 +61,7 @@ RspecProfiling.configure do |config| RspecProfiling::Run.prepend(RspecProfilingExt::Run) config.collector = RspecProfilingExt::Collectors::CSVWithTimestamps config.csv_path = -> do - prefix = "#{ENV['CI_JOB_NAME']}-".gsub(/[ \/]/, '-') if ENV['CI_JOB_NAME'] + prefix = "#{ENV['CI_JOB_NAME']}-".gsub(%r{[ /]}, '-') if ENV['CI_JOB_NAME'] "rspec_profiling/#{prefix}#{Time.now.to_i}-#{SecureRandom.hex(8)}-rspec-data.csv" end end diff --git a/config/initializers/zz_metrics.rb b/config/initializers/zz_metrics.rb index aaf019f6d27..e352ff5090a 100644 --- a/config/initializers/zz_metrics.rb +++ b/config/initializers/zz_metrics.rb @@ -149,7 +149,15 @@ if Gitlab::Metrics.enabled? && !Rails.env.test? && !(Rails.env.development? && d require_dependency 'gitlab/metrics/subscribers/rails_cache' Gitlab::Application.configure do |config| - config.middleware.use(Gitlab::Metrics::RackMiddleware) + # 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.use(Gitlab::Middleware::RailsQueueDuration) config.middleware.use(Gitlab::Metrics::ElasticsearchRackMiddleware) end |