From 5ad890487fcab2f1809d638358f4c982d765d3a4 Mon Sep 17 00:00:00 2001 From: Pablo Cantero Date: Mon, 10 Apr 2017 14:26:37 -0400 Subject: [PATCH] Auto log processor errors Fix #352 --- lib/shoryuken/manager.rb | 5 +++++ lib/shoryuken/processor.rb | 3 +++ spec/shoryuken/processor_spec.rb | 2 ++ 3 files changed, 10 insertions(+) diff --git a/lib/shoryuken/manager.rb b/lib/shoryuken/manager.rb index 978b49b5..0e121ab6 100644 --- a/lib/shoryuken/manager.rb +++ b/lib/shoryuken/manager.rb @@ -47,6 +47,11 @@ def stop(options = {}) end end + def processor_failed(ex) + logger.error ex + logger.error ex.backtrace.join("\n") unless ex.backtrace.nil? + end + def processor_done(queue) logger.debug { "Process done for '#{queue}'" } end diff --git a/lib/shoryuken/processor.rb b/lib/shoryuken/processor.rb index 822ff2a9..54559859 100644 --- a/lib/shoryuken/processor.rb +++ b/lib/shoryuken/processor.rb @@ -13,6 +13,9 @@ def process(queue, sqs_msg) worker.class.server_middleware.invoke(worker, queue, sqs_msg, body) do worker.perform(sqs_msg, body) end + rescue Exception => ex + @manager.processor_failed(ex) + raise ensure @manager.processor_done(queue) end diff --git a/spec/shoryuken/processor_spec.rb b/spec/shoryuken/processor_spec.rb index a4df0831..7849be47 100644 --- a/spec/shoryuken/processor_spec.rb +++ b/spec/shoryuken/processor_spec.rb @@ -99,6 +99,7 @@ def self.parse(*args) end it 'logs the error' do + expect(manager).to receive(:processor_failed) expect(subject.logger).to receive(:error) do |&block| expect(block.call). to include("unexpected token at 'invalid json'\nbody_parser: json\nsqs_msg.body: invalid json") @@ -108,6 +109,7 @@ def self.parse(*args) end it 're raises the error' do + expect(manager).to receive(:processor_failed) expect { subject.process(queue, sqs_msg) }. to raise_error(JSON::ParserError, /unexpected token at 'invalid json'/) end