don't log an ErrorReport for 450 Recipient address rejected
This isn't an actionable error. Though at some point it'd be nice to display a message to the user if their emails are consistently failing. Change-Id: Ia760214c355976592373404b03a41d9ff64034e7 Reviewed-on: https://gerrit.instructure.com/16566 Tested-by: Jenkins <jenkins@instructure.com> Reviewed-by: Cody Cutrer <cody@instructure.com> QA-Review: Clare Hetherington <clare@instructure.com>
This commit is contained in:
parent
d1a6006a1c
commit
d118c9ede1
|
@ -442,7 +442,9 @@ class Message < ActiveRecord::Base
|
|||
if res
|
||||
complete_dispatch
|
||||
elsif @exception
|
||||
if !@exception.is_a?(Timeout::Error)
|
||||
raise_error = @exception.to_s !~ /^450/
|
||||
log_error = raise_error && !@exception.is_a?(Timeout::Error)
|
||||
if log_error
|
||||
ErrorReport.log_exception(:default, @exception, {
|
||||
:message => "Message delivery failed",
|
||||
:to => self.to,
|
||||
|
@ -450,7 +452,11 @@ class Message < ActiveRecord::Base
|
|||
})
|
||||
end
|
||||
self.errored_dispatch
|
||||
raise @exception
|
||||
if raise_error
|
||||
raise @exception
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
true
|
||||
end
|
||||
|
|
|
@ -86,6 +86,23 @@ describe Message do
|
|||
@message.deliver.should be_nil
|
||||
@message.reload.state.should == :cancelled
|
||||
end
|
||||
|
||||
it "should log errors and raise based on error type" do
|
||||
message_model(:dispatch_at => Time.now, :workflow_state => 'staged', :to => 'somebody', :updated_at => Time.now.utc - 11.minutes, :user => user, :path_type => 'email')
|
||||
Mailer.expects(:deliver_message).raises("something went wrong")
|
||||
ErrorReport.expects(:log_exception)
|
||||
expect { @message.deliver }.to raise_exception("something went wrong")
|
||||
|
||||
message_model(:dispatch_at => Time.now, :workflow_state => 'staged', :to => 'somebody', :updated_at => Time.now.utc - 11.minutes, :user => user, :path_type => 'email')
|
||||
Mailer.expects(:deliver_message).raises(Timeout::Error.new)
|
||||
ErrorReport.expects(:log_exception).never
|
||||
expect { @message.deliver }.to raise_exception(Timeout::Error)
|
||||
|
||||
message_model(:dispatch_at => Time.now, :workflow_state => 'staged', :to => 'somebody', :updated_at => Time.now.utc - 11.minutes, :user => user, :path_type => 'email')
|
||||
Mailer.expects(:deliver_message).raises("450 recipient address rejected")
|
||||
ErrorReport.expects(:log_exception).never
|
||||
@message.deliver.should == false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue