From 657496b5a9488b904166c33764500b364e024679 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 14 May 2017 03:22:48 +0200 Subject: [PATCH] =?UTF-8?q?Do=20not=20cancel=20PuSH=20subscriptions=20afte?= =?UTF-8?q?r=20encountering=20"permanent"=20error=E2=80=A6=20(#3046)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- app/workers/pubsubhubbub/delivery_worker.rb | 14 +++----------- spec/workers/pubsubhubbub/delivery_worker_spec.rb | 9 --------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/app/workers/pubsubhubbub/delivery_worker.rb b/app/workers/pubsubhubbub/delivery_worker.rb index 708a5fb9f..981838f33 100644 --- 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 index ec1e319d5..081dfa41c 100644 --- 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)