lib/gdk/diagnostic/praefect.rb (36 lines of code) (raw):

# frozen_string_literal: true module GDK module Diagnostic class Praefect < Base TITLE = 'Praefect' def success? migrations_ok? end def detail return if success? output = [] output << migrations_not_ok_message unless migrations_ok? output.join("\n#{diagnostic_detail_break}\n") end private def praefect_bin_path @praefect_bin_path ||= config.gitaly.__build_bin_path.join('praefect') end def praefect_config_path @praefect_config_path ||= config.gitaly.dir.join('praefect.config.toml') end def migrations_check_command @migrations_check_command ||= "#{praefect_bin_path} -config #{praefect_config_path} sql-migrate-status" end def migrations_needing_attention @migrations_needing_attention ||= Shellout.new(migrations_check_command).readlines.each_with_object([]) do |e, a| m = e.match(/\A\|\s(?<migration>[^\s]+)\s+\| (?:no|unknown migration)\s+\|\z/) next unless m a << m[:migration] end end def migrations_ok? migrations_needing_attention.empty? end def migrations_not_ok_message <<~MIGRATIONS_NOT_OK_MESSAGE The following praefect DB migrations don't appear to have been applied: #{migrations_needing_attention.join("\n ")} For full output you can run: #{migrations_check_command} To fix, you can run: gdk reset-praefect-data MIGRATIONS_NOT_OK_MESSAGE end end end end