siyuan-note/siyuan · error · Error
boot progress request returned HTTP " + response.status
Error message
boot progress request returned HTTP " + response.status
What it means
While waiting up to 5 minutes for a remote kernel to finish booting, the loop polls /api/system/bootProgress. If a poll response is not ok, the error is thrown (inside the try, so it may be retried by the surrounding loop depending on its structure). It indicates the remote kernel's HTTP endpoint failed during the boot-wait window.
Source
Thrown at app/electron/main.js:2668
}
writeLog("got remote kernel version [" + versionData.data + "]");
if (versionStatus === "mismatch") {
const remoteVersion = escapeHTML(versionData.data);
showErrorWindow("远程内核版本不匹配", "Remote kernel version mismatch",
"<div>客户端版本 " + appVer + " 与远程内核版本 " + remoteVersion + " 不一致。</div>" +
"<div>Client version " + appVer + " does not match remote kernel version " + remoteVersion + ".</div>");
bootWindow.destroy();
return;
}
const bootShowStart = Date.now();
let booted = false;
while (Date.now() - bootShowStart <= 300000) {
try {
const response = await fetchWithTimeout(target.origin + "/api/system/bootProgress");
if (!response.ok) {
await response.body?.cancel();
throw new Error("boot progress request returned HTTP " + response.status);
}
const progressData = await response.json();
if (progressData?.data?.progress >= 100) {
booted = true;
break;
}
} catch (error) {
writeLog("get remote boot progress failed: " + error.message);
}
await sleep(500);
}
if (!booted) {
showErrorWindow("连接远程内核超时", "Remote kernel connection timed out",
"<div>等待远程内核完成启动超时。</div><div>Timed out waiting for the remote kernel to finish booting.</div>");
bootWindow.destroy();
return;
}
View on GitHub (pinned to 8641553a1f)
Solutions
- Wait for the remote kernel to fully start and retry the connection
- Check the remote kernel's logs/server console for startup errors if the failure persists
- Configure the reverse proxy to tolerate the boot window (longer upstream timeouts, retry on 503)
- Verify the target origin is still correct and the kernel port did not change
Defensive patterns
Strategy: retry
Try / catch
// The boot-wait loop already retries within the try; wrap the outer call:
try {
await waitForRemoteKernelBoot(target);
} catch (e) {
if (String(e.message).startsWith("boot progress request returned HTTP")) {
// check remote kernel logs / proxy health before reconnecting
}
} Prevention
- Start the remote kernel before attempting to connect
- Configure proxy 503-retry/timeout settings to cover the boot window
- Investigate kernel startup failures if bootProgress repeatedly errors
When it happens
Trigger: fetchWithTimeout(target.origin + "/api/system/bootProgress") returns response.ok === false during the 300-second boot-wait loop — e.g. the kernel restarts mid-boot, a proxy returns 502/503, or the kernel returns 4xx/5xx after boot progress started.
Common situations: Remote kernel is still starting and its reverse proxy returns 503 until upstream is up; kernel crashed during startup; proxy timeouts or rate limiting kicking in during the wait; the remote host rebooted mid-connection.
Understand the failure class
Background: "API error: {status}" and "HTTP 401/403/404/429/5xx" errors: non-2xx HTTP responses explained — this error's family across 27 libraries.
Related errors
- version request returned HTTP " + response.status
- authentication probe returned HTTP " + response.status
- read body failed: %s
- unexpected status code: %d
- empty catalog
AI-assisted analysis of siyuan-note/siyuan@8641553a1f (2026-09-11).
Data as JSON: /api/errors/2f537efbed39ec3a.
Report an issue: GitHub.