debian-mirror-gitlab/lib/system_check/app/redis_version_check.rb

49 lines
1.6 KiB
Ruby
Raw Normal View History

2018-12-13 13:39:08 +05:30
# frozen_string_literal: true
2020-04-22 19:07:51 +05:30
require 'redis'
2017-09-10 17:25:29 +05:30
module SystemCheck
module App
class RedisVersionCheck < SystemCheck::BaseCheck
2021-04-29 21:17:54 +05:30
# Redis 4.x will be deprecated
# https://gitlab.com/gitlab-org/gitlab/-/issues/327197
2020-10-24 23:57:45 +05:30
MIN_REDIS_VERSION = '4.0.0'
2021-04-29 21:17:54 +05:30
RECOMMENDED_REDIS_VERSION = '5.0.0'
2020-04-22 19:07:51 +05:30
set_name "Redis version >= #{RECOMMENDED_REDIS_VERSION}?"
@custom_error_message = ''
2017-09-10 17:25:29 +05:30
def check?
2020-04-22 19:07:51 +05:30
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 = "Support for your Redis version #{redis_version} has been deprecated and will be removed soon. Update your Redis server to a version >= #{RECOMMENDED_REDIS_VERSION}"
status = false
end
2017-09-10 17:25:29 +05:30
2020-04-22 19:07:51 +05:30
status
2017-09-10 17:25:29 +05:30
end
def show_error
try_fixing_it(
2020-04-22 19:07:51 +05:30
@custom_error_message
2017-09-10 17:25:29 +05:30
)
for_more_information(
2021-01-03 14:25:43 +05:30
'doc/administration/redis/index.html#redis-replication-and-failover-using-the-non-bundled-redis'
2017-09-10 17:25:29 +05:30
)
fix_and_rerun
end
end
end
end