Skip to content

Commit 1b65d8f

Browse files
authored
Add job in-place update event (#3541)
1 parent d01fcfd commit 1b65d8f

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
RunModel,
3131
UserModel,
3232
)
33+
from dstack._internal.server.services import events
3334
from dstack._internal.server.services.jobs import (
3435
find_job,
3536
get_job_specs_from_run_spec,
@@ -661,6 +662,12 @@ async def _update_jobs_to_new_deployment_in_place(
661662
if can_update_all_jobs:
662663
for job_model in job_models:
663664
job_model.deployment_num = run_model.deployment_num
665+
events.emit(
666+
session,
667+
f"Job updated. Deployment: {job_model.deployment_num}",
668+
actor=events.SystemActor(),
669+
targets=[events.Target.from_model(job_model)],
670+
)
664671

665672

666673
async def _should_retry_job(

src/tests/_internal/server/background/tasks/test_process_runs.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
create_user,
3636
get_job_provisioning_data,
3737
get_run_spec,
38+
list_events,
3839
)
3940
from dstack._internal.utils import common
4041

@@ -666,6 +667,10 @@ async def test_updates_deployment_num_in_place(
666667
assert run.jobs[1].status == job_statuses[1]
667668
assert run.jobs[1].replica_num == 1
668669
assert run.jobs[1].deployment_num == 1 # updated
670+
events = await list_events(session)
671+
assert len(events) == 2
672+
assert events[0].message == "Job updated. Deployment: 1"
673+
assert events[1].message == "Job updated. Deployment: 1"
669674

670675
async def test_not_updates_deployment_num_in_place_for_finished_replica(
671676
self, test_db, session: AsyncSession
@@ -697,6 +702,11 @@ async def test_not_updates_deployment_num_in_place_for_finished_replica(
697702
assert run.jobs[1].status == JobStatus.TERMINATED
698703
assert run.jobs[1].replica_num == 1
699704
assert run.jobs[1].deployment_num == 0 # not updated
705+
events = await list_events(session)
706+
assert len(events) == 1
707+
assert events[0].message == "Job updated. Deployment: 1"
708+
assert len(events[0].targets) == 1
709+
assert events[0].targets[0].entity_id == run.jobs[0].id
700710

701711
async def test_starts_new_replica(self, test_db, session: AsyncSession) -> None:
702712
run = await make_run(session, status=RunStatus.RUNNING, replicas=2, image="old")

0 commit comments

Comments
 (0)