Skip to content

Commit

Permalink
Fix regeneration marker not expiring (mastodon#6290)
Browse files Browse the repository at this point in the history
* Fix regeneration key not getting expired

* Add rake task to remove old regeneration markers
  • Loading branch information
Gargron authored Jan 18, 2018
1 parent d799921 commit 9b3b40d
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 1 deletion.
2 changes: 1 addition & 1 deletion app/controllers/concerns/user_tracking_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def user_needs_feed_update?
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
9 changes: 9 additions & 0 deletions lib/tasks/mastodon.rake
Original file line number Diff line number Diff line change
Expand Up @@ -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!
Expand Down
6 changes: 6 additions & 0 deletions spec/controllers/concerns/user_tracking_concern_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ def show
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

Expand Down

0 comments on commit 9b3b40d

Please sign in to comment.