Created
October 31, 2012 17:32
-
-
Save jmchilton/3988522 to your computer and use it in GitHub Desktop.
dynamic job runner exception enhancement
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -r ec3b5956130f lib/galaxy/jobs/handler.py | |
--- a/lib/galaxy/jobs/handler.py Wed Oct 31 12:18:55 2012 -0500 | |
+++ b/lib/galaxy/jobs/handler.py Wed Oct 31 13:42:38 2012 -0500 | |
@@ -17,6 +17,7 @@ | |
# States for running a job. These are NOT the same as data states | |
JOB_WAIT, JOB_ERROR, JOB_INPUT_ERROR, JOB_INPUT_DELETED, JOB_READY, JOB_DELETED, JOB_ADMIN_DELETED = 'wait', 'error', 'input_error', 'input_deleted', 'ready', 'deleted', 'admin_deleted' | |
+DEFAULT_JOB_PUT_FAILURE_MESSAGE = 'Unable to run job due to a misconfiguration of the Galaxy job running system. Please contact a site administrator.' | |
class JobHandler( object ): | |
""" | |
@@ -41,6 +42,7 @@ | |
a JobRunner. | |
""" | |
STOP_SIGNAL = object() | |
+ | |
def __init__( self, app, dispatcher ): | |
"""Start the job manager""" | |
self.app = app | |
@@ -397,9 +399,13 @@ | |
def put( self, job_wrapper ): | |
try: | |
runner_name = self.__get_runner_name( job_wrapper ) | |
- except Exception: | |
- log.exception( 'Failed to generate job runner name' ) | |
- job_wrapper.fail( 'Unable to run job due to a misconfiguration of the Galaxy job running system. Please contact a site administrator.' ) | |
+ except Exception, e: | |
+ failure_message = getattr(e, 'failure_message', DEFAULT_JOB_PUT_FAILURE_MESSAGE ) | |
+ if failure_message == DEFAULT_JOB_PUT_FAILURE_MESSAGE: | |
+ log.exception( 'Failed to generate job runner name' ) | |
+ else: | |
+ log.debug( "Intentionally failing job with message (%s)" % failure_message ) | |
+ job_wrapper.fail( failure_message ) | |
return | |
try: | |
if self.app.config.use_tasked_jobs and job_wrapper.tool.parallelism is not None and isinstance(job_wrapper, TaskWrapper): | |
@@ -410,7 +416,7 @@ | |
self.job_runners[runner_name].put( job_wrapper ) | |
except KeyError: | |
log.error( 'put(): (%s) Invalid job runner: %s' % ( job_wrapper.job_id, runner_name ) ) | |
- job_wrapper.fail( 'Unable to run job due to a misconfiguration of the Galaxy job running system. Please contact a site administrator.' ) | |
+ job_wrapper.fail( DEFAULT_JOB_PUT_FAILURE_MESSAGE ) | |
def stop( self, job ): | |
""" | |
@@ -452,7 +458,7 @@ | |
self.job_runners[runner_name].recover( job, job_wrapper ) | |
except KeyError: | |
log.error( 'recover(): (%s) Invalid job runner: %s' % ( job_wrapper.job_id, runner_name ) ) | |
- job_wrapper.fail( 'Unable to run job due to a misconfiguration of the Galaxy job running system. Please contact a site administrator.' ) | |
+ job_wrapper.fail( DEFAULT_JOB_PUT_FAILURE_MESSAGE ) | |
def shutdown( self ): | |
for runner in self.job_runners.itervalues(): | |
diff -r ec3b5956130f lib/galaxy/jobs/mapper.py | |
--- a/lib/galaxy/jobs/mapper.py Wed Oct 31 12:18:55 2012 -0500 | |
+++ b/lib/galaxy/jobs/mapper.py Wed Oct 31 13:42:38 2012 -0500 | |
@@ -8,6 +8,12 @@ | |
DYNAMIC_RUNNER_PREFIX = "dynamic:///" | |
+class JobMappingException( Exception ): | |
+ | |
+ def __init__( self, failure_message ): | |
+ self.failure_message = failure_message | |
+ | |
+ | |
class JobRunnerMapper( object ): | |
""" | |
This class is responsible to managing the mapping of jobs |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment