diff --git a/pype/ftrack/actions/action_job_killer.py b/pype/ftrack/actions/action_job_killer.py index 56a280a663..c7839f5508 100644 --- a/pype/ftrack/actions/action_job_killer.py +++ b/pype/ftrack/actions/action_job_killer.py @@ -108,6 +108,7 @@ class JobKiller(BaseAction): 'Changing Job ({}) status: {} -> failed' ).format(job['id'], origin_status)) except Exception: + session.rollback() self.log.warning(( 'Changing Job ({}) has failed' ).format(job['id'])) diff --git a/pype/ftrack/actions/action_thumbnail_to_childern.py b/pype/ftrack/actions/action_thumbnail_to_childern.py index 7d189cf652..4a6a85a6e6 100644 --- a/pype/ftrack/actions/action_thumbnail_to_childern.py +++ b/pype/ftrack/actions/action_thumbnail_to_childern.py @@ -43,7 +43,7 @@ class ThumbToChildren(BaseAction): 'description': 'Push thumbnails to Childrens' }) }) - + session.commit() try: for entity in entities: thumbid = entity['thumbnail_id'] @@ -53,10 +53,11 @@ class ThumbToChildren(BaseAction): # inform the user that the job is done job['status'] = 'done' - except Exception: + except Exception as exc: + session.rollback() # fail the job if something goes wrong job['status'] = 'failed' - raise + raise exc finally: session.commit() diff --git a/pype/ftrack/actions/action_thumbnail_to_parent.py b/pype/ftrack/actions/action_thumbnail_to_parent.py index efafca4a96..596d49836f 100644 --- a/pype/ftrack/actions/action_thumbnail_to_parent.py +++ b/pype/ftrack/actions/action_thumbnail_to_parent.py @@ -40,9 +40,9 @@ class ThumbToParent(BaseAction): 'status': 'running', 'data': json.dumps({ 'description': 'Push thumbnails to parents' - }) }) - + }) + session.commit() try: for entity in entities: parent = None @@ -74,10 +74,11 @@ class ThumbToParent(BaseAction): # inform the user that the job is done job['status'] = status or 'done' - except Exception as e: + except Exception as exc: + session.rollback() # fail the job if something goes wrong job['status'] = 'failed' - raise e + raise exc finally: session.commit() diff --git a/pype/ftrack/events/event_next_task_update.py b/pype/ftrack/events/event_next_task_update.py index 51ccb2f057..68db07d03d 100644 --- a/pype/ftrack/events/event_next_task_update.py +++ b/pype/ftrack/events/event_next_task_update.py @@ -80,10 +80,10 @@ class NextTaskUpdate(BaseEvent): '>>> [ {} ] updated to [ Ready ]' ).format(path)) except Exception as e: + session.rollback() self.log.warning(( '!!! [ {} ] status couldnt be set: [ {} ]' - ).format(path, e)) - session.rollback() + ).format(path, str(e)), exc_info=True) def register(session, plugins_presets): diff --git a/pype/ftrack/events/event_sync_to_avalon.py b/pype/ftrack/events/event_sync_to_avalon.py index 3fe65bca11..4e59c96dc7 100644 --- a/pype/ftrack/events/event_sync_to_avalon.py +++ b/pype/ftrack/events/event_sync_to_avalon.py @@ -101,7 +101,7 @@ class Sync_to_Avalon(BaseEvent): avalon_project = result['project'] except Exception as e: - session.reset() # reset session to clear it + session.rollback() # reset session to clear it message = str(e) title = 'Hey You! Unknown Error has been raised! (*look below*)' diff --git a/pype/ftrack/events/event_version_to_task_statuses.py b/pype/ftrack/events/event_version_to_task_statuses.py index 66a55c0cf7..607a31f44e 100644 --- a/pype/ftrack/events/event_version_to_task_statuses.py +++ b/pype/ftrack/events/event_version_to_task_statuses.py @@ -62,6 +62,7 @@ class VersionToTaskStatus(BaseEvent): task['status'] = task_status session.commit() except Exception as e: + session.rollback() self.log.warning('!!! [ {} ] status couldnt be set:\ [ {} ]'.format(path, e)) else: diff --git a/pype/ftrack/lib/ftrack_base_handler.py b/pype/ftrack/lib/ftrack_base_handler.py index f22f80e7f1..200006dd2d 100644 --- a/pype/ftrack/lib/ftrack_base_handler.py +++ b/pype/ftrack/lib/ftrack_base_handler.py @@ -128,6 +128,7 @@ class BaseHandler(object): try: return func(*args, **kwargs) except Exception as exc: + self.session.rollback() msg = '{} "{}": Failed ({})'.format(self.type, label, str(exc)) self.log.error(msg, exc_info=True) return { diff --git a/pype/ftrack/lib/ftrack_event_handler.py b/pype/ftrack/lib/ftrack_event_handler.py index db55eef16e..80a86527ab 100644 --- a/pype/ftrack/lib/ftrack_event_handler.py +++ b/pype/ftrack/lib/ftrack_event_handler.py @@ -26,6 +26,7 @@ class BaseEvent(BaseHandler): try: func(*args, **kwargs) except Exception as exc: + self.session.rollback() self.log.error( 'Event "{}" Failed: {}'.format( self.__class__.__name__, str(exc)