diff --git a/CHANGELOG.md b/CHANGELOG.md index a4d5a172f8..0ddef7d826 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). - [#3280](https://github.com/plotly/dash/pull/3280) Remove flask typing import not available in earlier versions. - [#3284](https://github.com/plotly/dash/pull/3284) Fix component as props having the same key when used in the same container. - [#3287](https://github.com/plotly/dash/pull/3287) Fix typing component generation & explicitize_args. +- [#3282](https://github.com/plotly/dash/pull/3282) Fix incorrect cancellation of pattern matched long callbacks. ## [3.0.3] - 2025-04-14 diff --git a/dash/dash-renderer/src/actions/callbacks.ts b/dash/dash-renderer/src/actions/callbacks.ts index 9765c8bba1..4cbd6a3d04 100644 --- a/dash/dash-renderer/src/actions/callbacks.ts +++ b/dash/dash-renderer/src/actions/callbacks.ts @@ -418,7 +418,6 @@ function handleServerside( background: BackgroundCallbackInfo | undefined, additionalArgs: [string, string, boolean?][] | undefined, getState: any, - output: string, running: any ): Promise { if (hooks.request_pre) { @@ -572,7 +571,7 @@ function handleServerside( cacheKey: data.cacheKey as string, cancelInputs: data.cancel, progressDefault: data.progressDefault, - output + output: JSON.stringify(payload.outputs) }; dispatch(addCallbackJob(jobInfo)); job = data.job; @@ -791,9 +790,10 @@ export function executeCallback( let lastError: any; const additionalArgs: [string, string, boolean?][] = []; + const jsonOutput = JSON.stringify(payload.outputs); values(getState().callbackJobs).forEach( (job: CallbackJobPayload) => { - if (cb.callback.output === job.output) { + if (jsonOutput === job.output) { // Terminate the old jobs that are not completed // set as outdated for the callback promise to // resolve and remove after. @@ -830,7 +830,6 @@ export function executeCallback( background, additionalArgs.length ? additionalArgs : undefined, getState, - cb.callback.output, cb.callback.running );