Skip to content

Commit d83d29d

Browse files
committed
Optimize fleet instances db queries
1 parent 8b383ba commit d83d29d

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from sqlalchemy import select, update
77
from sqlalchemy.ext.asyncio import AsyncSession
8-
from sqlalchemy.orm import joinedload, load_only, selectinload
8+
from sqlalchemy.orm import joinedload, load_only, selectinload, with_loader_criteria
99

1010
from dstack._internal.core.models.fleets import FleetSpec, FleetStatus
1111
from dstack._internal.core.models.instances import InstanceStatus, InstanceTerminationReason
@@ -60,6 +60,7 @@ async def process_fleets():
6060
.options(
6161
load_only(FleetModel.id, FleetModel.name),
6262
selectinload(FleetModel.instances).load_only(InstanceModel.id),
63+
with_loader_criteria(InstanceModel, InstanceModel.deleted == False),
6364
)
6465
.order_by(FleetModel.last_processed_at.asc())
6566
.limit(BATCH_SIZE)
@@ -72,6 +73,7 @@ async def process_fleets():
7273
.where(
7374
InstanceModel.id.not_in(instance_lockset),
7475
InstanceModel.fleet_id.in_(fleet_ids),
76+
InstanceModel.deleted == False,
7577
)
7678
.options(load_only(InstanceModel.id, InstanceModel.fleet_id))
7779
.order_by(InstanceModel.id)
@@ -113,8 +115,9 @@ async def _process_fleets(session: AsyncSession, fleet_models: List[FleetModel])
113115
.where(FleetModel.id.in_(fleet_ids))
114116
.options(
115117
joinedload(FleetModel.instances).joinedload(InstanceModel.jobs).load_only(JobModel.id),
116-
joinedload(FleetModel.project),
118+
with_loader_criteria(InstanceModel, InstanceModel.deleted == False),
117119
)
120+
.options(joinedload(FleetModel.project))
118121
.options(joinedload(FleetModel.runs).load_only(RunModel.status))
119122
.execution_options(populate_existing=True)
120123
)

0 commit comments

Comments
 (0)