Skip to content

Commit 1985341

Browse files
authored
Set JobTerminationReason.INSTANCE_UNREACHABLE for unreachable on-demand instances (#3497)
1 parent 90b0579 commit 1985341

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -370,8 +370,12 @@ async def _process_running_job(session: AsyncSession, job_model: JobModel):
370370
# No job_model.termination_reason set means ssh connection failed
371371
_set_disconnected_at_now(session, job_model)
372372
if _should_terminate_job_due_to_disconnect(job_model):
373-
# TODO: Replace with JobTerminationReason.INSTANCE_UNREACHABLE for on-demand.
374-
job_model.termination_reason = JobTerminationReason.INTERRUPTED_BY_NO_CAPACITY
373+
if job_provisioning_data.instance_type.resources.spot:
374+
job_model.termination_reason = (
375+
JobTerminationReason.INTERRUPTED_BY_NO_CAPACITY
376+
)
377+
else:
378+
job_model.termination_reason = JobTerminationReason.INSTANCE_UNREACHABLE
375379
job_model.termination_reason_message = "Instance is unreachable"
376380
switch_job_status(session, job_model, JobStatus.TERMINATING)
377381
else:

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ async def test_pulling_shim_failed(self, test_db, session: AsyncSession):
532532
assert SSHTunnelMock.call_count == 3
533533
await session.refresh(job)
534534
assert job.status == JobStatus.TERMINATING
535-
assert job.termination_reason == JobTerminationReason.INTERRUPTED_BY_NO_CAPACITY
535+
assert job.termination_reason == JobTerminationReason.INSTANCE_UNREACHABLE
536536
assert job.remove_at is None
537537

538538
@pytest.mark.asyncio

0 commit comments

Comments
 (0)