55
66from sqlalchemy import select , update
77from 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
1010from dstack ._internal .core .models .fleets import FleetSpec , FleetStatus
1111from 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