logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 60b2b56d380c7cd3dc0ba54f4650cfdba568e38e
parent: b6a19e7b89fb4b32f35e810580a5aea7ff87addd
Author: Akihiko Odaki (@fn_aki@pawoo.net) <akihiko.odaki.4i@stu.hosei.ac.jp>
Date:   Thu, 29 Jun 2017 08:17:26 +0900

Reduce number of commands in FeedManager#trim (#3989)


Diffstat:

Mapp/lib/feed_manager.rb4+---
Mspec/lib/feed_manager_spec.rb13+++++++++++++
2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb @@ -38,9 +38,7 @@ class FeedManager end def trim(type, account_id) - return unless redis.zcard(key(type, account_id)) > FeedManager::MAX_ITEMS - last = redis.zrevrange(key(type, account_id), FeedManager::MAX_ITEMS - 1, FeedManager::MAX_ITEMS - 1) - redis.zremrangebyscore(key(type, account_id), '-inf', "(#{last.last}") + redis.zremrangebyrank(key(type, account_id), '0', (-(FeedManager::MAX_ITEMS + 1)).to_s) end def push_update_required?(timeline_type, account_id) diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb @@ -131,4 +131,17 @@ RSpec.describe FeedManager do end end end + + describe '#push' do + it 'trims timelines if they will have more than FeedManager::MAX_ITEMS' do + account = Fabricate(:account) + status = Fabricate(:status) + members = FeedManager::MAX_ITEMS.times.map { |count| [count, count] } + Redis.current.zadd("feed:type:#{account.id}", members) + + FeedManager.instance.push('type', account, status) + + expect(Redis.current.zcard("feed:type:#{account.id}")).to eq FeedManager::MAX_ITEMS + end + end end