diff --git a/integration-tests/execute/CHANGELOG.md b/integration-tests/execute/CHANGELOG.md index 83cf5810f..c5bba4e7d 100644 --- a/integration-tests/execute/CHANGELOG.md +++ b/integration-tests/execute/CHANGELOG.md @@ -1,5 +1,12 @@ # @openfn/integration-tests-execute +## 1.0.15 + +### Patch Changes + +- Updated dependencies [beb4617] + - @openfn/runtime@1.6.2 + ## 1.0.14 ### Patch Changes diff --git a/integration-tests/execute/package.json b/integration-tests/execute/package.json index ac30b97d4..9b65bb012 100644 --- a/integration-tests/execute/package.json +++ b/integration-tests/execute/package.json @@ -1,7 +1,7 @@ { "name": "@openfn/integration-tests-execute", "private": true, - "version": "1.0.14", + "version": "1.0.15", "description": "Job execution tests", "author": "Open Function Group ", "license": "ISC", diff --git a/integration-tests/worker/CHANGELOG.md b/integration-tests/worker/CHANGELOG.md index 093f4422b..93487188b 100644 --- a/integration-tests/worker/CHANGELOG.md +++ b/integration-tests/worker/CHANGELOG.md @@ -1,5 +1,14 @@ # @openfn/integration-tests-worker +## 1.0.75 + +### Patch Changes + +- Updated dependencies [beb4617] + - @openfn/ws-worker@1.9.2 + - @openfn/engine-multi@1.4.9 + - @openfn/lightning-mock@2.0.30 + ## 1.0.74 ### Patch Changes diff --git a/integration-tests/worker/package.json b/integration-tests/worker/package.json index dc596cf59..45a213b7e 100644 --- a/integration-tests/worker/package.json +++ b/integration-tests/worker/package.json @@ -1,7 +1,7 @@ { "name": "@openfn/integration-tests-worker", "private": true, - "version": "1.0.74", + "version": "1.0.75", "description": "Lightning WOrker integration tests", "author": "Open Function Group ", "license": "ISC", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 4ba568fb9..76e8aaa58 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,12 @@ # @openfn/cli +## 1.11.1 + +### Patch Changes + +- Updated dependencies [beb4617] + - @openfn/runtime@1.6.2 + ## 1.11.0 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index cea59eda9..60af52184 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/cli", - "version": "1.11.0", + "version": "1.11.1", "description": "CLI devtools for the openfn toolchain.", "engines": { "node": ">=18", diff --git a/packages/engine-multi/CHANGELOG.md b/packages/engine-multi/CHANGELOG.md index e1824e935..b237fcdb4 100644 --- a/packages/engine-multi/CHANGELOG.md +++ b/packages/engine-multi/CHANGELOG.md @@ -1,5 +1,12 @@ # engine-multi +## 1.4.9 + +### Patch Changes + +- Updated dependencies [beb4617] + - @openfn/runtime@1.6.2 + ## 1.4.8 ### Patch Changes diff --git a/packages/engine-multi/package.json b/packages/engine-multi/package.json index 24911749f..94fbe8497 100644 --- a/packages/engine-multi/package.json +++ b/packages/engine-multi/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/engine-multi", - "version": "1.4.8", + "version": "1.4.9", "description": "Multi-process runtime engine", "main": "dist/index.js", "type": "module", diff --git a/packages/lightning-mock/CHANGELOG.md b/packages/lightning-mock/CHANGELOG.md index 3b34d064c..2676d9b0d 100644 --- a/packages/lightning-mock/CHANGELOG.md +++ b/packages/lightning-mock/CHANGELOG.md @@ -1,5 +1,13 @@ # @openfn/lightning-mock +## 2.0.30 + +### Patch Changes + +- Updated dependencies [beb4617] + - @openfn/runtime@1.6.2 + - @openfn/engine-multi@1.4.9 + ## 2.0.29 ### Patch Changes diff --git a/packages/lightning-mock/package.json b/packages/lightning-mock/package.json index 6f864eec8..4b6676d11 100644 --- a/packages/lightning-mock/package.json +++ b/packages/lightning-mock/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/lightning-mock", - "version": "2.0.29", + "version": "2.0.30", "private": true, "description": "A mock Lightning server", "main": "dist/index.js", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index cd5fbaf30..20f2b8bd4 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,11 @@ # @openfn/runtime +## 1.6.2 + +### Patch Changes + +- beb4617: Ensure that AdaptorError details are safely serialised + ## 1.6.1 ### Patch Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index e9d8f61f4..fc517e82f 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/runtime", - "version": "1.6.1", + "version": "1.6.2", "description": "Job processing runtime.", "type": "module", "exports": { diff --git a/packages/runtime/src/errors.ts b/packages/runtime/src/errors.ts index 4c993ea5b..c31ec5a57 100644 --- a/packages/runtime/src/errors.ts +++ b/packages/runtime/src/errors.ts @@ -1,3 +1,4 @@ +import stringify from 'fast-safe-stringify'; import { ErrorPosition } from './types'; export function assertImportError(e: any) { @@ -202,10 +203,11 @@ export class AdaptorError extends RTError { this.details = Object.assign( { - type: error.type || error.name, message: error.message, }, - error + // The incoming error is untrusted but MUST be serialisable + // Or else we'll have problems in threaded environments + JSON.parse(stringify(error)) ); if (typeof error === 'string') { diff --git a/packages/runtime/src/execute/expression.ts b/packages/runtime/src/execute/expression.ts index 011a6f268..a161fb696 100644 --- a/packages/runtime/src/execute/expression.ts +++ b/packages/runtime/src/execute/expression.ts @@ -137,7 +137,6 @@ export const wrapOperation = ( try { result = await fn(newState); } catch (e: any) { - console.log(e); if (e.stack) { const containsVMFrame = e.stack.match(/at vm:module\(0\)/); @@ -151,9 +150,15 @@ export const wrapOperation = ( // (this cuts out low level language errors like TypeError) do { const next = frames.shift(); + // If we hit a frame in runtime code, this is not an adaptor error + if (/@openfn\/runtime/.test(next)) { + break; + } if ( // detect an adaptor prod, adaptor monorepo, or vm frame - /(@openfn\/language-)|(packages\/.+\/dist)|(vm:module)/.test(next) + /(@openfn\/language-)|(packages\/.+\/dist)|(vm:module)|(node_modules)/.test( + next + ) ) { firstFrame = next; break; diff --git a/packages/runtime/test/errors.test.ts b/packages/runtime/test/errors.test.ts index 5fe352757..2153e2607 100644 --- a/packages/runtime/test/errors.test.ts +++ b/packages/runtime/test/errors.test.ts @@ -404,7 +404,6 @@ test('fail on adaptor error and map to the top operation', async (t) => { details: { code: 1234, message: 'adaptor err', - type: 'Error', }, message: 'adaptor err', name: 'AdaptorError', @@ -460,7 +459,6 @@ test('fail on nested adaptor error and map to a position in the vm', async (t) = details: { code: 1234, message: 'adaptor err', - type: 'Error', }, message: 'adaptor err', name: 'AdaptorError', @@ -548,3 +546,17 @@ test('AdaptorError: if no operation, extract position from stack', (t) => { t.deepEqual(adaptorError.pos, { column: 27, line: 2 }); t.falsy(adaptorError.operationName); }); + +test('AdaptorError: ensure that error objects are safely serialised', (t) => { + const originalError = { + message: 'e', + name: 'AxiosError', + fn: () => {}, + }; + + const adaptorError = new AdaptorError(originalError); + t.deepEqual(adaptorError.details, { + message: 'e', + name: 'AxiosError', + }); +}); diff --git a/packages/ws-worker/CHANGELOG.md b/packages/ws-worker/CHANGELOG.md index b49f89c11..d1740278b 100644 --- a/packages/ws-worker/CHANGELOG.md +++ b/packages/ws-worker/CHANGELOG.md @@ -1,5 +1,14 @@ # ws-worker +## 1.9.2 + +### Patch Changes + +- beb4617: Fix an issue where a DataCloneError can occur after an exception is thrown +- Updated dependencies [beb4617] + - @openfn/runtime@1.6.2 + - @openfn/engine-multi@1.4.9 + ## 1.9.1 ### Patch Changes diff --git a/packages/ws-worker/package.json b/packages/ws-worker/package.json index 8015381c6..a707c3e57 100644 --- a/packages/ws-worker/package.json +++ b/packages/ws-worker/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/ws-worker", - "version": "1.9.1", + "version": "1.9.2", "description": "A Websocket Worker to connect Lightning to a Runtime Engine", "main": "dist/index.js", "type": "module",