about summary refs log tree commit diff
path: root/app/models/home_feed.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-10-06 22:11:17 +0200
committerGitHub <noreply@github.com>2019-10-06 22:11:17 +0200
commitf665901e3c0930fb8b3741f6bc6f6a15dd0343f6 (patch)
tree1cd9cd66d5af6d23ac5ef834fd85ad9b803c1f99 /app/models/home_feed.rb
parentefda126914bf409ca07a9446415b508811a58022 (diff)
Fix performance of home feed regeneration (#12084)
Fetching statuses from all followed accounts at once takes too long
within Postgres. Fetching them one by one and merging in Ruby
could be a lot less resource-intensive

Because the query for dynamically fetching the home timeline is so
heavy, we can no longer offer it when the home timeline is missing
Diffstat (limited to 'app/models/home_feed.rb')
-rw-r--r--app/models/home_feed.rb16
1 files changed, 2 insertions, 14 deletions
diff --git a/app/models/home_feed.rb b/app/models/home_feed.rb
index ba7564983..1fd506138 100644
--- a/app/models/home_feed.rb
+++ b/app/models/home_feed.rb
@@ -7,19 +7,7 @@ class HomeFeed < Feed
     @account = account
   end
 
-  def get(limit, max_id = nil, since_id = nil, min_id = nil)
-    if redis.exists("account:#{@account.id}:regeneration")
-      from_database(limit, max_id, since_id, min_id)
-    else
-      super
-    end
-  end
-
-  private
-
-  def from_database(limit, max_id, since_id, min_id)
-    Status.as_home_timeline(@account)
-          .paginate_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id)
-          .reject { |status| FeedManager.instance.filter?(:home, status, @account.id) }
+  def regenerating?
+    redis.exists("account:#{@id}:regeneration")
   end
 end