[FIX] don't rollback() transation, use savepoint. This fixes concurrency

issues with long running cron threads as rollback also releases the lock
pull/3071/head
Holger Brunn 2013-04-18 16:43:25 +02:00 committed by Jose Zambudio
parent bec5ca112b
commit fe1379c3be
1 changed files with 3 additions and 2 deletions

View File

@ -148,14 +148,15 @@ class fetchmail_server(Model):
if found_ids and (len(found_ids) == 1 or
folder.match_first):
try:
cr.execute('savepoint apply_matching')
match_algorithm.handle_match(
cr, uid, connection,
found_ids[0], folder, mail_message,
msgdata[0][1], msgid, context)
cr.commit()
cr.execute('release savepoint apply_matching')
matched_object_ids += found_ids[:1]
except Exception, e:
cr.rollback()
cr.execute('rollback to savepoint apply_matching')
logger.exception(
"Failed to fetch mail %s from %s",
msgid, this.name)