Skip to content

Commit 5edcc8b

Browse files
fix
1 parent 1d5454a commit 5edcc8b

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

services/director-v2/src/simcore_service_director_v2/api/rpc/_computations.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
from models_library.users import UserID
1414
from servicelib.rabbitmq import RPCRouter
1515
from servicelib.utils import limited_gather
16-
from simcore_service_director_v2.models.comp_tasks import ComputationTaskForRpcDBGet
1716

17+
from ...core.errors import ComputationalRunNotFoundError
18+
from ...models.comp_runs import CompRunsAtDB
19+
from ...models.comp_tasks import ComputationTaskForRpcDBGet
1820
from ...modules.db.repositories.comp_runs import CompRunsRepository
1921
from ...modules.db.repositories.comp_tasks import CompTasksRepository
2022
from ...utils import dask as dask_utils
@@ -95,6 +97,19 @@ async def _fetch_task_log(
9597
return None
9698

9799

100+
async def _get_latest_run_or_none(
101+
comp_runs_repo: CompRunsRepository,
102+
user_id: UserID,
103+
project_uuid: ProjectID,
104+
) -> CompRunsAtDB | None:
105+
try:
106+
return await comp_runs_repo.get(
107+
user_id=user_id, project_id=project_uuid, iteration=None
108+
)
109+
except ComputationalRunNotFoundError:
110+
return None
111+
112+
98113
@router.expose(reraise_if_error_type=())
99114
async def list_computations_latest_iteration_tasks_page(
100115
app: FastAPI,
@@ -127,13 +142,15 @@ async def list_computations_latest_iteration_tasks_page(
127142
# Fetch latest run for each project concurrently
128143
latest_runs = await limited_gather(
129144
*[
130-
comp_runs_repo.get(user_id=user_id, project_id=project_uuid, iteration=None)
145+
_get_latest_run_or_none(comp_runs_repo, user_id, project_uuid)
131146
for project_uuid in unique_project_uuids
132147
],
133148
limit=20,
134149
)
135150
# Build a dict: project_uuid -> iteration
136-
project_uuid_to_iteration = {run.project_uuid: run.iteration for run in latest_runs}
151+
project_uuid_to_iteration = {
152+
run.project_uuid: run.iteration for run in latest_runs if run is not None
153+
}
137154

138155
# Run all log fetches concurrently
139156
log_files = await limited_gather(

0 commit comments

Comments
 (0)