DEV: Upgrade Redis to 4.2.1.

This commit is contained in:
Guo Xiang Tan 2020-06-15 09:57:44 +08:00
parent 1303e89a72
commit 0ff86b00cb
No known key found for this signature in database
GPG Key ID: FBD110179AAC1F20
7 changed files with 12 additions and 40 deletions

View File

@ -310,7 +310,7 @@ GEM
msgpack (>= 0.4.3) msgpack (>= 0.4.3)
optimist (>= 3.0.0) optimist (>= 3.0.0)
rchardet (1.8.0) rchardet (1.8.0)
redis (4.1.4) redis (4.2.1)
redis-namespace (1.7.0) redis-namespace (1.7.0)
redis (>= 3.0.4) redis (>= 3.0.4)
regexp_parser (1.7.1) regexp_parser (1.7.1)

View File

@ -70,7 +70,7 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"]
end end
RailsFailover::ActiveRecord.register_force_reading_role_callback do RailsFailover::ActiveRecord.register_force_reading_role_callback do
Discourse.redis.exists( Discourse.redis.exists?(
Discourse::PG_READONLY_MODE_KEY, Discourse::PG_READONLY_MODE_KEY,
Discourse::PG_FORCE_READONLY_MODE_KEY Discourse::PG_FORCE_READONLY_MODE_KEY
) )

View File

@ -43,7 +43,7 @@ class AdminConfirmation
end end
def self.exists_for?(user_id) def self.exists_for?(user_id)
Discourse.redis.exists "admin-confirmation:#{user_id}" Discourse.redis.exists? "admin-confirmation:#{user_id}"
end end
def self.find_by_code(token) def self.find_by_code(token)

View File

@ -56,7 +56,7 @@ class Cache
def exist?(name) def exist?(name)
key = normalize_key(name) key = normalize_key(name)
redis.exists(key) redis.exists?(key)
end end
# this removes a bunch of stuff we do not need like instrumentation and versioning # this removes a bunch of stuff we do not need like instrumentation and versioning

View File

@ -487,7 +487,7 @@ module Discourse
end end
def self.readonly_mode?(keys = READONLY_KEYS) def self.readonly_mode?(keys = READONLY_KEYS)
recently_readonly? || Discourse.redis.exists(*keys) recently_readonly? || Discourse.redis.exists?(*keys)
end end
def self.pg_readonly_mode? def self.pg_readonly_mode?

View File

@ -207,17 +207,14 @@ class DiscourseRedis
end end
end end
# Implement our own because https://github.com/redis/redis-rb/issues/698 has stalled def exists(*args)
def exists(*keys) args.map! { |a| "#{namespace}:#{a}" } if @namespace
keys.map! { |a| "#{namespace}:#{a}" } if @namespace DiscourseRedis.ignore_readonly { @redis.exists(*args) }
end
DiscourseRedis.ignore_readonly do def exists?(*args)
@redis.synchronize do |client| args.map! { |a| "#{namespace}:#{a}" } if @namespace
client.call([:exists, *keys]) do |value| DiscourseRedis.ignore_readonly { @redis.exists?(*args) }
value > 0
end
end
end
end end
def mget(*args) def mget(*args)

View File

@ -87,31 +87,6 @@ describe DiscourseRedis do
expect(Discourse.recently_readonly?).to eq(true) expect(Discourse.recently_readonly?).to eq(true)
end end
end end
describe '.exists' do
it 'should return false when key is not present' do
expect(Discourse.redis.exists('test')).to eq(false)
end
it 'should return false when keys are not present' do
expect(Discourse.redis.exists('test', 'test2')).to eq(false)
end
it 'should return true when key is present' do
Discourse.redis.set('test', 1)
expect(Discourse.redis.exists('test')).to eq(true)
end
it 'should return true when any key is present' do
Discourse.redis.set('test', 1)
Discourse.redis.set('test2', 1)
expect(Discourse.redis.exists('test')).to eq(true)
expect(Discourse.redis.exists('test', 'test2')).to eq(true)
expect(Discourse.redis.exists('test2', 'test3')).to eq(true)
end
end
end end
context '.slave_host' do context '.slave_host' do