Skip to content

Commit 205a2cd

Browse files
authored
Add DSTACK_FF_AUTOCREATED_FLEETS_DISABLED (#3251)
1 parent 7792f9e commit 205a2cd

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

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

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
volume_model_to_volume,
9999
)
100100
from dstack._internal.server.utils import sentry_utils
101+
from dstack._internal.settings import FeatureFlags
101102
from dstack._internal.utils import common as common_utils
102103
from dstack._internal.utils.logging import get_logger
103104

@@ -311,16 +312,27 @@ async def _process_submitted_job(session: AsyncSession, job_model: JobModel):
311312
master_job_provisioning_data=master_job_provisioning_data,
312313
volumes=volumes,
313314
)
314-
if fleet_model is None and run_spec.merged_profile.fleets is not None:
315-
# Run cannot create new fleets when fleets are specified
316-
logger.debug("%s: failed to use specified fleets", fmt(job_model))
317-
job_model.status = JobStatus.TERMINATING
318-
job_model.termination_reason = (
319-
JobTerminationReason.FAILED_TO_START_DUE_TO_NO_CAPACITY
320-
)
321-
job_model.last_processed_at = common_utils.get_current_datetime()
322-
await session.commit()
323-
return
315+
if fleet_model is None:
316+
if run_spec.merged_profile.fleets is not None:
317+
# Run cannot create new fleets when fleets are specified
318+
logger.debug("%s: failed to use specified fleets", fmt(job_model))
319+
job_model.status = JobStatus.TERMINATING
320+
job_model.termination_reason = (
321+
JobTerminationReason.FAILED_TO_START_DUE_TO_NO_CAPACITY
322+
)
323+
job_model.last_processed_at = common_utils.get_current_datetime()
324+
await session.commit()
325+
return
326+
if FeatureFlags.AUTOCREATED_FLEETS_DISABLED:
327+
logger.debug("%s: no fleet found", fmt(job_model))
328+
job_model.status = JobStatus.TERMINATING
329+
job_model.termination_reason = (
330+
JobTerminationReason.FAILED_TO_START_DUE_TO_NO_CAPACITY
331+
)
332+
job_model.termination_reason_message = "Failed to find fleet"
333+
job_model.last_processed_at = common_utils.get_current_datetime()
334+
await session.commit()
335+
return
324336
instance = await _assign_job_to_fleet_instance(
325337
session=session,
326338
instances_with_offers=fleet_instances_with_offers,
@@ -647,8 +659,10 @@ async def _find_optimal_fleet_with_offers(
647659
)
648660
if len(candidate_fleets_with_offers) == 0:
649661
return None, []
650-
if run_spec.merged_profile.fleets is None and all(
651-
t[2] == 0 and t[3] == 0 for t in candidate_fleets_with_offers
662+
if (
663+
not FeatureFlags.AUTOCREATED_FLEETS_DISABLED
664+
and run_spec.merged_profile.fleets is None
665+
and all(t[2] == 0 and t[3] == 0 for t in candidate_fleets_with_offers)
652666
):
653667
# If fleets are not specified and no fleets have available pool
654668
# or backend offers, create a new fleet.

src/dstack/_internal/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,4 @@ class FeatureFlags:
3535
development. Feature flags are environment variables of the form DSTACK_FF_*
3636
"""
3737

38-
pass
38+
AUTOCREATED_FLEETS_DISABLED = os.getenv("DSTACK_FF_AUTOCREATED_FLEETS_DISABLED") is not None

0 commit comments

Comments
 (0)