fix: workspace creation with stale directories and missing bind mount
- workspace_manager.py: remove stale workspace directories before cloning to prevent 'already exists' errors from previous failed attempts - workspaces.py: add ValueError -> 400 handling, keep 409 for duplicates - test_tool_instances_legacy.py: fix broken patches for new helpers (get_container_name removed, _ensure_backend_network_in_compose added, workspace_id/ssh_key_ids mock attributes added) - docker-compose.traefik.yml: add /data/working-copies bind mount Quality gates: pytest (19 passed, 1 skipped)
This commit is contained in:
@@ -232,6 +232,12 @@ async def create_workspace(
|
||||
workspace = await manager.create(repo, user_id, name, branch, session=session)
|
||||
session.add(workspace)
|
||||
await session.commit()
|
||||
except HTTPException:
|
||||
raise
|
||||
except ValueError as exc:
|
||||
await session.rollback()
|
||||
logger.error("Failed to create workspace: %s", exc)
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
except Exception as exc:
|
||||
await session.rollback()
|
||||
logger.error("Failed to create workspace: %s", exc)
|
||||
|
||||
@@ -88,6 +88,13 @@ class WorkspaceManager:
|
||||
if not repo.remote_url:
|
||||
raise ValueError("Repository has no remote URL")
|
||||
|
||||
# Remove stale directory from previous failed/aborted clone
|
||||
if os.path.exists(path):
|
||||
logger.warning(
|
||||
"Removing stale workspace directory: %s", path
|
||||
)
|
||||
shutil.rmtree(path, ignore_errors=True)
|
||||
|
||||
# Load SSH key if repo has one
|
||||
ssh_key = None
|
||||
if getattr(repo, "ssh_key_id", None) and session is not None:
|
||||
|
||||
Reference in New Issue
Block a user