fix: add server-side retry logic for intermittent LLM JSON parse failures

This commit is contained in:
2026-06-03 22:55:33 +02:00
parent 2fda90729e
commit 8d09b17467
+14 -3
View File
@@ -367,6 +367,11 @@ async function handleGenerate(req, res) {
const signal = combinedSignal(req);
const MAX_ATTEMPTS = 2;
let lastErr;
for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
if (signal.aborted) break;
try {
const content = await callProvider(
[
@@ -386,15 +391,21 @@ async function handleGenerate(req, res) {
}
const result = body.section === 'all' ? parsed : pickResultForSection(body.section, parsed);
json(res, result);
return json(res, result);
} catch (err) {
if (err && (err.name === 'AbortError' || /client disconnected/i.test(err.message))) {
return;
}
console.error('[generate]', err);
json(res, { error: err.message || 'Generation failed' }, 500);
lastErr = err;
if (attempt < MAX_ATTEMPTS) {
console.warn(`[generate] attempt ${attempt} failed, retrying… (${err.message})`);
}
}
}
console.error('[generate]', lastErr);
json(res, { error: lastErr?.message || 'Generation failed' }, 500);
}
// ──────────────────────────────────────────────────────────────────────────────
// Server