diff --git a/Overlord-Server/public/assets/build.js b/Overlord-Server/public/assets/build.js index 41d3ce1..cec9cfa 100644 --- a/Overlord-Server/public/assets/build.js +++ b/Overlord-Server/public/assets/build.js @@ -786,7 +786,7 @@ async function streamBuildOutput(buildId, config = {}) { displayBuild(buildData); } - reader.releaseLock(); + reader.cancel(); return; } else if (data.type === "error") { addBuildOutput(`\nERROR: ${data.error}\n`, "error"); diff --git a/Overlord-Server/src/build/buildManager.ts b/Overlord-Server/src/build/buildManager.ts index 339f287..d8aa611 100644 --- a/Overlord-Server/src/build/buildManager.ts +++ b/Overlord-Server/src/build/buildManager.ts @@ -11,6 +11,15 @@ export function getBuildStream(id: string): BuildStream | undefined { } export function deleteBuildStream(id: string): boolean { + const build = activeBuildStreams.get(id); + if (build) { + build.controllers.forEach((controller) => { + try { + controller.close(); + } catch {} + }); + build.controllers.length = 0; + } return activeBuildStreams.delete(id); } diff --git a/Overlord-Server/src/server/build-process.ts b/Overlord-Server/src/server/build-process.ts index d1fd525..820662c 100644 --- a/Overlord-Server/src/server/build-process.ts +++ b/Overlord-Server/src/server/build-process.ts @@ -186,6 +186,15 @@ export async function startBuildProcess( logger.error("[build] Failed to send to stream:", err); } }); + + if (data.type === "complete") { + build.controllers.forEach((controller) => { + try { + controller.close(); + } catch {} + }); + build.controllers.length = 0; + } }; let winresTempDir: string | null = null;