# HG changeset patch # User Christophe de Vienne # Date 1415484440 -3600 # Node ID 54c83bfda2773ddd247e0c17ea9e1f1bf79fd406 # Parent 8c80344b119e01635787e898d50c7a9c7967d87e Don't rollback if exception is HTTPSuccessful or HTTPRedirection In the request finishing, the 'cleanup' callback set by _cw_cnx automatically commit the transaction except is an exception is set on the request. Problem is, redirections and successul http return code can raise exceptions. This patch detects such exceptions and avoid rolling back the transaction. Closes #4566482 diff -r 8c80344b119e -r 54c83bfda277 pyramid_cubicweb/core.py --- a/pyramid_cubicweb/core.py Thu Nov 06 22:26:16 2014 +0100 +++ b/pyramid_cubicweb/core.py Sat Nov 08 23:07:20 2014 +0100 @@ -138,7 +138,10 @@ cnx = repoapi.ClientConnection(request.cw_session) def cleanup(request): - if request.exception is not None: + if (request.exception is not None and not isinstance( + request.exception, ( + httpexceptions.HTTPSuccessful, + httpexceptions.HTTPRedirection))): cnx.rollback() else: cnx.commit()