From d3bd0fa57765bd2d03f255099c2b4f0501ac6466 Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Wed, 16 Sep 2015 11:27:48 -0400 Subject: [PATCH] Do not change the state of jobs if a state update is received after they are set to a terminal state. --- lib/galaxy/jobs/__init__.py | 4 ++++ lib/galaxy/model/__init__.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/lib/galaxy/jobs/__init__.py b/lib/galaxy/jobs/__init__.py index edd816a89cd1..0acac1f0edc3 100644 --- a/lib/galaxy/jobs/__init__.py +++ b/lib/galaxy/jobs/__init__.py @@ -1036,6 +1036,10 @@ def mark_as_resubmitted( self, info=None ): def change_state( self, state, info=False ): job = self.get_job() self.sa_session.refresh( job ) + if job.state in model.Job.terminal_states: + log.warning( "(%s) Ignoring state change from '%s' to '%s' for job " + "that is already terminal", job.id, job.state, state ) + return for dataset_assoc in job.output_datasets + job.output_library_datasets: dataset = dataset_assoc.dataset self.sa_session.refresh( dataset ) diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py index 44c5d6c0fedc..2bd9788899fd 100644 --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -317,6 +317,9 @@ class Job( object, HasJobMetrics, Dictifiable ): PAUSED = 'paused', DELETED = 'deleted', DELETED_NEW = 'deleted_new' ) + terminal_states = [ states.OK, + states.ERROR, + states.DELETED ] # Please include an accessor (get/set pair) for any new columns/members. def __init__( self ): self.session_id = None