logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 9b3b40df660d90fddb7563def4fab9b5cee701e9
parent: d799921c75e7bfb83504bb79dcc1c269c91d168c
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Thu, 18 Jan 2018 20:29:56 +0100

Fix regeneration marker not expiring (#6290)

* Fix regeneration key not getting expired

* Add rake task to remove old regeneration markers

Diffstat:

Mapp/controllers/concerns/user_tracking_concern.rb2+-
Mlib/tasks/mastodon.rake9+++++++++
Mspec/controllers/concerns/user_tracking_concern_spec.rb6++++++
3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/app/controllers/concerns/user_tracking_concern.rb b/app/controllers/concerns/user_tracking_concern.rb @@ -32,7 +32,7 @@ module UserTrackingConcern end def regenerate_feed! - Redis.current.setnx("account:#{current_user.account_id}:regeneration", true) == 1 && Redis.current.expire("account:#{current_user.account_id}:regeneration", 3_600 * 24) + Redis.current.setnx("account:#{current_user.account_id}:regeneration", true) && Redis.current.expire("account:#{current_user.account_id}:regeneration", 1.day.seconds) RegenerationWorker.perform_async(current_user.account_id) end end diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake @@ -341,6 +341,15 @@ namespace :mastodon do LinkCrawlWorker.push_bulk status_ids end + desc 'Remove all home feed regeneration markers' + task remove_regeneration_markers: :environment do + keys = Redis.current.keys('account:*:regeneration') + + Redis.current.pipelined do + keys.each { |key| Redis.current.del(key) } + end + end + desc 'Check every known remote account and delete those that no longer exist in origin' task purge_removed_accounts: :environment do prepare_for_options! diff --git a/spec/controllers/concerns/user_tracking_concern_spec.rb b/spec/controllers/concerns/user_tracking_concern_spec.rb @@ -69,6 +69,12 @@ describe ApplicationController, type: :controller do expect(RegenerationWorker).to have_received(:perform_async) end + it 'sets the regeneration marker to expire' do + allow(RegenerationWorker).to receive(:perform_async) + get :show + expect(Redis.current.ttl("account:#{user.account_id}:regeneration")).to be >= 0 + end + it 'regenerates feed when sign in is older than two weeks' do get :show