From a9905ef7e523fa7e6b0adfdca0bf3537d39ba1d9 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Fri, 24 Jul 2020 17:09:29 +1000 Subject: [PATCH] FIX: Add enable_email_sync_demon global variable and disable EmailSync demon by default (#10304) Demon::EmailSync is used in conjunction with the SiteSetting.enable_imap to sync N IMAP mailboxes with specific groups. It is a process started in unicorn.conf, and it spawns N threads (one for each multisite connection) and for each database spans another N threads (one for each configured group). We want this off by default so the process is not started when it does not need to be (e.g. development, test, certain hosting tiers) --- config/discourse_defaults.conf | 9 +++++++++ config/unicorn.conf.rb | 18 +++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/config/discourse_defaults.conf b/config/discourse_defaults.conf index b714d8161e1..b71cffa3071 100644 --- a/config/discourse_defaults.conf +++ b/config/discourse_defaults.conf @@ -296,3 +296,12 @@ anon_cache_store_threshold = 2 # list is a comma seperated list of git repos eg: # https://github.com/discourse/discourse-custom-header-links.git,https://github.com/discourse/discourse-simple-theme.git whitelisted_theme_repos = + +# Demon::EmailSync is used in conjunction with the enable_imap site setting +# to sync N IMAP mailboxes with specific groups. It is a process started in +# unicorn.conf, and it spawns N threads (one for each multisite connection) and +# for each database spans another N threads (one for each configured group). +# +# We want this off by default so the process is not started when it does not +# need to be (e.g. development, test, certain hosting tiers) +enable_email_sync_demon = false diff --git a/config/unicorn.conf.rb b/config/unicorn.conf.rb index 7eb335f442d..ffa0f2c26fd 100644 --- a/config/unicorn.conf.rb +++ b/config/unicorn.conf.rb @@ -104,11 +104,13 @@ before_fork do |server, worker| end end - puts "Starting up email sync" - Demon::EmailSync.start - Signal.trap("SIGTSTP") do - STDERR.puts "#{Time.now}: Issuing stop to email_sync" - Demon::EmailSync.stop + if ENV['DISCOURSE_ENABLE_EMAIL_SYNC_DEMON'] == 'true' + puts "Starting up EmailSync demon" + Demon::EmailSync.start + Signal.trap("SIGTSTP") do + STDERR.puts "#{Time.now}: Issuing stop to EmailSync" + Demon::EmailSync.stop + end end class ::Unicorn::HttpServer @@ -223,8 +225,10 @@ before_fork do |server, worker| check_sidekiq_heartbeat end - Demon::EmailSync.ensure_running - check_email_sync_heartbeat + if ENV['DISCOURSE_ENABLE_EMAIL_SYNC_DEMON'] == 'true' + Demon::EmailSync.ensure_running + check_email_sync_heartbeat + end master_sleep_orig(sec) end