Skip to content

Commit 8d262c2

Browse files
committed
Optimize process_runs queries
1 parent c852a73 commit 8d262c2

1 file changed

Lines changed: 3 additions & 5 deletions

File tree

src/dstack/_internal/server/background/tasks/process_runs.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
RunTerminationReason,
2121
)
2222
from dstack._internal.server.db import get_db, get_session_ctx
23-
from dstack._internal.server.models import JobModel, ProjectModel, RunModel
23+
from dstack._internal.server.models import JobModel, ProjectModel, RunModel, UserModel
2424
from dstack._internal.server.services.jobs import (
2525
find_job,
2626
get_job_specs_from_run_spec,
@@ -129,14 +129,12 @@ async def _process_next_run():
129129
async def _process_run(session: AsyncSession, run_model: RunModel):
130130
logger.debug("%s: processing run", fmt(run_model))
131131
# Refetch to load related attributes.
132-
# joinedload produces LEFT OUTER JOIN that can't be used with FOR UPDATE.
133132
res = await session.execute(
134133
select(RunModel)
135134
.where(RunModel.id == run_model.id)
136135
.execution_options(populate_existing=True)
137-
.options(joinedload(RunModel.project).joinedload(ProjectModel.backends))
138-
.options(joinedload(RunModel.user))
139-
.options(joinedload(RunModel.repo))
136+
.options(joinedload(RunModel.project).load_only(ProjectModel.id, ProjectModel.name))
137+
.options(joinedload(RunModel.user).load_only(UserModel.name))
140138
.options(selectinload(RunModel.jobs).joinedload(JobModel.instance))
141139
.execution_options(populate_existing=True)
142140
)

0 commit comments

Comments
 (0)