@openfn/ws-worker 1.10.0 → 1.11.1

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 CHANGED
@@ -1,5 +1,26 @@
1
1
  # ws-worker
2
2
 
3
+ ## 1.11.1
4
+
5
+ ### Patch Changes
6
+
7
+ - d430258: Fix an issue where Lightning log level options don't get fed to the engine properly
8
+ - 2667710: Fix an issue where step completion time is logged with double units (ie, `2msms`)
9
+ - Updated dependencies [d430258]
10
+ - Updated dependencies [2667710]
11
+ - @openfn/engine-multi@1.5.1
12
+ - @openfn/runtime@1.6.3
13
+
14
+ ## 1.11.0
15
+
16
+ ### Minor Changes
17
+
18
+ - 87f10f7: Respond to `work:available` events.
19
+
20
+ When the worker receives `work:available` in the worker queue, it'll instantly trigger a claim event.
21
+
22
+ This claim is independent of the workloop and does not affect backoff in any way.
23
+
3
24
  ## 1.10.0
4
25
 
5
26
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -96,6 +96,7 @@ interface ServerApp extends Koa {
96
96
  }
97
97
  declare function createServer(engine: RuntimeEngine, options?: ServerOptions): ServerApp;
98
98
 
99
+ declare const WORK_AVAILABLE = "work-available";
99
100
  declare const CLAIM = "claim";
100
101
  declare const GET_PLAN = "fetch:plan";
101
102
  declare const GET_DATACLIP = "fetch:dataclip";
@@ -133,4 +134,4 @@ type RunReplies = {
133
134
  [STEP_COMPLETE]: l.StepCompleteReply;
134
135
  };
135
136
 
136
- 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";
@@ -960,6 +961,10 @@ var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger, So
960
961
  socket.onOpen(() => {
961
962
  didOpen = true;
962
963
  const channel = socket.channel("worker:queue");
964
+ channel.onMessage = (ev, load) => {
965
+ events.emit("message", ev, load);
966
+ return load;
967
+ };
963
968
  channel.join().receive("ok", () => {
964
969
  logger.debug("Connected to worker queue socket");
965
970
  events.emit("connect", { socket, channel });
@@ -1031,13 +1036,19 @@ function connect(app, logger, options = {}) {
1031
1036
  );
1032
1037
  logger.debug(e);
1033
1038
  };
1039
+ const onMessage = (event) => {
1040
+ if (event === WORK_AVAILABLE) {
1041
+ claim_default(app, logger, { maxWorkers: options.maxWorkflows }).catch(() => {
1042
+ });
1043
+ }
1044
+ };
1034
1045
  worker_queue_default(
1035
1046
  options.lightning,
1036
1047
  app.id,
1037
1048
  options.secret,
1038
1049
  options.socketTimeoutSeconds,
1039
1050
  logger
1040
- ).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError);
1051
+ ).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError).on("message", onMessage);
1041
1052
  }
1042
1053
  async function setupCollections(options, logger) {
1043
1054
  if (options.collectionsUrl) {
@@ -1209,5 +1220,6 @@ export {
1209
1220
  RUN_START,
1210
1221
  STEP_COMPLETE,
1211
1222
  STEP_START,
1223
+ WORK_AVAILABLE,
1212
1224
  src_default as default
1213
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";
@@ -1100,6 +1101,10 @@ var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger2, S
1100
1101
  socket.onOpen(() => {
1101
1102
  didOpen = true;
1102
1103
  const channel = socket.channel("worker:queue");
1104
+ channel.onMessage = (ev, load) => {
1105
+ events.emit("message", ev, load);
1106
+ return load;
1107
+ };
1103
1108
  channel.join().receive("ok", () => {
1104
1109
  logger2.debug("Connected to worker queue socket");
1105
1110
  events.emit("connect", { socket, channel });
@@ -1171,13 +1176,19 @@ function connect(app, logger2, options = {}) {
1171
1176
  );
1172
1177
  logger2.debug(e);
1173
1178
  };
1179
+ const onMessage = (event) => {
1180
+ if (event === WORK_AVAILABLE) {
1181
+ claim_default(app, logger2, { maxWorkers: options.maxWorkflows }).catch(() => {
1182
+ });
1183
+ }
1184
+ };
1174
1185
  worker_queue_default(
1175
1186
  options.lightning,
1176
1187
  app.id,
1177
1188
  options.secret,
1178
1189
  options.socketTimeoutSeconds,
1179
1190
  logger2
1180
- ).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError);
1191
+ ).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError).on("message", onMessage);
1181
1192
  }
1182
1193
  async function setupCollections(options, logger2) {
1183
1194
  if (options.collectionsUrl) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfn/ws-worker",
3
- "version": "1.10.0",
3
+ "version": "1.11.1",
4
4
  "description": "A Websocket Worker to connect Lightning to a Runtime Engine",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -22,10 +22,10 @@
22
22
  "koa-logger": "^3.2.1",
23
23
  "phoenix": "1.7.10",
24
24
  "ws": "^8.18.0",
25
- "@openfn/engine-multi": "1.5.0",
26
- "@openfn/logger": "1.0.4",
25
+ "@openfn/engine-multi": "1.5.1",
27
26
  "@openfn/lexicon": "^1.2.0",
28
- "@openfn/runtime": "1.6.2"
27
+ "@openfn/runtime": "1.6.3",
28
+ "@openfn/logger": "1.0.4"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/koa": "^2.13.5",
@@ -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.31"
44
+ "@openfn/lightning-mock": "2.1.1"
45
45
  },
46
46
  "files": [
47
47
  "dist",