From 9b4fd0b26bbb68f2b8ab58914389759c9c46eda3 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 11 Oct 2017 18:46:53 +1100 Subject: [PATCH] correct multisite issues with scheduler --- config/initializers/100-sidekiq.rb | 2 +- lib/scheduler/manager.rb | 17 +++++++++++------ lib/scheduler/schedule_info.rb | 4 ++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/config/initializers/100-sidekiq.rb b/config/initializers/100-sidekiq.rb index efde7360128..a45ec085f77 100644 --- a/config/initializers/100-sidekiq.rb +++ b/config/initializers/100-sidekiq.rb @@ -25,7 +25,7 @@ if Sidekiq.server? if !scheduler_hostname || scheduler_hostname.split(',').include?(`hostname`.strip) require 'scheduler/scheduler' - manager = Scheduler::Manager.new + manager = Scheduler::Manager.new($redis.without_namespace) Scheduler::Manager.discover_schedules.each do |schedule| manager.ensure_schedule!(schedule) end diff --git a/lib/scheduler/manager.rb b/lib/scheduler/manager.rb index 6b6cf9fd0e9..1d1c2fd9c1d 100644 --- a/lib/scheduler/manager.rb +++ b/lib/scheduler/manager.rb @@ -106,12 +106,17 @@ module Scheduler info.prev_result = failed ? "FAILED" : "OK" info.current_owner = nil if stat - stat.update!( - duration_ms: duration, - live_slots_finish: GC.stat[:heap_live_slots], - success: !failed, - error: error - ) + begin + RailsMultisite::ConnectionManagement.establish_connection(db: "default") + stat.update!( + duration_ms: duration, + live_slots_finish: GC.stat[:heap_live_slots], + success: !failed, + error: error + ) + ensure + ActiveRecord::Base.connection_handler.clear_active_connections! + end end attempts(3) do @mutex.synchronize { info.write! } diff --git a/lib/scheduler/schedule_info.rb b/lib/scheduler/schedule_info.rb index fb7a3ad34a5..d9348b2ea6b 100644 --- a/lib/scheduler/schedule_info.rb +++ b/lib/scheduler/schedule_info.rb @@ -12,7 +12,7 @@ module Scheduler data = nil - if data = $redis.get(key) + if data = @manager.redis.get(key) data = JSON.parse(data) end @@ -100,7 +100,7 @@ module Scheduler current_owner: @current_owner }.to_json - redis.zadd queue_key, @next_run , @klass if @next_run + redis.zadd queue_key, @next_run, @klass if @next_run end def del!