Disable MessageBus's keepalive when Redis is readonly.
This commit is contained in:
parent
bd0efb8525
commit
7d5b6e2b3c
|
@ -15,6 +15,7 @@ class DiscourseRedis
|
||||||
@mutex = Mutex.new
|
@mutex = Mutex.new
|
||||||
@slave_config = DiscourseRedis.slave_config
|
@slave_config = DiscourseRedis.slave_config
|
||||||
@timer_task = init_timer_task
|
@timer_task = init_timer_task
|
||||||
|
@message_bus_keepalive_interval = MessageBus.keepalive_interval
|
||||||
end
|
end
|
||||||
|
|
||||||
def verify_master
|
def verify_master
|
||||||
|
@ -41,6 +42,7 @@ class DiscourseRedis
|
||||||
slave_client.call([:client, [:kill, 'type', connection_type]])
|
slave_client.call([:client, [:kill, 'type', connection_type]])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
MessageBus.keepalive_interval = @message_bus_keepalive_interval
|
||||||
Discourse.clear_readonly!
|
Discourse.clear_readonly!
|
||||||
Discourse.request_refresh!
|
Discourse.request_refresh!
|
||||||
success = true
|
success = true
|
||||||
|
@ -57,7 +59,12 @@ class DiscourseRedis
|
||||||
end
|
end
|
||||||
|
|
||||||
def master=(args)
|
def master=(args)
|
||||||
synchronize { @master = args }
|
synchronize do
|
||||||
|
@master = args
|
||||||
|
|
||||||
|
# Disables MessageBus keepalive when Redis is in readonly mode
|
||||||
|
MessageBus.keepalive_interval = 0 if !@master
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def running?
|
def running?
|
||||||
|
|
|
@ -99,7 +99,9 @@ describe DiscourseRedis do
|
||||||
it 'should return the right value if the master server is still down' do
|
it 'should return the right value if the master server is still down' do
|
||||||
fallback_handler.master = false
|
fallback_handler.master = false
|
||||||
Redis::Client.any_instance.expects(:call).with([:info]).returns("Some other stuff")
|
Redis::Client.any_instance.expects(:call).with([:info]).returns("Some other stuff")
|
||||||
|
|
||||||
expect(fallback_handler.initiate_fallback_to_master).to eq(false)
|
expect(fallback_handler.initiate_fallback_to_master).to eq(false)
|
||||||
|
expect(MessageBus.keepalive_interval).to eq(0)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should fallback to the master server once it is up' do
|
it 'should fallback to the master server once it is up' do
|
||||||
|
@ -113,6 +115,7 @@ describe DiscourseRedis do
|
||||||
expect(fallback_handler.initiate_fallback_to_master).to eq(true)
|
expect(fallback_handler.initiate_fallback_to_master).to eq(true)
|
||||||
expect(fallback_handler.master).to eq(true)
|
expect(fallback_handler.master).to eq(true)
|
||||||
expect(Discourse.recently_readonly?).to eq(false)
|
expect(Discourse.recently_readonly?).to eq(false)
|
||||||
|
expect(MessageBus.keepalive_interval).to eq(-1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue