Skip to content

Commit

Permalink
Merge pull request #19537 from davelopez/24.0_fix_delete_job_message_…
Browse files Browse the repository at this point in the history
…lost

[24.0] Fix admin cancel job message not being displayed to the user
  • Loading branch information
mvdbeek authored Feb 4, 2025
2 parents 062cdda + ddfb0ef commit 929a833
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
2 changes: 1 addition & 1 deletion lib/galaxy/managers/jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ def get_accessible_job(self, trans: ProvidesUserContext, decoded_job_id) -> Job:

def stop(self, job, message=None):
if not job.finished:
job.mark_deleted(self.app.config.track_jobs_in_database)
job.mark_deleted(self.app.config.track_jobs_in_database, message)
session = self.app.model.session
with transaction(session):
session.commit()
Expand Down
7 changes: 4 additions & 3 deletions lib/galaxy/model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1751,7 +1751,7 @@ def mark_stopped(self, track_jobs_in_database=False):
else:
self.state = Job.states.STOPPED

def mark_deleted(self, track_jobs_in_database=False):
def mark_deleted(self, track_jobs_in_database=False, message=None):
"""
Mark this job as deleted, and mark any output datasets as discarded.
"""
Expand All @@ -1762,7 +1762,8 @@ def mark_deleted(self, track_jobs_in_database=False):
self.state = Job.states.DELETING
else:
self.state = Job.states.DELETED
self.info = "Job output deleted by user before job completed."
info = message or "Job output deleted by user before job completed."
self.info = info
for jtoda in self.output_datasets:
output_hda = jtoda.dataset
output_hda.deleted = True
Expand All @@ -1772,7 +1773,7 @@ def mark_deleted(self, track_jobs_in_database=False):
shared_hda.deleted = True
shared_hda.blurb = "deleted"
shared_hda.peek = "Job deleted"
shared_hda.info = "Job output deleted by user before job completed"
shared_hda.info = info

def mark_failed(self, info="Job execution failed", blurb=None, peek=None):
"""
Expand Down
18 changes: 18 additions & 0 deletions lib/galaxy_test/api/test_jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -1019,6 +1019,24 @@ def test_delete_job(self, history_id):
self._assert_status_code_is(empty_search_response, 200)
assert len(empty_search_response.json()) == 0

@pytest.mark.require_new_history
def test_delete_job_with_message(self, history_id):
input_dataset_id = self.__history_with_ok_dataset(history_id)
inputs = json.dumps({"input1": {"src": "hda", "id": input_dataset_id}})
search_payload = self._search_payload(history_id=history_id, tool_id="cat1", inputs=inputs)
# create a job
tool_response = self._post("tools", data=search_payload).json()
job_id = tool_response["jobs"][0]["id"]
output_dataset_id = tool_response["outputs"][0]["id"]
# delete the job with message
expected_message = "test message"
delete_job_response = self._delete(f"jobs/{job_id}", data={"message": expected_message}, json=True)
self._assert_status_code_is(delete_job_response, 200)
# Check the output dataset is deleted and the info field contains the message
dataset_details = self._get(f"histories/{history_id}/contents/{output_dataset_id}").json()
assert dataset_details["deleted"] is True
assert dataset_details["misc_info"] == expected_message

@pytest.mark.require_new_history
def test_destination_params(self, history_id):
dataset_id = self.__history_with_ok_dataset(history_id)
Expand Down

0 comments on commit 929a833

Please sign in to comment.