{"record":{"id":"24937095dd6edcba","repo":"gatsbyjs/gatsby","slug":"received-message-about-failed-job-that-wasn-t-sche","errorCode":null,"errorMessage":"Received message about failed job that wasn't scheduled by this worker","messagePattern":"Received message about failed job that wasn't scheduled by this worker","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/gatsby/src/utils/jobs/worker-messaging.ts","lineNumber":96,"sourceCode":"    gatsbyWorkerMessenger.onMessage(msg => {\n      if (msg.type === MESSAGE_TYPES.JOB_COMPLETED) {\n        const { id, result } = msg.payload\n        const deferredPromise = deferredWorkerPromises.get(id)\n\n        if (!deferredPromise) {\n          throw new Error(\n            `Received message about completed job that wasn't scheduled by this worker`\n          )\n        }\n\n        deferredPromise.resolve(result)\n        deferredWorkerPromises.delete(id)\n      } else if (msg.type === MESSAGE_TYPES.JOB_FAILED) {\n        const { id, error, stack } = msg.payload\n        const deferredPromise = deferredWorkerPromises.get(id)\n\n        if (!deferredPromise) {\n          throw new Error(\n            `Received message about failed job that wasn't scheduled by this worker`\n          )\n        }\n\n        const errorObject = new WorkerError(error)\n        if (stack) {\n          errorObject.stack = stack\n        }\n        deferredPromise.reject(errorObject)\n        deferredWorkerPromises.delete(id)\n      }\n    })\n  }\n}\n\n/**\n * Forwards job to main process (if executed in worker context) and returns\n * a promise. Will return `undefined` if called not in worker context.","sourceCodeStart":78,"sourceCodeEnd":114,"githubUrl":"https://github.com/gatsbyjs/gatsby/blob/e85d62f1779e353eaac1753211629a26d123e26c/packages/gatsby/src/utils/jobs/worker-messaging.ts#L78-L114","documentation":"Mirror of the completed-job guard: a JOB_FAILED message arrived whose job id has no deferred promise in this worker's deferredWorkerPromises map, so the failure cannot be routed back to the awaiting plugin. Internal invariant break in worker/main job messaging.","triggerScenarios":"Thrown at packages/gatsby/src/utils/jobs/worker-messaging.ts:96 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Report as a Gatsby bug with the job id","Verify plugin code does not fabricate job ids","Update Gatsby to a version with jobs-messaging fixes"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e85d62f1779e353eaac1753211629a26d123e26c","analyzedAt":"2026-08-26T17:50:09.662Z","contentChangedAt":"2026-08-26T17:50:09.662Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}