Add a circuit breaker for ActivityPub deliveries (#7053)
This commit is contained in:
parent
4a9becfca2
commit
d4de2239b0
4 changed files with 16 additions and 5 deletions
|
@ -12,9 +12,7 @@ class ActivityPub::DeliveryWorker
|
|||
@source_account = Account.find(source_account_id)
|
||||
@inbox_url = inbox_url
|
||||
|
||||
perform_request do |response|
|
||||
raise Mastodon::UnexpectedResponseError, response unless response_successful? response
|
||||
end
|
||||
perform_request
|
||||
|
||||
failure_tracker.track_success!
|
||||
rescue => e
|
||||
|
@ -30,8 +28,14 @@ class ActivityPub::DeliveryWorker
|
|||
request.add_headers(HEADERS)
|
||||
end
|
||||
|
||||
def perform_request(&block)
|
||||
build_request.perform(&block)
|
||||
def perform_request
|
||||
light = Stoplight(@inbox_url) do
|
||||
build_request.perform do |response|
|
||||
raise Mastodon::UnexpectedResponseError, response unless response_successful?(response)
|
||||
end
|
||||
end
|
||||
|
||||
light.run
|
||||
end
|
||||
|
||||
def response_successful?(response)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue