commit: 657496b5a9488b904166c33764500b364e024679
parent: fd03a3d95731d479f19bc4894746027097b9e2a3
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Sun, 14 May 2017 03:22:48 +0200
Do not cancel PuSH subscriptions after encountering "permanent" error… (#3046)
* Do not cancel PuSH subscriptions after encountering "permanent" error response
After talking with MMN about it, turns out some servers/php setups do
return 4xx errors while rebooting, so this anti-feature that was meant
to take load off of the hub is doing more harm than good in terms of
breaking subscriptions
* Update delivery_worker.rb
Diffstat:
2 files changed, 3 insertions(+), 20 deletions(-)
diff --git a/app/workers/pubsubhubbub/delivery_worker.rb b/app/workers/pubsubhubbub/delivery_worker.rb
@@ -23,13 +23,9 @@ class Pubsubhubbub::DeliveryWorker
def process_delivery
payload_delivery
- if response_successful?
- subscription.touch(:last_successful_delivery_at)
- elsif response_failed_permanently?
- subscription.destroy!
- else
- raise "Delivery failed for #{subscription.callback_url}: HTTP #{payload_delivery.code}"
- end
+ raise "Delivery failed for #{subscription.callback_url}: HTTP #{payload_delivery.code}" unless response_successful?
+
+ subscription.touch(:last_successful_delivery_at)
end
def payload_delivery
@@ -82,10 +78,6 @@ class Pubsubhubbub::DeliveryWorker
OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), subscription.secret, payload)
end
- def response_failed_permanently?
- payload_delivery.code > 299 && payload_delivery.code < 500 && payload_delivery.code != 429
- end
-
def response_successful?
payload_delivery.code > 199 && payload_delivery.code < 300
end
diff --git a/spec/workers/pubsubhubbub/delivery_worker_spec.rb b/spec/workers/pubsubhubbub/delivery_worker_spec.rb
@@ -22,15 +22,6 @@ describe Pubsubhubbub::DeliveryWorker do
expect(subscription.reload.last_successful_delivery_at).to be_within(2).of(2.days.ago)
end
- it 'destroys subscription when request fails permanently' do
- subscription = Fabricate(:subscription)
-
- stub_request_to_respond_with(subscription, 404)
- subject.perform(subscription.id, payload)
-
- expect { subscription.reload }.to raise_error(ActiveRecord::RecordNotFound)
- end
-
it 'raises when request fails' do
subscription = Fabricate(:subscription)