diff options
author | David Yip <yipdw@member.fsf.org> | 2017-10-18 11:52:04 -0500 |
---|---|---|
committer | David Yip <yipdw@member.fsf.org> | 2017-10-18 11:52:04 -0500 |
commit | 42e8c8eb0e9964d157ac160b3f816e58a771f045 (patch) | |
tree | c3f044eacc21ff65d9cb1bf20d111aaff6c86074 /app/workers/scheduler/feed_cleanup_scheduler.rb | |
parent | 4421f6598f5883908fb25743977306f19a0b0f0f (diff) | |
parent | 09d81defcda96eae7ffba36ccf1fb091ce08f17b (diff) |
Merge tag 'v2.0.0' into gs-master
Diffstat (limited to 'app/workers/scheduler/feed_cleanup_scheduler.rb')
-rw-r--r-- | app/workers/scheduler/feed_cleanup_scheduler.rb | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/app/workers/scheduler/feed_cleanup_scheduler.rb b/app/workers/scheduler/feed_cleanup_scheduler.rb index 222f5ed84..cfa2d31a4 100644 --- a/app/workers/scheduler/feed_cleanup_scheduler.rb +++ b/app/workers/scheduler/feed_cleanup_scheduler.rb @@ -5,18 +5,36 @@ class Scheduler::FeedCleanupScheduler include Sidekiq::Worker def perform + reblogged_id_sets = {} + feedmanager = FeedManager.instance + + redis.pipelined do + inactive_user_ids.each do |account_id| + redis.del(feedmanager.key(:home, account_id)) + reblog_key = feedmanager.key(:home, account_id, 'reblogs') + # We collect a future for this: we don't block while getting + # it, but we can iterate over it later. + reblogged_id_sets[account_id] = redis.zrange(reblog_key, 0, -1) + redis.del(reblog_key) + end + end + + # Remove all of the reblog tracking keys we just removed the + # references to. redis.pipelined do - inactive_users.each do |account_id| - redis.del(FeedManager.instance.key(:home, account_id)) - redis.del(FeedManager.instance.key(:home, account_id, 'reblogs')) + reblogged_id_sets.each do |account_id, future| + future.value.each do |reblogged_id| + reblog_set_key = feedmanager.key(:home, account_id, "reblogs:#{reblogged_id}") + redis.del(reblog_set_key) + end end end end private - def inactive_users - @inactive_users ||= User.confirmed.inactive.pluck(:account_id) + def inactive_user_ids + @inactive_user_ids ||= User.confirmed.inactive.pluck(:account_id) end def redis |