Skip to content

Commit

Permalink
Fix microsalt analysis status bug
Browse files Browse the repository at this point in the history
Ensure the status of an analysis is set to ERROR if anything goes wrong when updating the analysis meta data.
  • Loading branch information
seallard committed May 7, 2024
1 parent 73f43c3 commit 36e512b
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions trailblazer/services/analysis_service/analysis_service.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import logging
from trailblazer.constants import TrailblazerStatus, WorkflowManager
from trailblazer.dto import (
AnalysesRequest,
Expand All @@ -20,6 +21,8 @@
from trailblazer.store.models import Analysis, Job, User
from trailblazer.store.store import Store

LOG = logging.getLogger(__name__)


class AnalysisService:
def __init__(self, store: Store, job_service: JobService):
Expand Down Expand Up @@ -72,15 +75,23 @@ def create_analyses_response(
def update_ongoing_analyses(self) -> None:
analyses: list[Analysis] = self.store.get_ongoing_analyses()
for analysis in analyses:
self.job_service.update_jobs(analysis.id)
try:
self.update_analyis_meta_data(analysis)
except Exception as error:
self.store.update_analysis_status(analysis.id, TrailblazerStatus.ERROR)
LOG.error(f"Failed to update analysis {analysis.id}: {error}")

def update_analyis_meta_data(self, analysis: Analysis):
"""Update the jobs, progress and status of an analysis."""
self.job_service.update_jobs(analysis.id)

if analysis.workflow_manager == WorkflowManager.TOWER:
continue
if analysis.workflow_manager == WorkflowManager.TOWER:
return

status: TrailblazerStatus = self.job_service.get_analysis_status(analysis.id)
progress: float = self.job_service.get_analysis_progression(analysis.id)
self.store.update_analysis_progress(analysis_id=analysis.id, progress=progress)
self.store.update_analysis_status(analysis_id=analysis.id, status=status)
status: TrailblazerStatus = self.job_service.get_analysis_status(analysis.id)
progress: float = self.job_service.get_analysis_progression(analysis.id)
self.store.update_analysis_progress(analysis_id=analysis.id, progress=progress)
self.store.update_analysis_status(analysis_id=analysis.id, status=status)

def get_summaries(self, request_data: SummariesRequest) -> SummariesResponse:
summaries: list[Summary] = []
Expand Down

0 comments on commit 36e512b

Please sign in to comment.