diff --git a/.changeset/green-coins-jam.md b/.changeset/green-coins-jam.md new file mode 100644 index 000000000..684f7cbc5 --- /dev/null +++ b/.changeset/green-coins-jam.md @@ -0,0 +1,5 @@ +--- +'@openfn/runtime': patch +--- + +Use 'debug' logging for edge condition evaluation reports diff --git a/integration-tests/worker/CHANGELOG.md b/integration-tests/worker/CHANGELOG.md index 79ef6af97..3bc81b287 100644 --- a/integration-tests/worker/CHANGELOG.md +++ b/integration-tests/worker/CHANGELOG.md @@ -1,5 +1,14 @@ # @openfn/integration-tests-worker +## 1.0.27 + +### Patch Changes + +- Updated dependencies [f228fd5] + - @openfn/ws-worker@0.4.0 + - @openfn/engine-multi@0.2.5 + - @openfn/lightning-mock@1.1.7 + ## 1.0.26 ### Patch Changes diff --git a/integration-tests/worker/package.json b/integration-tests/worker/package.json index 96dd4d120..df244f7f2 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.26", + "version": "1.0.27", "description": "Lightning WOrker integration tests", "author": "Open Function Group ", "license": "ISC", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 373b71d2a..973c23c00 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,12 @@ # @openfn/cli +## 0.4.12 + +### Patch Changes + +- Updated dependencies [f228fd5] + - @openfn/runtime@0.2.3 + ## 0.4.11 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index ffd2e4bf0..37cce84d1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/cli", - "version": "0.4.11", + "version": "0.4.12", "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 5cceb7e65..b9653a4ad 100644 --- a/packages/engine-multi/CHANGELOG.md +++ b/packages/engine-multi/CHANGELOG.md @@ -1,5 +1,12 @@ # engine-multi +## 0.2.5 + +### Patch Changes + +- Updated dependencies [f228fd5] + - @openfn/runtime@0.2.3 + ## 0.2.4 ### Patch Changes diff --git a/packages/engine-multi/package.json b/packages/engine-multi/package.json index 1a40aa5c0..cd55e85aa 100644 --- a/packages/engine-multi/package.json +++ b/packages/engine-multi/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/engine-multi", - "version": "0.2.4", + "version": "0.2.5", "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 55f48ff84..ed54904f9 100644 --- a/packages/lightning-mock/CHANGELOG.md +++ b/packages/lightning-mock/CHANGELOG.md @@ -1,5 +1,13 @@ # @openfn/lightning-mock +## 1.1.7 + +### Patch Changes + +- Updated dependencies [f228fd5] + - @openfn/runtime@0.2.3 + - @openfn/engine-multi@0.2.5 + ## 1.1.6 ### Patch Changes diff --git a/packages/lightning-mock/package.json b/packages/lightning-mock/package.json index 013120445..1a9b04988 100644 --- a/packages/lightning-mock/package.json +++ b/packages/lightning-mock/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/lightning-mock", - "version": "1.1.6", + "version": "1.1.7", "private": true, "description": "A mock Lightning server", "main": "dist/index.js", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index a7b121b6d..65122a55c 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,11 @@ # @openfn/runtime +## 0.2.3 + +### Patch Changes + +- f228fd5: Add edge evaluation logging to runtime + ## 0.2.2 ### Patch Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 37996ccce..35ef7bbd4 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/runtime", - "version": "0.2.2", + "version": "0.2.3", "description": "Job processing runtime.", "type": "module", "exports": { diff --git a/packages/runtime/src/execute/job.ts b/packages/runtime/src/execute/job.ts index 7eba3b8cb..b5880a59d 100644 --- a/packages/runtime/src/execute/job.ts +++ b/packages/runtime/src/execute/job.ts @@ -10,6 +10,7 @@ import type { JobNodeID, State, } from '../types'; +import { Logger } from '@openfn/logger'; import { EdgeConditionError } from '../errors'; import { NOTIFY_INIT_COMPLETE, @@ -43,7 +44,7 @@ const loadState = async ( return job.state; }; -const calculateNext = (job: CompiledJobNode, result: any) => { +const calculateNext = (job: CompiledJobNode, result: any, logger: Logger) => { const next: string[] = []; if (job.next) { for (const nextJobId in job.next) { @@ -58,11 +59,17 @@ const calculateNext = (job: CompiledJobNode, result: any) => { if (typeof edge.condition === 'function') { try { if (!edge.condition(result)) { + logger.debug( + `Edge ${edge.condition.toString()} returned false; ${nextJobId} will NOT be executed` + ); continue; } } catch (e: any) { throw new EdgeConditionError(e.message); } + logger.debug( + `Edge ${edge.condition.toString()} returned true; ${nextJobId} will be executed next` + ); } } next.push(nextJobId); @@ -136,7 +143,7 @@ const executeJob = async ( logger.error(`Failed job ${jobId} after ${duration}`); report(state, jobId, error); - next = calculateNext(job, result); + next = calculateNext(job, result, logger); notify(NOTIFY_JOB_ERROR, { duration: Date.now() - startTime, @@ -175,7 +182,7 @@ const executeJob = async ( `Final memory usage: [job ${humanJobMemory}mb] [system ${humanSystemMemory}mb]` ); - next = calculateNext(job, result); + next = calculateNext(job, result, logger); notify(NOTIFY_JOB_COMPLETE, { duration: Date.now() - duration, state: result, @@ -189,7 +196,7 @@ const executeJob = async ( } } else { // calculate next for trigger nodes - next = calculateNext(job, result); + next = calculateNext(job, result, logger); } if (next.length && !didError && !result) { diff --git a/packages/ws-worker/CHANGELOG.md b/packages/ws-worker/CHANGELOG.md index 5811e478a..1cd373f6e 100644 --- a/packages/ws-worker/CHANGELOG.md +++ b/packages/ws-worker/CHANGELOG.md @@ -1,5 +1,17 @@ # ws-worker +## 0.4.0 + +### Minor Changes + +- f228fd5: Add support for initial edge conditions in worker + +### Patch Changes + +- Updated dependencies [f228fd5] + - @openfn/runtime@0.2.3 + - @openfn/engine-multi@0.2.5 + ## 0.3.2 ### Patch Changes diff --git a/packages/ws-worker/package.json b/packages/ws-worker/package.json index 68ff7ac76..5bbcedaa8 100644 --- a/packages/ws-worker/package.json +++ b/packages/ws-worker/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/ws-worker", - "version": "0.3.2", + "version": "0.4.0", "description": "A Websocket Worker to connect Lightning to a Runtime Engine", "main": "dist/index.js", "type": "module", diff --git a/packages/ws-worker/src/util/convert-attempt.ts b/packages/ws-worker/src/util/convert-attempt.ts index 78caa6355..d2bbd14f7 100644 --- a/packages/ws-worker/src/util/convert-attempt.ts +++ b/packages/ws-worker/src/util/convert-attempt.ts @@ -25,6 +25,14 @@ const mapEdgeCondition = (edge: Edge) => { return condition; }; +const mapTriggerEdgeCondition = (edge: Edge) => { + const { condition } = edge; + // This handles cron triggers with undefined conditions and the 'always' string. + if (condition === undefined || condition === 'always') return true; + // Otherwise, we will return the condition and assume it's a valid JS expression. + return condition; +}; + export default ( attempt: Attempt ): { plan: ExecutionPlan; options: AttemptOptions } => { @@ -63,7 +71,7 @@ export default ( nodes[id].next = connectedEdges.reduce((obj, edge) => { if (edge.enabled !== false) { // @ts-ignore - obj[edge.target_job_id] = true; + obj[edge.target_job_id] = mapTriggerEdgeCondition(edge); } return obj; }, {}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c623582ad..7e6157906 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -412,8 +412,6 @@ importers: specifier: ^5.1.6 version: 5.1.6 - packages/engine-multi/tmp/a/b/c: {} - packages/engine-multi/tmp/repo: {} packages/lightning-mock: