pg_upgrade_check

in files/gitlab-ctl-commands/upgrade.rb [223:254]


def pg_upgrade_check
  return unless postgresql_detected?

  manifest_file = '/opt/gitlab/version-manifest.txt'
  return unless File.exist?(manifest_file)

  
  
  manifest_entry = File.readlines(manifest_file).grep(/postgresql_new/).first
  return unless manifest_entry

  
  return unless recommend_pg_upgrade?

  new_version = PGVersion.parse(manifest_entry&.split&.[](1))

  pg_version_file = '/var/opt/gitlab/postgresql/data/PG_VERSION'
  installed_version = PGVersion.parse(File.read(pg_version_file).strip) if File.exist?(pg_version_file)

  
  
  outdated_db = installed_version && new_version && new_version.major.to_f > installed_version.major.to_f
  return unless outdated_db

  puts '=== INFO ==='
  puts "You are currently running PostgreSQL #{installed_version}."
  puts "Note that PostgreSQL #{new_version.major} will become the minimum required PostgreSQL version in GitLab 17.0 (May 2024)."
  puts "PostgreSQL #{installed_version} will be removed in GitLab 17.0. Please consider upgrading your PostgreSQL version soon."
  puts "To upgrade, please see: #{pg_upgrade_doc_url}"
  puts '=== INFO ==='
end