From d92c4c7c8ab63841f7dce48e51e1c42d02c6eadb Mon Sep 17 00:00:00 2001 From: Jvst Me Date: Thu, 15 Jan 2026 09:15:39 +0100 Subject: [PATCH] Add missing job status change event for scaling Emit the job status change event when a job transitions to `terminating` due to scaling. This case was previously missed because the `job` variable was not inferred as `JobModel`. --- src/dstack/_internal/server/services/runs/replicas.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dstack/_internal/server/services/runs/replicas.py b/src/dstack/_internal/server/services/runs/replicas.py index 43065d96d9..e994e77ddc 100644 --- a/src/dstack/_internal/server/services/runs/replicas.py +++ b/src/dstack/_internal/server/services/runs/replicas.py @@ -75,8 +75,8 @@ async def scale_run_replicas(session: AsyncSession, run_model: RunModel, replica ) # lists of (importance, is_out_of_date, replica_num, jobs) - active_replicas = [] - inactive_replicas = [] + active_replicas: list[tuple[int, bool, int, list[JobModel]]] = [] + inactive_replicas: list[tuple[int, bool, int, list[JobModel]]] = [] for replica_num, replica_jobs in group_jobs_by_replica_latest(run_model.jobs): statuses = set(job.status for job in replica_jobs) @@ -108,8 +108,8 @@ async def scale_run_replicas(session: AsyncSession, run_model: RunModel, replica for job in replica_jobs: if job.status.is_finished() or job.status == JobStatus.TERMINATING: continue - job.status = JobStatus.TERMINATING job.termination_reason = JobTerminationReason.SCALED_DOWN + switch_job_status(session, job, JobStatus.TERMINATING, events.SystemActor()) # background task will process the job later else: scheduled_replicas = 0