Change delivery failure tracking to work with hostnames instead of URLs (#13437)

This commit is contained in:
Eugen Rochko 2020-04-15 20:33:24 +02:00 committed by GitHub
parent 5524258da9
commit 5edff32733
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 103 additions and 44 deletions

View file

@ -413,7 +413,7 @@ class Account < ApplicationRecord
def inboxes
urls = reorder(nil).where(protocol: :activitypub).pluck(Arel.sql("distinct coalesce(nullif(accounts.shared_inbox_url, ''), accounts.inbox_url)"))
DeliveryFailureTracker.filter(urls)
DeliveryFailureTracker.without_unavailable(urls)
end
def search_for(terms, limit = 10, offset = 0)

View file

@ -14,7 +14,7 @@
# created_at :datetime not null
# updated_at :datetime not null
# published_at :datetime
# status_ids :bigint is an Array
# status_ids :bigint(8) is an Array
#
class Announcement < ApplicationRecord

View file

@ -27,7 +27,7 @@ class Relay < ApplicationRecord
payload = Oj.dump(follow_activity(activity_id))
update!(state: :pending, follow_activity_id: activity_id)
DeliveryFailureTracker.new(inbox_url).track_success!
DeliveryFailureTracker.track_success!(inbox_url)
ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url)
end
@ -36,7 +36,7 @@ class Relay < ApplicationRecord
payload = Oj.dump(unfollow_activity(activity_id))
update!(state: :idle, follow_activity_id: nil)
DeliveryFailureTracker.new(inbox_url).track_success!
DeliveryFailureTracker.track_success!(inbox_url)
ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url)
end

View file

@ -0,0 +1,22 @@
# frozen_string_literal: true
# == Schema Information
#
# Table name: unavailable_domains
#
# id :bigint(8) not null, primary key
# domain :string default(""), not null
# created_at :datetime not null
# updated_at :datetime not null
#
class UnavailableDomain < ApplicationRecord
include DomainNormalizable
after_commit :reset_cache!
private
def reset_cache!
Rails.cache.delete('unavailable_domains')
end
end