diff --git a/lib/galaxy/jobs/runners/pulsar.py b/lib/galaxy/jobs/runners/pulsar.py
index 5fa23cc1a16..18d758727df 100644
--- a/lib/galaxy/jobs/runners/pulsar.py
+++ b/lib/galaxy/jobs/runners/pulsar.py
@@ -251,7 +251,7 @@ class PulsarJobRunner(AsynchronousJobRunner):
job_state = self._update_job_state_for_status(job_state, status)
return job_state
- def _update_job_state_for_status(self, job_state, pulsar_status):
+ def _update_job_state_for_status(self, job_state, pulsar_status, full_status=None):
if pulsar_status == "complete":
self.mark_as_finished(job_state)
return None
@@ -261,7 +261,7 @@ class PulsarJobRunner(AsynchronousJobRunner):
else:
message = LOST_REMOTE_ERROR
if not job_state.job_wrapper.get_job().finished:
- self.fail_job(job_state, message)
+ self.fail_job(job_state, message, full_status=full_status)
return None
if pulsar_status == "running" and not job_state.running:
job_state.running = True
@@ -517,10 +517,15 @@ class PulsarJobRunner(AsynchronousJobRunner):
log.exception("Job wrapper finish method failed")
job_wrapper.fail("Unable to finish job", exception=True)
- def fail_job(self, job_state, message=GENERIC_REMOTE_ERROR):
+ def fail_job(self, job_state, message=GENERIC_REMOTE_ERROR, full_status=None):
"""Seperated out so we can use the worker threads for it."""
self.stop_job(self.sa_session.query(self.app.model.Job).get(job_state.job_wrapper.job_id))
- job_state.job_wrapper.fail(getattr(job_state, "fail_message", message))
+ stdout = ""
+ stderr = ""
+ if full_status:
+ stdout = full_status.get("stdout", "")
+ stderr = full_status.get("stderr", "")
+ job_state.job_wrapper.fail(getattr(job_state, "fail_message", message), stdout=stdout, stderr=stderr)
def check_pid(self, pid):
try:
@@ -744,7 +749,7 @@ class PulsarMQJobRunner(PulsarJobRunner):
job_id = full_status["job_id"]
job, job_wrapper = self.app.job_manager.job_handler.job_queue.job_pair_for_id(job_id)
job_state = self._job_state(job, job_wrapper)
- self._update_job_state_for_status(job_state, full_status["status"])
+ self._update_job_state_for_status(job_state, full_status["status"], full_status=full_status)
except Exception:
log.exception("Failed to update Pulsar job status for job_id %s", job_id)
raise
diff --git a/test/functional/tools/fail_writing_work_dir_file.xml b/test/functional/tools/fail_writing_work_dir_file.xml
new file mode 100644
index 00000000000..fe3005a764d
--- /dev/null
+++ b/test/functional/tools/fail_writing_work_dir_file.xml
@@ -0,0 +1,16 @@
+
+ 'foo.txt'
+ #end if
+ ]]>
+
+
+
+
+
+
+
+
+
diff --git a/test/functional/tools/samples_tool_conf.xml b/test/functional/tools/samples_tool_conf.xml
index 930ee0c3502..a2b622c17eb 100644
--- a/test/functional/tools/samples_tool_conf.xml
+++ b/test/functional/tools/samples_tool_conf.xml
@@ -103,6 +103,7 @@
+