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:
parent
4c23544714
commit
6e9eda5331
8 changed files with 47 additions and 8 deletions
15
app/workers/activitypub/post_upgrade_worker.rb
Normal file
15
app/workers/activitypub/post_upgrade_worker.rb
Normal 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
|
15
app/workers/pubsubhubbub/unsubscribe_worker.rb
Normal file
15
app/workers/pubsubhubbub/unsubscribe_worker.rb
Normal 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
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue