From 2e582b1bc1c299388a3c97cfddff9d0eb92858f2 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 5 Mar 2026 15:23:36 +0100 Subject: [PATCH] fix: prevent slow loading toast interval from leaking on promise cancellation (#8240) Co-authored-by: Claude Opus 4.6 --- frontend/src/lib/components/runs/useJobsLoader.svelte.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/components/runs/useJobsLoader.svelte.ts b/frontend/src/lib/components/runs/useJobsLoader.svelte.ts index 9c0abb2015..de100937fc 100644 --- a/frontend/src/lib/components/runs/useJobsLoader.svelte.ts +++ b/frontend/src/lib/components/runs/useJobsLoader.svelte.ts @@ -133,7 +133,7 @@ export function useJobsLoader(args: () => UseJobLoaderArgs) { ]) }) } - promise = CancelablePromiseUtils.pipe(promise, () => { + promise = CancelablePromiseUtils.finallyDo(promise, () => { if (slowStreamIntervalId) { clearInterval(slowStreamIntervalId) slowStreamIntervalId = undefined @@ -161,7 +161,7 @@ export function useJobsLoader(args: () => UseJobLoaderArgs) { ) }, 15000) paramChangePromise = loadJobsIntern(false, size) - paramChangePromise = CancelablePromiseUtils.pipe(paramChangePromise, () => { + paramChangePromise = CancelablePromiseUtils.finallyDo(paramChangePromise, () => { if (slowStreamIntervalId) { clearInterval(slowStreamIntervalId) slowStreamIntervalId = undefined @@ -687,6 +687,10 @@ export function useJobsLoader(args: () => UseJobLoaderArgs) { return () => { clearTimeout(paramChangeTimeout) paramChangePromise?.cancel() + if (slowStreamIntervalId) { + clearInterval(slowStreamIntervalId) + slowStreamIntervalId = undefined + } } }) $effect(() => {