mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Discourse.keep_readonly_mode does not work for multisite.
This commit is contained in:
@@ -294,15 +294,24 @@ module Discourse
|
|||||||
def self.keep_readonly_mode(key)
|
def self.keep_readonly_mode(key)
|
||||||
# extend the expiry by 1 minute every 30 seconds
|
# extend the expiry by 1 minute every 30 seconds
|
||||||
unless Rails.env.test?
|
unless Rails.env.test?
|
||||||
|
@dbs ||= Set.new
|
||||||
|
@dbs << RailsMultisite::ConnectionManagement.current_db
|
||||||
@threads ||= {}
|
@threads ||= {}
|
||||||
|
|
||||||
active_thread = @threads[key]
|
unless @threads[key]&.alive?
|
||||||
|
|
||||||
unless active_thread&.alive?
|
|
||||||
@threads[key] = Thread.new do
|
@threads[key] = Thread.new do
|
||||||
while readonly_mode?(key)
|
while @dbs.size > 0
|
||||||
$redis.expire(key, READONLY_MODE_KEY_TTL)
|
@dbs.each do |db|
|
||||||
sleep 30.seconds
|
RailsMultisite::ConnectionManagement.with_connection(db) do
|
||||||
|
if readonly_mode?(key)
|
||||||
|
$redis.expire(key, READONLY_MODE_KEY_TTL)
|
||||||
|
else
|
||||||
|
@dbs.delete(db)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sleep 30
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user