]> cat aescling's git repositories - mastodon.git/commitdiff
Separate background jobs into different queues. ATTENTION: new queue "pull"
authorEugen Rochko <eugen@zeonfederated.com>
Mon, 3 Apr 2017 22:53:20 +0000 (00:53 +0200)
committerEugen Rochko <eugen@zeonfederated.com>
Mon, 3 Apr 2017 22:53:20 +0000 (00:53 +0200)
must be added to the Sidekiq invokation in your systemd file

The pull queue will handle link crawling, thread resolving, and OStatus
processing. Such tasks are more likely to hang for a longer time (due to
network requests) so it is more sensible to not make the "in-house" tasks
wait for them.

13 files changed:
app/workers/after_remote_follow_request_worker.rb
app/workers/after_remote_follow_worker.rb
app/workers/import_worker.rb
app/workers/link_crawl_worker.rb
app/workers/merge_worker.rb
app/workers/notification_worker.rb
app/workers/processing_worker.rb
app/workers/regeneration_worker.rb
app/workers/salmon_worker.rb
app/workers/thread_resolve_worker.rb
app/workers/unmerge_worker.rb
docker-compose.yml
docs/Running-Mastodon/Production-guide.md

index f1d6869cc74dcfa4e2bc393d93d99ed96b0a5218..1f2db3061571c9bdf7a473d598828d74b408af18 100644 (file)
@@ -3,7 +3,7 @@
 class AfterRemoteFollowRequestWorker
   include Sidekiq::Worker
 
-  sidekiq_options retry: 5
+  sidekiq_options queue: 'pull', retry: 5
 
   def perform(follow_request_id)
     follow_request  = FollowRequest.find(follow_request_id)
index 0d04456a94209581c992b18cfc18ed623865cb0e..bdd2c2a91df89b2d849ff211d6ec11267fbf9c90 100644 (file)
@@ -3,7 +3,7 @@
 class AfterRemoteFollowWorker
   include Sidekiq::Worker
 
-  sidekiq_options retry: 5
+  sidekiq_options queue: 'pull', retry: 5
 
   def perform(follow_id)
     follow          = Follow.find(follow_id)
index a3ae2a85a4987edbf7c7adc7ab5162ccbe4c6559..7cf29fb53c58d8db5f98b9693aa767856aad9f4c 100644 (file)
@@ -5,7 +5,7 @@ require 'csv'
 class ImportWorker
   include Sidekiq::Worker
 
-  sidekiq_options retry: false
+  sidekiq_options queue: 'pull', retry: false
 
   def perform(import_id)
     import = Import.find(import_id)
index af3394b8b33e71f83bb05d7ae42cf776b30add79..834b0088bdfd1993eb4cbbf68cbec2ac9d3cd624 100644 (file)
@@ -3,7 +3,7 @@
 class LinkCrawlWorker
   include Sidekiq::Worker
 
-  sidekiq_options retry: false
+  sidekiq_options queue: 'pull', retry: false
 
   def perform(status_id)
     FetchLinkCardService.new.call(Status.find(status_id))
index 0f288f43fe976a44a26b398297b3dc360dd1f83c..d745cb99c7b9aada475223d9250a0315dc0c6c5b 100644 (file)
@@ -3,6 +3,8 @@
 class MergeWorker
   include Sidekiq::Worker
 
+  sidekiq_options queue: 'pull'
+
   def perform(from_account_id, into_account_id)
     FeedManager.instance.merge_into_timeline(Account.find(from_account_id), Account.find(into_account_id))
   end
index 1a2faefd8e08da9ad3ccfee4055a4eea08c79641..da1d6ab455cbba498997f807bdd266857a26b702 100644 (file)
@@ -3,7 +3,7 @@
 class NotificationWorker
   include Sidekiq::Worker
 
-  sidekiq_options retry: 5
+  sidekiq_options queue: 'push', retry: 5
 
   def perform(xml, source_account_id, target_account_id)
     SendInteractionService.new.call(xml, Account.find(source_account_id), Account.find(target_account_id))
index 5df404bcc9b7bb3e653bbfb20d22482b9457c398..4a467d92446a2fc68589b9ab2e82ffaace7e0617 100644 (file)
@@ -3,7 +3,7 @@
 class ProcessingWorker
   include Sidekiq::Worker
 
-  sidekiq_options backtrace: true
+  sidekiq_options queue: 'pull', backtrace: true
 
   def perform(account_id, body)
     ProcessFeedService.new.call(body, Account.find(account_id))
index 3aece0ba28a63061bc5440f514111aaf74a6e8af..289b63d84a375d3d1ca75fae3c93c15e94fa19b8 100644 (file)
@@ -3,6 +3,8 @@
 class RegenerationWorker
   include Sidekiq::Worker
 
+  sidekiq_options queue: 'pull', backtrace: true
+
   def perform(account_id, timeline_type)
     PrecomputeFeedService.new.call(timeline_type, Account.find(account_id))
   end
index fc95ce47fff8477336571dfc4bcba205df70810a..2888b574b66093f47a8ccaadc51928b35f9ab021 100644 (file)
@@ -3,7 +3,7 @@
 class SalmonWorker
   include Sidekiq::Worker
 
-  sidekiq_options backtrace: true
+  sidekiq_options queue: 'pull', backtrace: true
 
   def perform(account_id, body)
     ProcessInteractionService.new.call(body, Account.find(account_id))
index 593edd032f2e62c06019912908c95f8cb28fab74..38287e8e64b683ae1dfa1538ffe165accd7d1aa8 100644 (file)
@@ -3,7 +3,7 @@
 class ThreadResolveWorker
   include Sidekiq::Worker
 
-  sidekiq_options retry: false
+  sidekiq_options queue: 'pull', retry: false
 
   def perform(child_status_id, parent_url)
     child_status  = Status.find(child_status_id)
index dbf7243de752584c1304346f9572f2d48fca1cce..ea6aacebf6df28fc7bad92bb8fc455661a16155e 100644 (file)
@@ -3,6 +3,8 @@
 class UnmergeWorker
   include Sidekiq::Worker
 
+  sidekiq_options queue: 'pull'
+
   def perform(from_account_id, into_account_id)
     FeedManager.instance.unmerge_from_timeline(Account.find(from_account_id), Account.find(into_account_id))
   end
index 68c8ef960e34d288e03401230a2404b1cf326ae9..d6ba66ddeb49927cb55e1fb878e1499db716fdb8 100644 (file)
@@ -33,7 +33,7 @@ services:
     restart: always
     build: .
     env_file: .env.production
-    command: bundle exec sidekiq -q default -q mailers -q push
+    command: bundle exec sidekiq -q default -q mailers -q pull -q push
     depends_on:
       - db
       - redis
index f0dd7bd2b595387b9cc27151a3d5671117bb8137..469fefa94355568d3dc0268deebeb50c7de09034 100644 (file)
@@ -180,7 +180,7 @@ User=mastodon
 WorkingDirectory=/home/mastodon/live
 Environment="RAILS_ENV=production"
 Environment="DB_POOL=5"
-ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 5 -q default -q mailers -q push
+ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push
 TimeoutSec=15
 Restart=always