]> cat aescling's git repositories - mastodon.git/commitdiff
Fix regeneration marker not expiring (#6290)
authorEugen Rochko <eugen@zeonfederated.com>
Thu, 18 Jan 2018 19:29:56 +0000 (20:29 +0100)
committerGitHub <noreply@github.com>
Thu, 18 Jan 2018 19:29:56 +0000 (20:29 +0100)
* Fix regeneration key not getting expired

* Add rake task to remove old regeneration markers

app/controllers/concerns/user_tracking_concern.rb
lib/tasks/mastodon.rake
spec/controllers/concerns/user_tracking_concern_spec.rb

index 1e3132941110fe5c472ab6832242d859aa1b16d8..a2510e55fea95e2c90f76c77d1f8082b593cc118 100644 (file)
@@ -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
index 38dbed982a6abc587304d10d0f281e169f143dc4..486c035de05067aa778282380ad85dac56ee46af 100644 (file)
@@ -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!
index d08095ef8272b2e3233a860138d612186ec34133..1e5620221195c0ebb61ab3831c0f0c5a45eb12e1 100644 (file)
@@ -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