Defect #30457
MailHandler.safe_receive does not output any error log
Status: | Closed | Start date: | ||
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | % Done: | 0% | ||
Category: | Email receiving | |||
Target version: | 3.4.11 | |||
Resolution: | Fixed | Affected version: |
Description
MailHandler.safe_receive has a rescue clause that seems to be intended to catch all exceptions and log it.
def self.safe_receive(*args)
receive(*args)
rescue Exception => e
logger.error "MailHandler: an unexpected error occurred when receiving email: #{e.message}" if logger
return false
end
However, the expression "logger.error" does not log any events because the variable logger is undefined. Although there is a method definition for "logger" at source:tags/4.0.0/app/models/mail_handler.rb#L77, you cannot call the method from MailHandler.safe_receive because MailHandler.safe_receive is a class method and MailHandler#logger is an instance method.
As a result, the expression logger.error in MailHandler#safe_receive never logs errors because the expression itself causes NameError. To avoid this, logger should be replaced with Rails.logger. The attached patch fixes this issue.
Related issues
Associated revisions
MailHandler.safe_receive does not output any error log (#30457).
Patch by Go MAEDA.
Use safe navigation operator (#30457).
History
#1
Updated by Go MAEDA about 2 years ago
- Target version set to 4.1.0
Setting the target version to 4.1.0.
#2
Updated by Go MAEDA about 2 years ago
- Duplicated by Defect #28874: MailHandler does not log exceptions caught added
#3
Updated by Go MAEDA about 2 years ago
- Related to Patch #11497: Dry up logging in MailHandler class added
#4
Updated by Go MAEDA almost 2 years ago
- Status changed from New to Resolved
- Assignee set to Go MAEDA
- Target version changed from 4.1.0 to 3.4.11
- Resolution set to Fixed
Committed the fix.
#5
Updated by Go MAEDA almost 2 years ago
- Status changed from Resolved to Closed