- Shipped
- October 7, 2026 at 5:14 PM UTC
- Author
- Kamo
- Commit
- c1aac73
TranslateService leaves a field it could not translate out of its reply and names it in failedKeys. This client returned the reply as it was, so the article was saved in that locale with its body null, and because the locale then existed the sweep never came back for it. On 2026-10-07, 316 KB translations had lost their Lexical body and 269 their plain text that way, across 49 articles, every one a timeout. A failed key now fails the locale, which is retried with the existing backoff. Article translation runs off the request thread, so nothing needs it within 120 seconds. A long article is three fields of up to ~25,000 characters at 60-80 seconds each in LibreTranslate, and those locales timed out on every attempt while TranslateService went on translating them. This client now tells TranslateService it will wait 540 seconds (X-Translate-Wait-Seconds, which also marks it as background work there) and reads for 600, so TranslateService answers first. A run that long outlasts the ten-minute sweep, which then queued the same article again and asked for the locales the first run was still waiting on. The sweep now leaves an article that is being translated. Needs TranslateService aaf9f56 for the header to mean anything; without it the header is ignored.
