Skip to content

Commit fad5d79

Browse files
author
Andrey Cheptsov
committed
Run templates repo access validation off the event loop.
Make templates repo URL normalization async and call git reachability validation via run_async so project create/update paths do not block request handling. Made-with: Cursor
1 parent 58cd345 commit fad5d79

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

src/dstack/_internal/server/services/projects.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ async def update_project(
222222
normalized_templates_repo = None
223223
should_update_templates_repo = project.templates_repo is not None
224224
elif templates_repo is not None:
225-
normalized_templates_repo = _normalize_templates_repo_url(templates_repo)
225+
normalized_templates_repo = await _normalize_templates_repo_url(templates_repo)
226226
if normalized_templates_repo is not None:
227227
should_update_templates_repo = normalized_templates_repo != project.templates_repo
228228
if should_update_templates_repo:
@@ -603,7 +603,7 @@ async def create_project_model(
603603
templates_repo: Optional[str] = None,
604604
) -> ProjectModel:
605605
validate_project_name(project_name)
606-
templates_repo = _normalize_templates_repo_url(templates_repo)
606+
templates_repo = await _normalize_templates_repo_url(templates_repo)
607607
private_bytes, public_bytes = await run_async(
608608
generate_rsa_key_pair_bytes, f"{project_name}@dstack"
609609
)
@@ -725,15 +725,15 @@ def is_valid_project_name(project_name: str) -> bool:
725725
return re.match("^[a-zA-Z0-9-_]{1,50}$", project_name) is not None
726726

727727

728-
def _normalize_templates_repo_url(templates_repo: Optional[str]) -> Optional[str]:
728+
async def _normalize_templates_repo_url(templates_repo: Optional[str]) -> Optional[str]:
729729
if templates_repo is None:
730730
return None
731731
templates_repo = templates_repo.strip()
732732
if templates_repo == "":
733733
return None
734734
if templates_repo is not None:
735735
try:
736-
templates_service.validate_templates_repo_access(templates_repo)
736+
await run_async(templates_service.validate_templates_repo_access, templates_repo)
737737
except ValueError as e:
738738
raise ServerClientError(str(e))
739739
return templates_repo

0 commit comments

Comments
 (0)