diff --git a/config/discourse_defaults.conf b/config/discourse_defaults.conf index b714d8161e..b71cffa307 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 7eb335f442..ffa0f2c26f 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