forked from fedi/mastodon
Fix regeneration marker not expiring (#6290)
* Fix regeneration key not getting expired * Add rake task to remove old regeneration markers
This commit is contained in:
parent
d799921c75
commit
9b3b40df66
|
@ -32,7 +32,7 @@ module UserTrackingConcern
|
||||||
end
|
end
|
||||||
|
|
||||||
def regenerate_feed!
|
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)
|
RegenerationWorker.perform_async(current_user.account_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -341,6 +341,15 @@ namespace :mastodon do
|
||||||
LinkCrawlWorker.push_bulk status_ids
|
LinkCrawlWorker.push_bulk status_ids
|
||||||
end
|
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'
|
desc 'Check every known remote account and delete those that no longer exist in origin'
|
||||||
task purge_removed_accounts: :environment do
|
task purge_removed_accounts: :environment do
|
||||||
prepare_for_options!
|
prepare_for_options!
|
||||||
|
|
|
@ -69,6 +69,12 @@ describe ApplicationController, type: :controller do
|
||||||
expect(RegenerationWorker).to have_received(:perform_async)
|
expect(RegenerationWorker).to have_received(:perform_async)
|
||||||
end
|
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
|
it 'regenerates feed when sign in is older than two weeks' do
|
||||||
get :show
|
get :show
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue