Add a circuit breaker for ActivityPub deliveries (#7053)
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user