@openfn/ws-worker 1.14.2 → 1.14.3

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,12 @@
1
1
  # ws-worker
2
2
 
3
+ ## 1.14.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 032430f: Increase timeout on claim events
8
+ - 0957412: Stop trying to claim after the queue has been closed
9
+
3
10
  ## 1.14.2
4
11
 
5
12
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -78,6 +78,7 @@ type ServerOptions = {
78
78
  sentryEnv?: string;
79
79
  socketTimeoutSeconds?: number;
80
80
  messageTimeoutSeconds?: number;
81
+ claimTimeoutSeconds?: number;
81
82
  payloadLimitMb?: number;
82
83
  collectionsVersion?: string;
83
84
  collectionsUrl?: string;
package/dist/index.js CHANGED
@@ -1052,7 +1052,16 @@ var generateWorkerToken = async (secret, workerId, logger) => {
1052
1052
  var worker_token_default = generateWorkerToken;
1053
1053
 
1054
1054
  // src/channels/worker-queue.ts
1055
- var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger, SocketConstructor = PhxSocket) => {
1055
+ var DEFAULT_MESSAGE_TIMEOUT_SECONDS = 30;
1056
+ var DEFAULT_CLAIM_TIMEOUT_SECONDS = 60 * 60;
1057
+ var connectToWorkerQueue = (endpoint, serverId, secret, logger, options) => {
1058
+ const {
1059
+ // Sets the DEFAULT timeout for all messages on the websocket
1060
+ // This can be overridden by different channels (although we tend not to)
1061
+ messageTimeout = DEFAULT_MESSAGE_TIMEOUT_SECONDS,
1062
+ claimTimeout = DEFAULT_CLAIM_TIMEOUT_SECONDS,
1063
+ SocketConstructor = PhxSocket
1064
+ } = options;
1056
1065
  const events = new EventEmitter();
1057
1066
  Sentry5.addBreadcrumb({
1058
1067
  category: "lifecycle",
@@ -1073,7 +1082,7 @@ var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger, So
1073
1082
  const socket = new SocketConstructor(endpoint, {
1074
1083
  params,
1075
1084
  transport: WebSocket,
1076
- timeout: timeout * 1e3,
1085
+ timeout: messageTimeout * 1e3,
1077
1086
  reconnectAfterMs: (tries) => Math.max(tries * 1e3)
1078
1087
  });
1079
1088
  let didOpen = false;
@@ -1091,7 +1100,7 @@ var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger, So
1091
1100
  events.emit("message", ev, load);
1092
1101
  return load;
1093
1102
  };
1094
- channel.join().receive("ok", () => {
1103
+ channel.join(claimTimeout * 1e3).receive("ok", () => {
1095
1104
  logger.debug("Connected to worker queue socket");
1096
1105
  events.emit("connect", { socket, channel });
1097
1106
  }).receive("error", (e) => {
@@ -1178,13 +1187,12 @@ function connect(app, logger, options = {}) {
1178
1187
  });
1179
1188
  }
1180
1189
  };
1181
- worker_queue_default(
1182
- options.lightning,
1183
- app.id,
1184
- options.secret,
1185
- options.socketTimeoutSeconds,
1186
- logger
1187
- ).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError).on("message", onMessage);
1190
+ worker_queue_default(options.lightning, app.id, options.secret, logger, {
1191
+ // TODO: options.socketTimeoutSeconds wins because this is what USED to be used
1192
+ // But it's deprecated and should be removed soon
1193
+ messageTimeout: options.socketTimeoutSeconds ?? options.messageTimeoutSeconds,
1194
+ claimTimeout: options.claimTimeoutSeconds
1195
+ }).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError).on("message", onMessage);
1188
1196
  }
1189
1197
  async function setupCollections(options, logger) {
1190
1198
  if (options.collectionsUrl) {
package/dist/start.js CHANGED
@@ -1192,7 +1192,16 @@ var generateWorkerToken = async (secret, workerId, logger2) => {
1192
1192
  var worker_token_default = generateWorkerToken;
1193
1193
 
1194
1194
  // src/channels/worker-queue.ts
1195
- var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger2, SocketConstructor = PhxSocket) => {
1195
+ var DEFAULT_MESSAGE_TIMEOUT_SECONDS = 30;
1196
+ var DEFAULT_CLAIM_TIMEOUT_SECONDS = 60 * 60;
1197
+ var connectToWorkerQueue = (endpoint, serverId, secret, logger2, options) => {
1198
+ const {
1199
+ // Sets the DEFAULT timeout for all messages on the websocket
1200
+ // This can be overridden by different channels (although we tend not to)
1201
+ messageTimeout = DEFAULT_MESSAGE_TIMEOUT_SECONDS,
1202
+ claimTimeout = DEFAULT_CLAIM_TIMEOUT_SECONDS,
1203
+ SocketConstructor = PhxSocket
1204
+ } = options;
1196
1205
  const events = new EventEmitter2();
1197
1206
  Sentry5.addBreadcrumb({
1198
1207
  category: "lifecycle",
@@ -1213,7 +1222,7 @@ var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger2, S
1213
1222
  const socket = new SocketConstructor(endpoint, {
1214
1223
  params,
1215
1224
  transport: WebSocket,
1216
- timeout: timeout * 1e3,
1225
+ timeout: messageTimeout * 1e3,
1217
1226
  reconnectAfterMs: (tries) => Math.max(tries * 1e3)
1218
1227
  });
1219
1228
  let didOpen = false;
@@ -1231,7 +1240,7 @@ var connectToWorkerQueue = (endpoint, serverId, secret, timeout = 10, logger2, S
1231
1240
  events.emit("message", ev, load);
1232
1241
  return load;
1233
1242
  };
1234
- channel.join().receive("ok", () => {
1243
+ channel.join(claimTimeout * 1e3).receive("ok", () => {
1235
1244
  logger2.debug("Connected to worker queue socket");
1236
1245
  events.emit("connect", { socket, channel });
1237
1246
  }).receive("error", (e) => {
@@ -1318,13 +1327,12 @@ function connect(app, logger2, options = {}) {
1318
1327
  });
1319
1328
  }
1320
1329
  };
1321
- worker_queue_default(
1322
- options.lightning,
1323
- app.id,
1324
- options.secret,
1325
- options.socketTimeoutSeconds,
1326
- logger2
1327
- ).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError).on("message", onMessage);
1330
+ worker_queue_default(options.lightning, app.id, options.secret, logger2, {
1331
+ // TODO: options.socketTimeoutSeconds wins because this is what USED to be used
1332
+ // But it's deprecated and should be removed soon
1333
+ messageTimeout: options.socketTimeoutSeconds ?? options.messageTimeoutSeconds,
1334
+ claimTimeout: options.claimTimeoutSeconds
1335
+ }).on("connect", onConnect).on("disconnect", onDisconnect).on("error", onError).on("message", onMessage);
1328
1336
  }
1329
1337
  async function setupCollections(options, logger2) {
1330
1338
  if (options.collectionsUrl) {
@@ -6352,8 +6360,6 @@ var yargs_default = Yargs;
6352
6360
  // src/util/cli.ts
6353
6361
  var DEFAULT_PORT2 = 2222;
6354
6362
  var DEFAULT_WORKER_CAPACITY = 5;
6355
- var DEFAULT_SOCKET_TIMEOUT_SECONDS = 10;
6356
- var DEFAULT_MESSAGE_TIMEOUT_SECONDS = 30;
6357
6363
  function setArg(argValue, envValue, defaultValue) {
6358
6364
  if (Array.isArray(defaultValue) && !argValue && typeof envValue === "string") {
6359
6365
  return envValue.split(",");
@@ -6368,6 +6374,7 @@ function parseArgs(argv) {
6368
6374
  OPENFN_ADAPTORS_REPO,
6369
6375
  WORKER_BACKOFF,
6370
6376
  WORKER_CAPACITY,
6377
+ WORKER_CLAIM_TIMEOUT_SECONDS,
6371
6378
  WORKER_COLLECTIONS_URL,
6372
6379
  WORKER_COLLECTIONS_VERSION,
6373
6380
  WORKER_LIGHTNING_PUBLIC_KEY,
@@ -6410,9 +6417,12 @@ function parseArgs(argv) {
6410
6417
  }).option("sentry-env", {
6411
6418
  description: "Sentry environment. Defaults to 'dev'. Env: WORKER_SENTRY_ENV"
6412
6419
  }).option("socket-timeout", {
6413
- description: `Timeout for websockets to Lightning, in seconds. Defaults to 10.Env: WORKER_SOCKET_TIMEOUT_SECONDS`
6420
+ description: `[deprecated] Timeout for websockets to Lightning, in seconds. Defaults to 10.Env: WORKER_SOCKET_TIMEOUT_SECONDS`,
6421
+ hidden: true
6414
6422
  }).option("message-timeout", {
6415
- description: `Timeout for messages in the run channel in seconds. Defaults to 1. Env: WORKER_MESSAGE_TIMEOUT_SECONDS`
6423
+ description: `Timeout for all messages send to lightning via websocket. Defaults to 30. Env: WORKER_MESSAGE_TIMEOUT_SECONDS`
6424
+ }).option("claim-timeout", {
6425
+ description: `Timeout for claim requests for new Runs. This should be set to a high value or else runs may be lost. Defaults to 3600 (1 hour). Env: WORKER_CLAIM_TIMEOUT_SECONDS`
6416
6426
  }).option("lightning-public-key", {
6417
6427
  description: "Base64-encoded public key. Used to verify run tokens. Env: WORKER_LIGHTNING_PUBLIC_KEY"
6418
6428
  }).option("log", {
@@ -6483,10 +6493,14 @@ function parseArgs(argv) {
6483
6493
  WORKER_MAX_RUN_DURATION_SECONDS,
6484
6494
  300
6485
6495
  ),
6496
+ claimTimeoutSeconds: setArg(
6497
+ args2.claimTimeoutSeconds,
6498
+ WORKER_CLAIM_TIMEOUT_SECONDS,
6499
+ DEFAULT_CLAIM_TIMEOUT_SECONDS
6500
+ ),
6486
6501
  socketTimeoutSeconds: setArg(
6487
6502
  args2.socketTimeoutSeconds,
6488
- WORKER_SOCKET_TIMEOUT_SECONDS,
6489
- DEFAULT_SOCKET_TIMEOUT_SECONDS
6503
+ WORKER_SOCKET_TIMEOUT_SECONDS
6490
6504
  ),
6491
6505
  messageTimeoutSeconds: setArg(
6492
6506
  args2.messageTimeoutSeconds,
@@ -6535,8 +6549,15 @@ function engineReady(engine) {
6535
6549
  collectionsUrl: args.collectionsUrl,
6536
6550
  monorepoDir: args.monorepoDir,
6537
6551
  messageTimeoutSeconds: args.messageTimeoutSeconds,
6552
+ claimTimeoutSeconds: args.claimTimeoutSeconds,
6553
+ // deprecated!
6538
6554
  socketTimeoutSeconds: args.socketTimeoutSeconds
6539
6555
  };
6556
+ if ("socketTimeoutSeconds" in args) {
6557
+ logger.warn(
6558
+ "WARNING: deprecated socketTimeoutSeconds value passed.\n\nThis will be respected as the default socket timeout value, but will be removed from future versions of the worker."
6559
+ );
6560
+ }
6540
6561
  if (args.lightningPublicKey) {
6541
6562
  logger.info(
6542
6563
  "Lightning public key found: run tokens from Lightning will be verified by this worker"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfn/ws-worker",
3
- "version": "1.14.2",
3
+ "version": "1.14.3",
4
4
  "description": "A Websocket Worker to connect Lightning to a Runtime Engine",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -24,9 +24,9 @@
24
24
  "phoenix": "1.7.10",
25
25
  "ws": "^8.18.0",
26
26
  "@openfn/engine-multi": "1.6.8",
27
- "@openfn/lexicon": "^1.2.2",
28
27
  "@openfn/logger": "1.0.5",
29
- "@openfn/runtime": "1.7.1"
28
+ "@openfn/runtime": "1.7.1",
29
+ "@openfn/lexicon": "^1.2.2"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/koa": "^2.13.5",