OpenBMB/ChatDev · error · HTTPException
Failed to download session
Error message
Failed to download session
What it means
The catch-all handler in download_session: any exception other than ValidationError, ResourceNotFoundError, or HTTPException is logged as 'Unexpected error during session download' and returned as HTTP 500 'Failed to download session'.
Source
Thrown at server/routes/sessions.py:83
zip_path.unlink()
return FileResponse(
path=zip_path,
filename=f"{dir_name}.zip",
media_type="application/zip",
headers={"Content-Disposition": f"attachment; filename={dir_name}.zip"},
background=BackgroundTask(cleanup_zip),
)
except ValidationError as exc:
raise HTTPException(status_code=400, detail=str(exc))
except ResourceNotFoundError:
raise HTTPException(status_code=404, detail="Session directory not found")
except HTTPException:
raise
except Exception as exc:
logger = get_server_logger()
logger.log_exception(exc, f"Unexpected error during session download: {session_id}")
raise HTTPException(status_code=500, detail="Failed to download session")
View on GitHub (pinned to 4fb2db0ea9)
Solutions
- Inspect the server log 'Unexpected error during session download' for the actual traceback
- Verify /tmp is writable and has space for the temp zip
- Check ulimits/file descriptors if streaming large sessions
- Retry once transient IO issues are ruled out; report with logs if persistent
Defensive patterns
Strategy: retry
Validate before calling
assert os.access(tempfile.gettempdir(), os.W_OK), 'temp dir not writable' assert shutil.disk_usage(tempfile.gettempdir()).free > MIN_FREE_BYTES
Try / catch
except HTTPError as e:
if e.response.status_code == 500 and 'Failed to download session' in e.response.text:
if looks_transient(env_check()): retry_with_backoff(download, attempts=3)
else: collect_server_logs_and_report() Prevention
- Monitor writable temp space and file-descriptor limits on the server
- Retry once for transient IO; escalate with server logs if it persists
When it happens
Trigger: GET download failing outside validation/zip steps: errors streaming the file response, temp file creation failure, background task setup errors, or unexpected IO problems.
Common situations: Temp directory not writable, disk exhaustion, file handle limits, or issues streaming large archives; often environmental rather than a code bug.
Related errors
- Failed to start workflow: {exc}
- Failed to run workflow: {exc}
- Failed to create zip archive
- Design file not found: {config_path}
- YAML root must be a mapping
AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27).
Data as JSON: /api/errors/746c9a4bde0a4f0a.
Report an issue: GitHub.