2
0
Files
gitcaddy-server/options/seed/error_patterns.json
GitCaddy d2aa7e3605 feat(ai): Add auto-seed for error patterns on fresh deploy
- Add options/seed/error_patterns.json with default upload error patterns
- Add models/ai/seed.go with SeedErrorPatternsIfEmpty function
- Call seed on startup after models.Init if error_pattern table is empty
- Seeds 10 common error patterns for uploads, .NET, etc.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-14 07:22:04 +00:00

95 lines
4.9 KiB
JSON

{
"patterns": [
{
"pattern": "curl: (28) Connection timed out",
"runner_type": "linux",
"project_type": "release-upload",
"framework": "curl",
"error_message": "curl: (28) Connection timed out after X milliseconds",
"diagnosis": "The upload connection timed out. This typically occurs with large files over unstable networks or when server timeouts are too short.",
"solution": "Use HTTP/1.1 with keepalive and extended timeouts: curl --http1.1 --keepalive-time 60 --connect-timeout 120 --max-time 3600 --retry 5 --retry-delay 10"
},
{
"pattern": "curl: (56) Recv failure: Connection reset by peer",
"runner_type": "linux",
"project_type": "release-upload",
"framework": "curl",
"error_message": "curl: (56) Recv failure: Connection reset by peer",
"diagnosis": "The connection was reset during upload. This often happens with HTTP/2 multiplexing issues or when proxies/load balancers terminate idle connections.",
"solution": "Force HTTP/1.1 to avoid multiplexing issues: curl --http1.1 --retry 5 --retry-all-errors -X POST -F attachment=@file"
},
{
"pattern": "file_too_large",
"runner_type": "",
"project_type": "release-upload",
"framework": "gitcaddy-api",
"error_message": "File exceeds maximum size",
"diagnosis": "The uploaded file exceeds the server maximum attachment size limit.",
"solution": "Check max size with GET /api/v2/upload/instructions. Split large files or request server config increase. Default limit is typically 500MB."
},
{
"pattern": "curl: (35) SSL connect error",
"runner_type": "linux",
"project_type": "release-upload",
"framework": "curl",
"error_message": "curl: (35) SSL connect error or OpenSSL SSL_connect error",
"diagnosis": "SSL/TLS handshake failed. May be caused by certificate issues, protocol mismatch, or network interference.",
"solution": "Try with explicit TLS version: curl --tlsv1.2 or check certificate validity. For self-signed certs in testing, use -k flag."
},
{
"pattern": "curl: (6) Could not resolve host",
"runner_type": "linux",
"project_type": "release-upload",
"framework": "curl",
"error_message": "curl: (6) Could not resolve host: git.example.com",
"diagnosis": "DNS resolution failed for the upload server hostname.",
"solution": "Pre-warm DNS before upload: curl -s -o /dev/null -I https://server/api/healthz; then retry upload. Check /etc/resolv.conf and network connectivity."
},
{
"pattern": "upload_failed",
"runner_type": "",
"project_type": "release-upload",
"framework": "gitcaddy-api",
"error_message": "upload_failed: unexpected EOF or connection closed",
"diagnosis": "Upload was interrupted before completion. Often caused by network instability or timeout during large file transfers.",
"solution": "Use gitcaddy-upload helper with automatic retry: gitcaddy-upload -url URL -token TOKEN -file FILE -retries 5. Or use curl with --retry 5 --retry-all-errors flags."
},
{
"pattern": "HTTP 413 Request Entity Too Large",
"runner_type": "",
"project_type": "release-upload",
"framework": "http",
"error_message": "HTTP 413 Request Entity Too Large or Payload Too Large",
"diagnosis": "The request body exceeds the server or reverse proxy limit. Nginx/Caddy may have lower limits than the application.",
"solution": "Check proxy config: nginx client_max_body_size, Caddy request_body max_size. Ensure all layers allow the file size."
},
{
"pattern": "NETSDK1147",
"runner_type": "macos",
"project_type": "dotnet-maui",
"framework": "net9.0-android",
"error_message": "NETSDK1147: To build this project, the following workloads must be installed: maui-android",
"diagnosis": "The .NET MAUI Android workload is not installed on the build machine.",
"solution": "Install the workload: dotnet workload install maui-android. For CI, add this step before build."
},
{
"pattern": "XA5300",
"runner_type": "macos",
"project_type": "dotnet-maui",
"framework": "net9.0-android",
"error_message": "XA5300: The Android SDK directory could not be found",
"diagnosis": "Android SDK is not installed or ANDROID_HOME environment variable is not set.",
"solution": "Set ANDROID_HOME to the SDK path. On macOS: export ANDROID_HOME=$HOME/Library/Android/sdk"
},
{
"pattern": "MSB4019",
"runner_type": "",
"project_type": "dotnet",
"framework": "",
"error_message": "MSB4019: The imported project was not found",
"diagnosis": "A required MSBuild targets file is missing, usually due to missing SDK or workload.",
"solution": "Install the required workload or SDK. Run: dotnet workload list to see installed workloads."
}
]
}