Skip to content

Commit

Permalink
[FIX] mail: catch database errors when sending mails
Browse files Browse the repository at this point in the history
  • Loading branch information
KangOl committed Sep 25, 2015
1 parent fc11b58 commit 117b636
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions addons/mail/mail_mail.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
from urllib import urlencode
from urlparse import urljoin

import psycopg2

from openerp import tools
from openerp import SUPERUSER_ID
from openerp.osv import fields, osv
Expand Down Expand Up @@ -338,6 +340,12 @@ def send(self, cr, uid, ids, auto_commit=False, recipient_ids=None, context=None
# prevent catching transient MemoryErrors, bubble up to notify user or abort cron job
# instead of marking the mail as failed
raise
except psycopg2.Error:
# If an error with the database occurs, chances are that the cursor is unusable.
# This will lead to an `psycopg2.InternalError` being raised when trying to write
# `state`, shadowing the original exception and forbid a retry on concurrent
# update. Let's bubble it.
raise
except Exception:
_logger.exception('failed sending mail.mail %s', mail.id)
mail.write({'state': 'exception'})
Expand Down

0 comments on commit 117b636

Please sign in to comment.