about summary refs log tree commit diff
path: root/app/workers/scheduler/follow_recommendations_scheduler.rb
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2021-05-05 22:04:52 +0200
committerGitHub <noreply@github.com>2021-05-05 22:04:52 +0200
commitd9ae3db8d5543cf0b7fa44186c191c9bb2472d23 (patch)
tree512309009b33d99557dbfbc7d2513b1b3792bf60 /app/workers/scheduler/follow_recommendations_scheduler.rb
parent351c74459084ccffce1333b57c2af9a6b55cac8d (diff)
Improve performance of follow recommendation scheduler (#16159)
Express follow_recommendations in terms of account_summaries rather than
accounts, integrate filters that are unconditionally used, and materialize
the resulting view.

This should result in the bulk of the computation being performed only once
instead of **once per recommendation language**.
Diffstat (limited to 'app/workers/scheduler/follow_recommendations_scheduler.rb')
-rw-r--r--app/workers/scheduler/follow_recommendations_scheduler.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/app/workers/scheduler/follow_recommendations_scheduler.rb b/app/workers/scheduler/follow_recommendations_scheduler.rb
index 0a0286496..cb1e15961 100644
--- a/app/workers/scheduler/follow_recommendations_scheduler.rb
+++ b/app/workers/scheduler/follow_recommendations_scheduler.rb
@@ -14,13 +14,14 @@ class Scheduler::FollowRecommendationsScheduler
   def perform
     # Maintaining a materialized view speeds-up subsequent queries significantly
     AccountSummary.refresh
+    FollowRecommendation.refresh
 
-    fallback_recommendations = FollowRecommendation.safe.filtered.limit(SET_SIZE).index_by(&:account_id)
+    fallback_recommendations = FollowRecommendation.limit(SET_SIZE).index_by(&:account_id)
 
     I18n.available_locales.each do |locale|
       recommendations = begin
         if AccountSummary.safe.filtered.localized(locale).exists? # We can skip the work if no accounts with that language exist
-          FollowRecommendation.safe.filtered.localized(locale).limit(SET_SIZE).index_by(&:account_id)
+          FollowRecommendation.localized(locale).limit(SET_SIZE).index_by(&:account_id)
         else
           {}
         end