Unverified Commit 929a8335 authored by Marius van den Beek's avatar Marius van den Beek Committed by GitHub
Browse files

Merge pull request #19537 from davelopez/24.0_fix_delete_job_message_lost

[24.0] Fix admin cancel job message not being displayed to the user
parents 062cdda8 ddfb0ef1
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -281,7 +281,7 @@ class JobManager:

    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()
+4 −3
Original line number Diff line number Diff line
@@ -1751,7 +1751,7 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable):
        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.
        """
@@ -1762,7 +1762,8 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable):
            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
@@ -1772,7 +1773,7 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable):
                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):
        """
+18 −0
Original line number Diff line number Diff line
@@ -1019,6 +1019,24 @@ steps:
        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)