File: validate_database_config.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (26 lines) | stat: -rw-r--r-- 1,207 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# frozen_string_literal: true

if Gitlab::Utils.to_boolean(ENV['SKIP_DATABASE_CONFIG_VALIDATION'], default: false)
  return
end

if configurations = ActiveRecord::Base.configurations.configurations
  if configurations.first.name != Gitlab::Database::MAIN_DATABASE_NAME
    raise "ERROR: This installation of GitLab uses unsupported 'config/database.yml'. " \
      "The `main:` database needs to be defined as a first configuration item instead of `#{configurations.first.name}`."
  end

  all_database_names = Gitlab::Database.all_database_names
  rejected_config_names = configurations.map(&:name).to_set - all_database_names
  if rejected_config_names.any?
    raise "ERROR: This installation of GitLab uses unsupported database names " \
      "in 'config/database.yml': #{rejected_config_names.to_a.join(", ")}. The only supported ones are " \
      "#{all_database_names.join(", ")}."
  end

  replicas_config_names = configurations.select(&:replica?).map(&:name)
  if replicas_config_names.any?
    raise "ERROR: This installation of GitLab uses unsupported database configuration " \
      "with 'replica: true' parameter in 'config/database.yml' for: #{replicas_config_names.join(", ")}"
  end
end