From f499180bb3bc6703a006465dbd2c32c71c6113d2 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 26 Apr 2017 14:13:26 +0800 Subject: [PATCH] Add ENV variable to only allow Sidekiq scheduler to run on a particular host. --- config/initializers/100-sidekiq.rb | 31 ++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/config/initializers/100-sidekiq.rb b/config/initializers/100-sidekiq.rb index fee9a68ca05..79ab0a8e4b4 100644 --- a/config/initializers/100-sidekiq.rb +++ b/config/initializers/100-sidekiq.rb @@ -15,7 +15,6 @@ Sidekiq.configure_server do |config| end if Sidekiq.server? - # warm up AR RailsMultisite::ConnectionManagement.each_connection do (ActiveRecord::Base.connection.tables - %w[schema_migrations]).each do |table| @@ -24,20 +23,24 @@ if Sidekiq.server? end Rails.application.config.after_initialize do - require 'scheduler/scheduler' - manager = Scheduler::Manager.new - Scheduler::Manager.discover_schedules.each do |schedule| - manager.ensure_schedule!(schedule) - end - Thread.new do - while true - begin - manager.tick - rescue => e - # the show must go on - Discourse.handle_job_exception(e, {message: "While ticking scheduling manager"}) + scheduler_hostname = ENV["UNICORN_SCHEDULER_HOSTNAME"] + + if !scheduler_hostname || scheduler_hostname == `hostname`.strip + require 'scheduler/scheduler' + manager = Scheduler::Manager.new + Scheduler::Manager.discover_schedules.each do |schedule| + manager.ensure_schedule!(schedule) + end + Thread.new do + while true + begin + manager.tick + rescue => e + # the show must go on + Discourse.handle_job_exception(e, {message: "While ticking scheduling manager"}) + end + sleep 1 end - sleep 1 end end end