diff -r 141b935a38fc -r 99024ad59223 server/session.py --- a/server/session.py Mon Jul 05 18:00:33 2010 +0200 +++ b/server/session.py Mon Jul 05 18:25:19 2010 +0200 @@ -747,7 +747,7 @@ self.pending_operations[:] = processed self.debug('%s session %s done', trstate, self.id) except: - self.exception('error while %sing', trstate) + self.critical('error while %sing', trstate, exc_info=True) # if error on [pre]commit: # # * set .failed = True on the operation causing the failure @@ -759,8 +759,12 @@ # instead of having to implements rollback, revertprecommit # and revertcommit, that will be enough in mont case. operation.failed = True - for operation in processed: - operation.handle_event('revert%s_event' % trstate) + for operation in reversed(processed): + try: + operation.handle_event('revert%s_event' % trstate) + except: + self.critical('error while reverting %sing', trstate, + exc_info=True) # XXX use slice notation since self.pending_operations is a # read-only property. self.pending_operations[:] = processed + self.pending_operations