@openfn/ws-worker 1.9.2 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +16 -1
- package/dist/start.js +15 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# ws-worker
|
|
2
2
|
|
|
3
|
+
## 1.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 87f10f7: Respond to `work:available` events.
|
|
8
|
+
|
|
9
|
+
When the worker receives `work:available` in the worker queue, it'll instantly trigger a claim event.
|
|
10
|
+
|
|
11
|
+
This claim is independent of the workloop and does not affect backoff in any way.
|
|
12
|
+
|
|
13
|
+
## 1.10.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- 1857b46: Allow configuration of job log level
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [1857b46]
|
|
22
|
+
- @openfn/engine-multi@1.5.0
|
|
23
|
+
- @openfn/lexicon@1.2.0
|
|
24
|
+
- @openfn/runtime@1.6.2
|
|
25
|
+
|
|
3
26
|
## 1.9.2
|
|
4
27
|
|
|
5
28
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import Koa from 'koa';
|
|
3
|
-
import { Logger } from '@openfn/logger';
|
|
3
|
+
import { LogLevel, Logger } from '@openfn/logger';
|
|
4
4
|
import * as l from '@openfn/lexicon/lightning';
|
|
5
5
|
import { ClaimRun } from '@openfn/lexicon/lightning';
|
|
6
6
|
import { ExecuteOptions, RuntimeEngine } from '@openfn/engine-multi';
|
|
@@ -49,6 +49,7 @@ interface Channel extends Channel$1 {
|
|
|
49
49
|
type WorkerRunOptions = ExecuteOptions & {
|
|
50
50
|
outputDataclips?: boolean;
|
|
51
51
|
payloadLimitMb?: number;
|
|
52
|
+
jobLogLevel?: LogLevel;
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
type Context = {
|
|
@@ -95,6 +96,7 @@ interface ServerApp extends Koa {
|
|
|
95
96
|
}
|
|
96
97
|
declare function createServer(engine: RuntimeEngine, options?: ServerOptions): ServerApp;
|
|
97
98
|
|
|
99
|
+
declare const WORK_AVAILABLE = "work-available";
|
|
98
100
|
declare const CLAIM = "claim";
|
|
99
101
|
declare const GET_PLAN = "fetch:plan";
|
|
100
102
|
declare const GET_DATACLIP = "fetch:dataclip";
|
|
@@ -132,4 +134,4 @@ type RunReplies = {
|
|
|
132
134
|
[STEP_COMPLETE]: l.StepCompleteReply;
|
|
133
135
|
};
|
|
134
136
|
|
|
135
|
-
export { CLAIM, GET_CREDENTIAL, GET_DATACLIP, GET_PLAN, INTERNAL_RUN_COMPLETE, QueueEventReplies, QueueEvents, RUN_COMPLETE, RUN_LOG, RUN_START, RunEvents, RunReplies, STEP_COMPLETE, STEP_START, createServer as default };
|
|
137
|
+
export { CLAIM, GET_CREDENTIAL, GET_DATACLIP, GET_PLAN, INTERNAL_RUN_COMPLETE, QueueEventReplies, QueueEvents, RUN_COMPLETE, RUN_LOG, RUN_START, RunEvents, RunReplies, STEP_COMPLETE, STEP_START, WORK_AVAILABLE, createServer as default };
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { humanId } from "human-id";
|
|
|
10
10
|
import { createMockLogger as createMockLogger2 } from "@openfn/logger";
|
|
11
11
|
|
|
12
12
|
// src/events.ts
|
|
13
|
+
var WORK_AVAILABLE = "work-available";
|
|
13
14
|
var CLAIM = "claim";
|
|
14
15
|
var GET_PLAN = "fetch:plan";
|
|
15
16
|
var GET_DATACLIP = "fetch:dataclip";
|
|
@@ -287,6 +288,9 @@ var convert_lightning_plan_default = (run, options = {}) => {
|
|
|
287
288
|
if ("output_dataclips" in run.options) {
|
|
288
289
|
engineOpts.outputDataclips = run.options.output_dataclips;
|
|
289
290
|
}
|
|
291
|
+
if ("job_log_level" in run.options) {
|
|
292
|
+
engineOpts.jobLogLevel = run.options.job_log_level;
|
|
293
|
+
}
|
|
290
294
|
}
|
|
291
295
|
const plan = {
|
|
292
296
|
id: run.id,
|
|
@@ -957,6 +961,10 @@ var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger, So
|
|
|
957
961
|
socket.onOpen(() => {
|
|
958
962
|
didOpen = true;
|
|
959
963
|
const channel = socket.channel("worker:queue");
|
|
964
|
+
channel.onMessage = (ev, load) => {
|
|
965
|
+
events.emit("message", ev, load);
|
|
966
|
+
return load;
|
|
967
|
+
};
|
|
960
968
|
channel.join().receive("ok", () => {
|
|
961
969
|
logger.debug("Connected to worker queue socket");
|
|
962
970
|
events.emit("connect", { socket, channel });
|
|
@@ -1028,13 +1036,19 @@ function connect(app, logger, options = {}) {
|
|
|
1028
1036
|
);
|
|
1029
1037
|
logger.debug(e);
|
|
1030
1038
|
};
|
|
1039
|
+
const onMessage = (event) => {
|
|
1040
|
+
if (event === WORK_AVAILABLE) {
|
|
1041
|
+
claim_default(app, logger, { maxWorkers: options.maxWorkflows }).catch(() => {
|
|
1042
|
+
});
|
|
1043
|
+
}
|
|
1044
|
+
};
|
|
1031
1045
|
worker_queue_default(
|
|
1032
1046
|
options.lightning,
|
|
1033
1047
|
app.id,
|
|
1034
1048
|
options.secret,
|
|
1035
1049
|
options.socketTimeoutSeconds,
|
|
1036
1050
|
logger
|
|
1037
|
-
).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError);
|
|
1051
|
+
).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError).on("message", onMessage);
|
|
1038
1052
|
}
|
|
1039
1053
|
async function setupCollections(options, logger) {
|
|
1040
1054
|
if (options.collectionsUrl) {
|
|
@@ -1206,5 +1220,6 @@ export {
|
|
|
1206
1220
|
RUN_START,
|
|
1207
1221
|
STEP_COMPLETE,
|
|
1208
1222
|
STEP_START,
|
|
1223
|
+
WORK_AVAILABLE,
|
|
1209
1224
|
src_default as default
|
|
1210
1225
|
};
|
package/dist/start.js
CHANGED
|
@@ -150,6 +150,7 @@ import { humanId } from "human-id";
|
|
|
150
150
|
import { createMockLogger as createMockLogger2 } from "@openfn/logger";
|
|
151
151
|
|
|
152
152
|
// src/events.ts
|
|
153
|
+
var WORK_AVAILABLE = "work-available";
|
|
153
154
|
var CLAIM = "claim";
|
|
154
155
|
var GET_PLAN = "fetch:plan";
|
|
155
156
|
var GET_DATACLIP = "fetch:dataclip";
|
|
@@ -427,6 +428,9 @@ var convert_lightning_plan_default = (run2, options = {}) => {
|
|
|
427
428
|
if ("output_dataclips" in run2.options) {
|
|
428
429
|
engineOpts.outputDataclips = run2.options.output_dataclips;
|
|
429
430
|
}
|
|
431
|
+
if ("job_log_level" in run2.options) {
|
|
432
|
+
engineOpts.jobLogLevel = run2.options.job_log_level;
|
|
433
|
+
}
|
|
430
434
|
}
|
|
431
435
|
const plan = {
|
|
432
436
|
id: run2.id,
|
|
@@ -1097,6 +1101,10 @@ var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger2, S
|
|
|
1097
1101
|
socket.onOpen(() => {
|
|
1098
1102
|
didOpen = true;
|
|
1099
1103
|
const channel = socket.channel("worker:queue");
|
|
1104
|
+
channel.onMessage = (ev, load) => {
|
|
1105
|
+
events.emit("message", ev, load);
|
|
1106
|
+
return load;
|
|
1107
|
+
};
|
|
1100
1108
|
channel.join().receive("ok", () => {
|
|
1101
1109
|
logger2.debug("Connected to worker queue socket");
|
|
1102
1110
|
events.emit("connect", { socket, channel });
|
|
@@ -1168,13 +1176,19 @@ function connect(app, logger2, options = {}) {
|
|
|
1168
1176
|
);
|
|
1169
1177
|
logger2.debug(e);
|
|
1170
1178
|
};
|
|
1179
|
+
const onMessage = (event) => {
|
|
1180
|
+
if (event === WORK_AVAILABLE) {
|
|
1181
|
+
claim_default(app, logger2, { maxWorkers: options.maxWorkflows }).catch(() => {
|
|
1182
|
+
});
|
|
1183
|
+
}
|
|
1184
|
+
};
|
|
1171
1185
|
worker_queue_default(
|
|
1172
1186
|
options.lightning,
|
|
1173
1187
|
app.id,
|
|
1174
1188
|
options.secret,
|
|
1175
1189
|
options.socketTimeoutSeconds,
|
|
1176
1190
|
logger2
|
|
1177
|
-
).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError);
|
|
1191
|
+
).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError).on("message", onMessage);
|
|
1178
1192
|
}
|
|
1179
1193
|
async function setupCollections(options, logger2) {
|
|
1180
1194
|
if (options.collectionsUrl) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openfn/ws-worker",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "A Websocket Worker to connect Lightning to a Runtime Engine",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"koa-logger": "^3.2.1",
|
|
23
23
|
"phoenix": "1.7.10",
|
|
24
24
|
"ws": "^8.18.0",
|
|
25
|
-
"@openfn/
|
|
26
|
-
"@openfn/lexicon": "^1.1.0",
|
|
25
|
+
"@openfn/lexicon": "^1.2.0",
|
|
27
26
|
"@openfn/logger": "1.0.4",
|
|
27
|
+
"@openfn/engine-multi": "1.5.0",
|
|
28
28
|
"@openfn/runtime": "1.6.2"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"tsup": "^6.2.3",
|
|
42
42
|
"typescript": "^4.6.4",
|
|
43
43
|
"yargs": "^17.6.2",
|
|
44
|
-
"@openfn/lightning-mock": "2.0
|
|
44
|
+
"@openfn/lightning-mock": "2.1.0"
|
|
45
45
|
},
|
|
46
46
|
"files": [
|
|
47
47
|
"dist",
|