From 0f10481da0a276d2be5cb8ec5b7b181268f865c6 Mon Sep 17 00:00:00 2001 From: Adam Cooke Date: Wed, 26 Apr 2017 20:54:50 +0100 Subject: [PATCH] ensure that we only try to log exceptions when raven is available --- app/jobs/unqueue_message_job.rb | 4 +++- lib/postal/app_logger.rb | 4 +++- lib/postal/fast_server/client.rb | 4 +++- lib/postal/fast_server/interface.rb | 4 +++- lib/postal/fast_server/server.rb | 4 +++- lib/postal/message_parser.rb | 4 +++- lib/postal/smtp_sender.rb | 4 +++- lib/postal/smtp_server/server.rb | 12 +++++++++--- lib/postal/worker.rb | 4 +++- 9 files changed, 33 insertions(+), 11 deletions(-) diff --git a/app/jobs/unqueue_message_job.rb b/app/jobs/unqueue_message_job.rb index e9f95da..806900f 100644 --- a/app/jobs/unqueue_message_job.rb +++ b/app/jobs/unqueue_message_job.rb @@ -417,7 +417,9 @@ class UnqueueMessageJob < Postal::Job e.backtrace.each { |e| log("#{log_prefix} #{e}") } queued_message.retry_later log "#{log_prefix} Queued message was unlocked" - Raven.capture_exception(e, :extra => {:job_id => self.id, :server_id => queued_message.server_id, :message_id => queued_message.message_id}) + if defined?(Raven) + Raven.capture_exception(e, :extra => {:job_id => self.id, :server_id => queued_message.server_id, :message_id => queued_message.message_id}) + end if queued_message.message queued_message.message.create_delivery("Error", :details => "An internal error occurred while sending this message. This message will be retried automatically. This this persists, contact support for assistance.", :output => "#{e.class}: #{e.message}", :log_id => "J-#{self.id}") end diff --git a/lib/postal/app_logger.rb b/lib/postal/app_logger.rb index 9e97b84..b9a6402 100644 --- a/lib/postal/app_logger.rb +++ b/lib/postal/app_logger.rb @@ -27,7 +27,9 @@ module Postal n.notify!(:short_message => message_without_ansi, :log_name => @log_name, :facility => 'postal', :application_name => 'postal', :process_name => ENV['PROC_NAME'], :pid => Process.pid) rescue => e # Can't log this to GELF. Soz. - Raven.capture_exception(e) + if defined?(Raven) + Raven.capture_exception(e) + end end end true diff --git a/lib/postal/fast_server/client.rb b/lib/postal/fast_server/client.rb index 8faf184..e146346 100644 --- a/lib/postal/fast_server/client.rb +++ b/lib/postal/fast_server/client.rb @@ -108,7 +108,9 @@ module Postal rescue BadRequest # We couldn't read a proper HTTP request, disconnect the client rescue => e - Raven.capture_exception(e) + if defined?(Raven) + Raven.capture_exception(e) + end ensure @socket.close rescue nil @raw_socket.close rescue nil diff --git a/lib/postal/fast_server/interface.rb b/lib/postal/fast_server/interface.rb index e39acdf..ad66ae5 100644 --- a/lib/postal/fast_server/interface.rb +++ b/lib/postal/fast_server/interface.rb @@ -37,7 +37,9 @@ module Postal rescue => e # Somethign else went wrong. We don't want to stop the image loading though because # this is our problem. Log this exception though. - Raven.capture_exception(e) + if defined?(Raven) + Raven.capture_exception(e) + end end source_image = request.params['src'] if source_image.nil? diff --git a/lib/postal/fast_server/server.rb b/lib/postal/fast_server/server.rb index 6473e8d..7c99db0 100644 --- a/lib/postal/fast_server/server.rb +++ b/lib/postal/fast_server/server.rb @@ -25,7 +25,9 @@ module Postal rescue IO::WaitReadable, Errno::EINTR # Never mind, guess the client went away rescue => e - Raven.capture_exception(e) + if defined?(Raven) + Raven.capture_exception(e) + end client_io.close rescue nil end end diff --git a/lib/postal/message_parser.rb b/lib/postal/message_parser.rb index c85af20..b38276e 100644 --- a/lib/postal/message_parser.rb +++ b/lib/postal/message_parser.rb @@ -51,7 +51,9 @@ module Postal if Rails.env.development? raise else - Raven.capture_exception(e) + if defined?(Raven) + Raven.capture_exception(e) + end @actioned = false @tracked_links = 0 @tracked_images = 0 diff --git a/lib/postal/smtp_sender.rb b/lib/postal/smtp_sender.rb index f145064..a0d1d82 100644 --- a/lib/postal/smtp_sender.rb +++ b/lib/postal/smtp_sender.rb @@ -170,7 +170,9 @@ module Postal safe_rset rescue => e log "#{e.class}: #{e.message}" - Raven.capture_exception(e, :extra => {:log_id => @log_id, :server_id => message.server.id, :message_id => message.id}) + if defined?(Raven) + Raven.capture_exception(e, :extra => {:log_id => @log_id, :server_id => message.server.id, :message_id => message.id}) + end result.type = 'SoftFail' result.retry = true result.details = "An error occurred while sending the message to #{destination_host_description}" diff --git a/lib/postal/smtp_server/server.rb b/lib/postal/smtp_server/server.rb index ae6d0a0..c6a6d69 100644 --- a/lib/postal/smtp_server/server.rb +++ b/lib/postal/smtp_server/server.rb @@ -115,7 +115,9 @@ module Postal clients[new_io] = client @epoll.add(new_io, Epoll::IN|Epoll::PRI|Epoll::HUP) rescue => e - Raven.capture_exception(e, :extra => {:log_id => (client.id rescue nil)}) + if defined?(Raven) + Raven.capture_exception(e, :extra => {:log_id => (client.id rescue nil)}) + end logger.error "An error occurred while accepting a new client." logger.error "#{e.class}: #{e.message}" e.backtrace.each do |line| @@ -192,7 +194,9 @@ module Postal end rescue => e client_id = client ? client.id : '------' - Raven.capture_exception(e, :extra => {:log_id => (client.id rescue nil)}) + if defined?(Raven) + Raven.capture_exception(e, :extra => {:log_id => (client.id rescue nil)}) + end logger.error "[#{client_id}] An error occurred while processing data from a client." logger.error "[#{client_id}] #{e.class}: #{e.message}" e.backtrace.each do |line| @@ -281,7 +285,9 @@ module Postal end end rescue => e - Raven.capture_exception(e, :extra => {:log_id => (client.id rescue nil)}) + if defined?(Raven) + Raven.capture_exception(e, :extra => {:log_id => (client.id rescue nil)}) + end logger.error "An error occurred while handling a client." logger.error "#{e.class}: #{e.message}" e.backtrace.each do |line| diff --git a/lib/postal/worker.rb b/lib/postal/worker.rb index 16f0a11..c3f7f91 100644 --- a/lib/postal/worker.rb +++ b/lib/postal/worker.rb @@ -52,7 +52,9 @@ module Postal klass = message['class_name'].constantize.new(message['id'], message['params']) klass.perform rescue => e - Raven.capture_exception(e, :extra => {:job_id => message['id']}) + if defined?(Raven) + Raven.capture_exception(e, :extra => {:job_id => message['id']}) + end logger.warn "[#{message['id']}] \e[31m#{e.class}: #{e.message}\e[0m" e.backtrace.each do |line| logger.warn "[#{message['id']}] " + line