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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
# frozen_string_literal: true
require 'redis'
module SystemCheck
module App
class RedisVersionCheck < SystemCheck::BaseCheck
MIN_REDIS_VERSION = '6.0.0'
RECOMMENDED_REDIS_VERSION = "6.2.14"
set_name "Redis version >= #{RECOMMENDED_REDIS_VERSION}?"
@custom_error_message = ''
def check?
redis_version = Gitlab::Redis::Queues.with do |redis|
redis.info['redis_version']
end
status = true
if !redis_version
@custom_error_message = "Could not retrieve the Redis version. Please check if your settings are correct"
status = false
elsif Gem::Version.new(redis_version) < Gem::Version.new(MIN_REDIS_VERSION)
@custom_error_message = "Your Redis version #{redis_version} is not supported anymore. Update your Redis server to a version >= #{RECOMMENDED_REDIS_VERSION}"
status = false
elsif Gem::Version.new(redis_version) < Gem::Version.new(RECOMMENDED_REDIS_VERSION)
@custom_error_message = "Your Redis version #{redis_version} has reached end-of-life (EOL). Update your Redis server to a version >= #{RECOMMENDED_REDIS_VERSION}"
status = false
end
status
end
def show_error
try_fixing_it(
@custom_error_message
)
for_more_information(
'doc/administration/redis/index.html#redis-replication-and-failover-using-the-non-bundled-redis'
)
fix_and_rerun
end
end
end
end
|