mirror of
https://github.com/discourse/discourse.git
synced 2025-06-03 19:39:30 +08:00
DEV: Install rails_failover
gem to test our Redis changes.
This commit is contained in:
2
Gemfile
2
Gemfile
@ -248,3 +248,5 @@ end
|
|||||||
gem 'webpush', require: false
|
gem 'webpush', require: false
|
||||||
gem 'colored2', require: false
|
gem 'colored2', require: false
|
||||||
gem 'maxminddb'
|
gem 'maxminddb'
|
||||||
|
|
||||||
|
gem 'rails_failover', require: false
|
||||||
|
@ -277,6 +277,8 @@ GEM
|
|||||||
nokogiri (>= 1.6)
|
nokogiri (>= 1.6)
|
||||||
rails-html-sanitizer (1.3.0)
|
rails-html-sanitizer (1.3.0)
|
||||||
loofah (~> 2.3)
|
loofah (~> 2.3)
|
||||||
|
rails_failover (0.1.0)
|
||||||
|
redis (~> 4)
|
||||||
rails_multisite (2.1.2)
|
rails_multisite (2.1.2)
|
||||||
activerecord (> 5.0, < 7)
|
activerecord (> 5.0, < 7)
|
||||||
railties (> 5.0, < 7)
|
railties (> 5.0, < 7)
|
||||||
@ -509,6 +511,7 @@ DEPENDENCIES
|
|||||||
rack (= 2.2.2)
|
rack (= 2.2.2)
|
||||||
rack-mini-profiler
|
rack-mini-profiler
|
||||||
rack-protection
|
rack-protection
|
||||||
|
rails_failover
|
||||||
rails_multisite
|
rails_multisite
|
||||||
railties (= 6.0.3)
|
railties (= 6.0.3)
|
||||||
rake
|
rake
|
||||||
|
@ -164,9 +164,15 @@ class GlobalSetting
|
|||||||
c[:port] = redis_port if redis_port
|
c[:port] = redis_port if redis_port
|
||||||
|
|
||||||
if redis_slave_host && redis_slave_port
|
if redis_slave_host && redis_slave_port
|
||||||
c[:slave_host] = redis_slave_host
|
if ENV["RAILS_FAILOVER"]
|
||||||
c[:slave_port] = redis_slave_port
|
c[:replica_host] = redis_slave_host
|
||||||
c[:connector] = DiscourseRedis::Connector
|
c[:replica_port] = redis_slave_port
|
||||||
|
c[:connector] = RailsFailover::Redis::Connector
|
||||||
|
else
|
||||||
|
c[:slave_host] = redis_slave_host
|
||||||
|
c[:slave_port] = redis_slave_port
|
||||||
|
c[:connector] = DiscourseRedis::Connector
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
c[:password] = redis_password if redis_password.present?
|
c[:password] = redis_password if redis_password.present?
|
||||||
@ -188,9 +194,15 @@ class GlobalSetting
|
|||||||
c[:port] = message_bus_redis_port if message_bus_redis_port
|
c[:port] = message_bus_redis_port if message_bus_redis_port
|
||||||
|
|
||||||
if message_bus_redis_slave_host && message_bus_redis_slave_port
|
if message_bus_redis_slave_host && message_bus_redis_slave_port
|
||||||
c[:slave_host] = message_bus_redis_slave_host
|
if ENV["RAILS_FAILOVER"]
|
||||||
c[:slave_port] = message_bus_redis_slave_port
|
c[:replica_host] = message_bus_redis_slave_host
|
||||||
c[:connector] = DiscourseRedis::Connector
|
c[:replica_port] = message_bus_redis_slave_port
|
||||||
|
c[:connector] = RailsFailover::Redis::Connector
|
||||||
|
else
|
||||||
|
c[:slave_host] = message_bus_redis_slave_host
|
||||||
|
c[:slave_port] = message_bus_redis_slave_port
|
||||||
|
c[:connector] = DiscourseRedis::Connector
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
c[:password] = message_bus_redis_password if message_bus_redis_password.present?
|
c[:password] = message_bus_redis_password if message_bus_redis_password.present?
|
||||||
|
@ -4,3 +4,20 @@ if Rails.env.development? && ENV['DISCOURSE_FLUSH_REDIS']
|
|||||||
puts "Flushing redis (development mode)"
|
puts "Flushing redis (development mode)"
|
||||||
Discourse.redis.flushdb
|
Discourse.redis.flushdb
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if ENV['RAILS_FAILOVER']
|
||||||
|
require 'rails_failover'
|
||||||
|
|
||||||
|
message_bus_keepalive_interval = MessageBus.keepalive_interval
|
||||||
|
|
||||||
|
RailsFailover::Redis.register_master_up_callback do
|
||||||
|
MessageBus.keepalive_interval = message_bus_keepalive_interval
|
||||||
|
Discourse.clear_readonly!
|
||||||
|
Discourse.request_refresh!
|
||||||
|
end
|
||||||
|
|
||||||
|
RailsFailover::Redis.register_master_down_callback do
|
||||||
|
# Disables MessageBus keepalive when Redis is in readonly mode
|
||||||
|
MessageBus.keepalive_interval = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Reference in New Issue
Block a user