@openfn/ws-worker 1.14.1 → 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 +15 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +18 -10
- package/dist/start.js +37 -16
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
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
|
+
|
|
10
|
+
## 1.14.2
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [f04acef]
|
|
15
|
+
- @openfn/runtime@1.7.1
|
|
16
|
+
- @openfn/engine-multi@1.6.8
|
|
17
|
+
|
|
3
18
|
## 1.14.1
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
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
|
|
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:
|
|
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.
|
|
1183
|
-
|
|
1184
|
-
options.
|
|
1185
|
-
options.
|
|
1186
|
-
|
|
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
|
|
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:
|
|
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.
|
|
1323
|
-
|
|
1324
|
-
options.
|
|
1325
|
-
options.
|
|
1326
|
-
|
|
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
|
|
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.
|
|
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",
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"koa-logger": "^3.2.1",
|
|
24
24
|
"phoenix": "1.7.10",
|
|
25
25
|
"ws": "^8.18.0",
|
|
26
|
-
"@openfn/engine-multi": "1.6.
|
|
27
|
-
"@openfn/
|
|
28
|
-
"@openfn/runtime": "1.7.
|
|
29
|
-
"@openfn/
|
|
26
|
+
"@openfn/engine-multi": "1.6.8",
|
|
27
|
+
"@openfn/logger": "1.0.5",
|
|
28
|
+
"@openfn/runtime": "1.7.1",
|
|
29
|
+
"@openfn/lexicon": "^1.2.2"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/koa": "^2.13.5",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"tsup": "^6.2.3",
|
|
44
44
|
"typescript": "^4.6.4",
|
|
45
45
|
"yargs": "^17.6.2",
|
|
46
|
-
"@openfn/lightning-mock": "2.2.
|
|
46
|
+
"@openfn/lightning-mock": "2.2.2"
|
|
47
47
|
},
|
|
48
48
|
"files": [
|
|
49
49
|
"dist",
|