From 6d0dbf6ad122657471c59331f67606c8ad30eac1 Mon Sep 17 00:00:00 2001 From: Diego Rodriguez Date: Mon, 10 Feb 2020 17:42:21 +0100 Subject: [PATCH] status: retrieve job status from Job table * Reads job status from Job table to get the running jobs as the `job_progress` in the Workflow table is not correctly updated, finished jobs are reported as running creating an exception while trying to delete a job which doesn't exist (for more see https://github.com/reanahub/reana-workflow-controller/issues/299) (closes reanahub/reana#266). --- reana_workflow_controller/workflow_run_manager.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reana_workflow_controller/workflow_run_manager.py b/reana_workflow_controller/workflow_run_manager.py index db7d6d06..a56e2278 100644 --- a/reana_workflow_controller/workflow_run_manager.py +++ b/reana_workflow_controller/workflow_run_manager.py @@ -29,7 +29,7 @@ create_cvmfs_storage_class, format_cmd) from reana_db.config import SQLALCHEMY_DATABASE_URI from reana_db.database import Session -from reana_db.models import Job +from reana_db.models import Job, JobStatus from reana_workflow_controller.errors import (REANAInteractiveSessionError, REANAWorkflowControllerError) @@ -221,9 +221,9 @@ def _workflow_engine_env_vars(self): def get_workflow_running_jobs_as_backend_ids(self): """Get all running jobs of a workflow as backend job IDs.""" session = Session.object_session(self.workflow) - job_list = self.workflow.job_progress.get( - 'running', {}).get('job_ids', []) - rows = session.query(Job).filter(Job.id_.in_(job_list)) + rows = session.query(Job).filter_by( + workflow_uuid=str(self.workflow.id_), + status=JobStatus.running) backend_ids = [j.backend_job_id for j in rows.all()] return backend_ids