diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2018-01-18 20:29:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-18 20:29:56 +0100 |
commit | 9b3b40df660d90fddb7563def4fab9b5cee701e9 (patch) | |
tree | 533d983eb41e1f454c9931ba9171ce0ddc04c96f | |
parent | d799921c75e7bfb83504bb79dcc1c269c91d168c (diff) |
Fix regeneration marker not expiring (#6290)
* Fix regeneration key not getting expired * Add rake task to remove old regeneration markers
-rw-r--r-- | app/controllers/concerns/user_tracking_concern.rb | 2 | ||||
-rw-r--r-- | lib/tasks/mastodon.rake | 9 | ||||
-rw-r--r-- | spec/controllers/concerns/user_tracking_concern_spec.rb | 6 |
3 files changed, 16 insertions, 1 deletions
diff --git a/app/controllers/concerns/user_tracking_concern.rb b/app/controllers/concerns/user_tracking_concern.rb index 1e3132941..a2510e55f 100644 --- 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 index 38dbed982..486c035de 100644 --- 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 index d08095ef8..1e5620221 100644 --- 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 |