mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-01-23 02:36:05 +00:00
Implement coordinated timeout strategy across all layers: **Client-side (90s total):** - HTTP requests: 75s timeout with AbortController - Sync wait timeout: 90s (exceeds all server timeouts) - Restore service: Retry logic for network errors (2s, 4s backoff) - Better error messages for timeout scenarios **Server-side:** - Caddy proxy: 85s timeout (exceeds Fastify) - Fastify server: 80s request timeout (exceeds DB timeout) - Database operations: 60s (unchanged) **Rationale:** Each timeout layer exceeds the one below it, allowing inner operations to complete and report errors properly. The 90s client timeout ensures large operations (snapshot generation, imports) can complete without premature abortion. **Monitoring:** - Log slow requests >30s for visibility - Detailed error logging with duration tracking - Android WebView timeout support via CapacitorHttp
30 lines
682 B
Caddyfile
30 lines
682 B
Caddyfile
{$DOMAIN} {
|
|
reverse_proxy supersync:1900 {
|
|
# Allow up to 85 seconds for long-running operations
|
|
# (snapshot generation, large imports)
|
|
# MUST be greater than Fastify timeout (80s) but less than client timeout (90s)
|
|
timeout 85s
|
|
|
|
transport http {
|
|
dial_timeout 10s
|
|
response_header_timeout 85s
|
|
}
|
|
}
|
|
|
|
# Security headers
|
|
header {
|
|
X-Content-Type-Options nosniff
|
|
X-Frame-Options DENY
|
|
Referrer-Policy strict-origin-when-cross-origin
|
|
-Server
|
|
}
|
|
|
|
# Enable compression
|
|
encode gzip zstd
|
|
|
|
# Logging
|
|
log {
|
|
output stdout
|
|
format console
|
|
}
|
|
}
|