- Shipped
- May 10, 2026 at 5:56 AM UTC
- Author
- Kamo
- Commit
- f7ae1ef
Two follow-ups to the retry/failedKeys change: 1. Per-call request timeout was 30s. Production has runtime callers (chat, notifications, etc.) hitting the same translate-service that the CI sync calls — when the LibreTranslate worker is mid-restart or the queue is non-empty, our request can sit waiting for 30-60s before the worker even starts on it. The tight 30s turned every queued request into a triple-retry-then-throw and cascaded into hundreds of timeout WARNs per sync. 90s gives enough headroom for a queued request to actually complete. 2. The router's new "throw when all providers errored" behavior is correct for the batch endpoint (caller can mark failedKeys and retry next run) but breaks runtime callers of single-translate, who used to get the source text on failure and now get a 500. Restore the soft-fallback ONLY for the single-translate path; the batch path still surfaces failures explicitly.