0
0
Fork 0

Do not push status to feed if its reblog is already inserted (#6488)

A complemental change for precompute_feed_service_spec.rb also fixes its
random failure which is caused by the Snowlake randomization of the order
of an original status and its reblog.
This commit is contained in:
Akihiko Odaki 2018-02-24 13:40:18 +09:00 committed by Eugen Rochko
parent e668180044
commit f8f0572ee0
4 changed files with 45 additions and 7 deletions

View file

@ -220,6 +220,14 @@ class FeedManager
return false
end
else
# A reblog may reach earlier than the original status because of the
# delay of the worker deliverying the original status, the late addition
# by merging timelines, and other reasons.
# If such a reblog already exists, just do not re-insert it into the feed.
rank = redis.zrevrank(reblog_key, status.id)
return false unless rank.nil?
redis.zadd(timeline_key, status.id, status.id)
end