ActivityPub migration procedure (#4617)

* ActivityPub migration procedure

Once one account is detected as going from OStatus to ActivityPub,
invalidate WebFinger cache for other accounts from the same domain

* Unsubscribe from PuSH updates once we receive an ActivityPub payload

* Re-subscribe to PuSH unless already unsubscribed, regardless of protocol
This commit is contained in:
Eugen Rochko 2017-08-21 01:14:40 +02:00 committed by GitHub
parent 4c23544714
commit 6e9eda5331
8 changed files with 47 additions and 8 deletions

View file

@ -0,0 +1,15 @@
# frozen_string_literal: true
class ActivityPub::PostUpgradeWorker
include Sidekiq::Worker
sidekiq_options queue: 'pull'
def perform(domain)
Account.where(domain: domain)
.where(protocol: :ostatus)
.where.not(last_webfingered_at: nil)
.in_batches
.update_all(last_webfingered_at: nil)
end
end

View file

@ -0,0 +1,15 @@
# frozen_string_literal: true
class Pubsubhubbub::UnsubscribeWorker
include Sidekiq::Worker
sidekiq_options queue: 'push', retry: false, unique: :until_executed, dead: false
def perform(account_id)
account = Account.find(account_id)
logger.debug "PuSH unsubscribing from #{account.acct}"
::UnsubscribeService.new.call(account)
rescue ActiveRecord::RecordNotFound
true
end
end

View file

@ -14,6 +14,6 @@ class Scheduler::SubscriptionsScheduler
private
def expiring_accounts
Account.where(protocol: :ostatus).expiring(1.day.from_now).partitioned
Account.expiring(1.day.from_now).partitioned
end
end