FIX: Add enable_email_sync_demon global variable and disable EmailSync demon by default (#10304)

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)

diff --git a/config/discourse_defaults.conf b/config/discourse_defaults.conf
index b714d81..b71cffa 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 7eb335f..ffa0f2c 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

GitHub sha: a9905ef7

1 Like

This commit appears in #10304 which was merged by martin.