fix: guard against missing analysis_id and limit poll error retries
This commit is contained in:
parent
1ecaefe1d8
commit
0c2b11f2d2
2 changed files with 33 additions and 0 deletions
|
|
@ -156,7 +156,14 @@ async function runAnalysis(vmid, filename, vmName) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var analysisId = data.analysis_id;
|
var analysisId = data.analysis_id;
|
||||||
|
if (!analysisId) {
|
||||||
|
setPhase('Analysis failed', 0, false);
|
||||||
|
showError('Backend returned invalid response — may need restart.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var startTime = Date.now();
|
var startTime = Date.now();
|
||||||
|
var pollErrors = 0;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
await sleep(2000);
|
await sleep(2000);
|
||||||
|
|
@ -180,6 +187,16 @@ async function runAnalysis(vmid, filename, vmName) {
|
||||||
showError(sdata.error_details || 'Analysis failed');
|
showError(sdata.error_details || 'Analysis failed');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (sdata.error) {
|
||||||
|
pollErrors++;
|
||||||
|
if (pollErrors > 15) {
|
||||||
|
setPhase('Analysis failed', 0, false);
|
||||||
|
showError('Backend unavailable — analysis may need restart.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pollErrors = 0;
|
||||||
|
}
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,9 +119,15 @@ async function startScpPull(e) {
|
||||||
btn.disabled = false; return;
|
btn.disabled = false; return;
|
||||||
}
|
}
|
||||||
var analysisId = adata.analysis_id;
|
var analysisId = adata.analysis_id;
|
||||||
|
if (!analysisId) {
|
||||||
|
setScpPhase('Analysis failed', 0, false);
|
||||||
|
showScpError('Backend returned invalid response — may need restart.');
|
||||||
|
btn.disabled = false; return;
|
||||||
|
}
|
||||||
var vmid = document.getElementById('scp-vmid').value;
|
var vmid = document.getElementById('scp-vmid').value;
|
||||||
var vmName = document.getElementById('scp-vm-name').value.trim();
|
var vmName = document.getElementById('scp-vm-name').value.trim();
|
||||||
var astart = Date.now();
|
var astart = Date.now();
|
||||||
|
var pollErrs = 0;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
await new Promise(r => setTimeout(r, 2000));
|
await new Promise(r => setTimeout(r, 2000));
|
||||||
var sr = await fetch('/session/analyze/status/' + analysisId);
|
var sr = await fetch('/session/analyze/status/' + analysisId);
|
||||||
|
|
@ -141,6 +147,16 @@ async function startScpPull(e) {
|
||||||
showScpError(sdata.error_details || 'Analysis failed');
|
showScpError(sdata.error_details || 'Analysis failed');
|
||||||
btn.disabled = false; return;
|
btn.disabled = false; return;
|
||||||
}
|
}
|
||||||
|
if (sdata.error) {
|
||||||
|
pollErrs++;
|
||||||
|
if (pollErrs > 15) {
|
||||||
|
setScpPhase('Analysis failed', 0, false);
|
||||||
|
showScpError('Backend unavailable — analysis may need restart.');
|
||||||
|
btn.disabled = false; return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pollErrs = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pdata.phase === 'error') {
|
if (pdata.phase === 'error') {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue