]> cat aescling's git repositories - mastodon.git/commitdiff
Use multiple pairs for zadd in PrecomputeFeedService (#3990)
authorAkihiko Odaki (@fn_aki@pawoo.net) <akihiko.odaki.4i@stu.hosei.ac.jp>
Wed, 28 Jun 2017 23:25:31 +0000 (08:25 +0900)
committerEugen Rochko <eugen@zeonfederated.com>
Wed, 28 Jun 2017 23:25:31 +0000 (01:25 +0200)
app/services/precompute_feed_service.rb

index 4c24567c8bdb004525ab14197d3f690b79d462c1..e2f6ff0cb8467db46aff08a36af4d28a58d8f238 100644 (file)
@@ -13,21 +13,16 @@ class PrecomputeFeedService < BaseService
   attr_reader :account
 
   def populate_feed
-    redis.pipelined do
-      statuses.reverse_each do |status|
-        process_status(status)
-      end
+    pairs = statuses.reverse_each.map(&method(:process_status))
 
+    redis.pipelined do
+      redis.zadd(account_home_key, pairs)
       redis.del("account:#{@account.id}:regeneration")
     end
   end
 
   def process_status(status)
-    add_status_to_feed(status) unless status_filtered?(status)
-  end
-
-  def add_status_to_feed(status)
-    redis.zadd(account_home_key, status.id, status.reblog? ? status.reblog_of_id : status.id)
+    [status.id, status.reblog? ? status.reblog_of_id : status.id] unless status_filtered?(status)
   end
 
   def status_filtered?(status)