@qlever-llc/trellis 0.10.17 → 0.19.0-rc.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/esm/auth/mod.d.ts +1 -1
- package/esm/auth/mod.d.ts.map +1 -1
- package/esm/auth/mod.js +1 -1
- package/esm/auth/protocol.d.ts +416 -398
- package/esm/auth/protocol.d.ts.map +1 -1
- package/esm/auth/protocol.js +35 -33
- package/esm/codec.d.ts +1 -0
- package/esm/codec.d.ts.map +1 -1
- package/esm/codec.js +1 -0
- package/esm/contract_support/canonical.d.ts +3 -0
- package/esm/contract_support/canonical.d.ts.map +1 -1
- package/esm/contract_support/canonical.js +3 -0
- package/esm/contract_support/mod.d.ts +28 -4
- package/esm/contract_support/mod.d.ts.map +1 -1
- package/esm/contract_support/mod.js +85 -4
- package/esm/contract_support/protocol.d.ts +92 -7
- package/esm/contract_support/protocol.d.ts.map +1 -1
- package/esm/contract_support/protocol.js +40 -6
- package/esm/errors/index.d.ts +9 -9
- package/esm/generated-sdk/auth/api.d.ts +4 -1
- package/esm/generated-sdk/auth/api.d.ts.map +1 -1
- package/esm/generated-sdk/auth/api.js +6 -1
- package/esm/generated-sdk/auth/client.d.ts +47 -32
- package/esm/generated-sdk/auth/client.d.ts.map +1 -1
- package/esm/generated-sdk/auth/contract.d.ts +1 -1
- package/esm/generated-sdk/auth/contract.d.ts.map +1 -1
- package/esm/generated-sdk/auth/contract.js +1570 -1202
- package/esm/generated-sdk/auth/schemas.d.ts +1757 -1759
- package/esm/generated-sdk/auth/schemas.d.ts.map +1 -1
- package/esm/generated-sdk/auth/schemas.js +963 -768
- package/esm/generated-sdk/auth/types.d.ts +292 -302
- package/esm/generated-sdk/auth/types.d.ts.map +1 -1
- package/esm/generated-sdk/auth/types.js +1 -1
- package/esm/generated-sdk/health/client.d.ts +4 -4
- package/esm/generated-sdk/health/client.d.ts.map +1 -1
- package/esm/generated-sdk/health/contract.d.ts +1 -1
- package/esm/generated-sdk/health/contract.d.ts.map +1 -1
- package/esm/generated-sdk/health/contract.js +2 -10
- package/esm/generated-sdk/health/schemas.d.ts +1 -14
- package/esm/generated-sdk/health/schemas.d.ts.map +1 -1
- package/esm/generated-sdk/health/schemas.js +1 -9
- package/esm/generated-sdk/health/types.d.ts +3 -5
- package/esm/generated-sdk/health/types.d.ts.map +1 -1
- package/esm/generated-sdk/health/types.js +1 -2
- package/esm/generated-sdk/jobs/api.d.ts +13 -0
- package/esm/generated-sdk/jobs/api.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/client.d.ts +6 -4
- package/esm/generated-sdk/jobs/client.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/contract.d.ts +14 -1
- package/esm/generated-sdk/jobs/contract.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/contract.js +268 -1
- package/esm/generated-sdk/jobs/owned_api.d.ts +13 -0
- package/esm/generated-sdk/jobs/owned_api.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/owned_api.js +20 -1
- package/esm/generated-sdk/jobs/schemas.d.ts +437 -0
- package/esm/generated-sdk/jobs/schemas.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/schemas.js +211 -0
- package/esm/generated-sdk/jobs/types.d.ts +123 -1
- package/esm/generated-sdk/jobs/types.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/types.js +1 -1
- package/esm/generated-sdk/state/client.d.ts +4 -4
- package/esm/generated-sdk/state/client.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/api.d.ts +4 -1
- package/esm/generated-sdk/trellis-core/api.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/api.js +6 -1
- package/esm/generated-sdk/trellis-core/client.d.ts +28 -3
- package/esm/generated-sdk/trellis-core/client.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/contract.d.ts +1 -1
- package/esm/generated-sdk/trellis-core/contract.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/contract.js +91 -1
- package/esm/generated-sdk/trellis-core/schemas.d.ts +113 -0
- package/esm/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/schemas.js +81 -0
- package/esm/generated-sdk/trellis-core/types.d.ts +23 -1
- package/esm/generated-sdk/trellis-core/types.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/types.js +1 -1
- package/esm/health.d.ts +1 -1
- package/esm/health.d.ts.map +1 -1
- package/esm/health.js +1 -1
- package/esm/index.d.ts +2 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/jobs.d.ts +69 -3
- package/esm/jobs.d.ts.map +1 -1
- package/esm/jobs.js +92 -3
- package/esm/server/health.d.ts +2 -6
- package/esm/server/health.d.ts.map +1 -1
- package/esm/server/health_schemas.d.ts +0 -8
- package/esm/server/health_schemas.d.ts.map +1 -1
- package/esm/server/health_schemas.js +0 -5
- package/esm/server/internal_jobs/bindings.d.ts +11 -0
- package/esm/server/internal_jobs/bindings.d.ts.map +1 -1
- package/esm/server/internal_jobs/job-manager.d.ts +44 -1
- package/esm/server/internal_jobs/job-manager.d.ts.map +1 -1
- package/esm/server/internal_jobs/job-manager.js +361 -51
- package/esm/server/internal_jobs/key-coordinator.d.ts +260 -0
- package/esm/server/internal_jobs/key-coordinator.d.ts.map +1 -0
- package/esm/server/internal_jobs/key-coordinator.js +580 -0
- package/esm/server/internal_jobs/projection.d.ts.map +1 -1
- package/esm/server/internal_jobs/projection.js +2 -0
- package/esm/server/internal_jobs/runtime-worker.d.ts +5 -1
- package/esm/server/internal_jobs/runtime-worker.d.ts.map +1 -1
- package/esm/server/internal_jobs/runtime-worker.js +14 -2
- package/esm/server/internal_jobs/types.d.ts +5 -5
- package/esm/server/internal_jobs/types.d.ts.map +1 -1
- package/esm/server/internal_jobs/types.js +6 -0
- package/esm/server/service.d.ts +8 -3
- package/esm/server/service.d.ts.map +1 -1
- package/esm/server/service.js +127 -6
- package/esm/service/drizzle.d.ts +27 -0
- package/esm/service/drizzle.d.ts.map +1 -0
- package/esm/service/drizzle.js +84 -0
- package/esm/service/mod.d.ts +1 -1
- package/esm/service/mod.d.ts.map +1 -1
- package/esm/service/mod.js +1 -1
- package/esm/service/outbox_inbox.d.ts.map +1 -1
- package/esm/service/outbox_inbox.js +13 -2
- package/esm/trellis.d.ts +24 -8
- package/esm/trellis.d.ts.map +1 -1
- package/esm/trellis.js +44 -22
- package/package.json +14 -2
- package/script/auth/mod.d.ts +1 -1
- package/script/auth/mod.d.ts.map +1 -1
- package/script/auth/mod.js +22 -6
- package/script/auth/protocol.d.ts +416 -398
- package/script/auth/protocol.d.ts.map +1 -1
- package/script/auth/protocol.js +40 -37
- package/script/codec.d.ts +1 -0
- package/script/codec.d.ts.map +1 -1
- package/script/codec.js +1 -0
- package/script/contract_support/canonical.d.ts +3 -0
- package/script/contract_support/canonical.d.ts.map +1 -1
- package/script/contract_support/canonical.js +3 -0
- package/script/contract_support/mod.d.ts +28 -4
- package/script/contract_support/mod.d.ts.map +1 -1
- package/script/contract_support/mod.js +90 -4
- package/script/contract_support/protocol.d.ts +92 -7
- package/script/contract_support/protocol.d.ts.map +1 -1
- package/script/contract_support/protocol.js +41 -7
- package/script/errors/index.d.ts +9 -9
- package/script/generated-sdk/auth/api.d.ts +4 -1
- package/script/generated-sdk/auth/api.d.ts.map +1 -1
- package/script/generated-sdk/auth/api.js +6 -1
- package/script/generated-sdk/auth/client.d.ts +47 -32
- package/script/generated-sdk/auth/client.d.ts.map +1 -1
- package/script/generated-sdk/auth/contract.d.ts +1 -1
- package/script/generated-sdk/auth/contract.d.ts.map +1 -1
- package/script/generated-sdk/auth/contract.js +1570 -1202
- package/script/generated-sdk/auth/schemas.d.ts +1757 -1759
- package/script/generated-sdk/auth/schemas.d.ts.map +1 -1
- package/script/generated-sdk/auth/schemas.js +963 -768
- package/script/generated-sdk/auth/types.d.ts +292 -302
- package/script/generated-sdk/auth/types.d.ts.map +1 -1
- package/script/generated-sdk/auth/types.js +1 -1
- package/script/generated-sdk/health/client.d.ts +4 -4
- package/script/generated-sdk/health/client.d.ts.map +1 -1
- package/script/generated-sdk/health/contract.d.ts +1 -1
- package/script/generated-sdk/health/contract.d.ts.map +1 -1
- package/script/generated-sdk/health/contract.js +2 -10
- package/script/generated-sdk/health/schemas.d.ts +1 -14
- package/script/generated-sdk/health/schemas.d.ts.map +1 -1
- package/script/generated-sdk/health/schemas.js +1 -9
- package/script/generated-sdk/health/types.d.ts +3 -5
- package/script/generated-sdk/health/types.d.ts.map +1 -1
- package/script/generated-sdk/health/types.js +1 -2
- package/script/generated-sdk/jobs/api.d.ts +13 -0
- package/script/generated-sdk/jobs/api.d.ts.map +1 -1
- package/script/generated-sdk/jobs/client.d.ts +6 -4
- package/script/generated-sdk/jobs/client.d.ts.map +1 -1
- package/script/generated-sdk/jobs/contract.d.ts +14 -1
- package/script/generated-sdk/jobs/contract.d.ts.map +1 -1
- package/script/generated-sdk/jobs/contract.js +268 -1
- package/script/generated-sdk/jobs/owned_api.d.ts +13 -0
- package/script/generated-sdk/jobs/owned_api.d.ts.map +1 -1
- package/script/generated-sdk/jobs/owned_api.js +19 -0
- package/script/generated-sdk/jobs/schemas.d.ts +437 -0
- package/script/generated-sdk/jobs/schemas.d.ts.map +1 -1
- package/script/generated-sdk/jobs/schemas.js +212 -1
- package/script/generated-sdk/jobs/types.d.ts +123 -1
- package/script/generated-sdk/jobs/types.d.ts.map +1 -1
- package/script/generated-sdk/jobs/types.js +1 -1
- package/script/generated-sdk/state/client.d.ts +4 -4
- package/script/generated-sdk/state/client.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/api.d.ts +4 -1
- package/script/generated-sdk/trellis-core/api.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/api.js +6 -1
- package/script/generated-sdk/trellis-core/client.d.ts +28 -3
- package/script/generated-sdk/trellis-core/client.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/contract.d.ts +1 -1
- package/script/generated-sdk/trellis-core/contract.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/contract.js +91 -1
- package/script/generated-sdk/trellis-core/schemas.d.ts +113 -0
- package/script/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/schemas.js +81 -0
- package/script/generated-sdk/trellis-core/types.d.ts +23 -1
- package/script/generated-sdk/trellis-core/types.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/types.js +1 -1
- package/script/health.d.ts +1 -1
- package/script/health.d.ts.map +1 -1
- package/script/health.js +1 -2
- package/script/index.d.ts +2 -2
- package/script/index.d.ts.map +1 -1
- package/script/index.js +2 -3
- package/script/jobs.d.ts +69 -3
- package/script/jobs.d.ts.map +1 -1
- package/script/jobs.js +93 -3
- package/script/server/health.d.ts +2 -6
- package/script/server/health.d.ts.map +1 -1
- package/script/server/health_schemas.d.ts +0 -8
- package/script/server/health_schemas.d.ts.map +1 -1
- package/script/server/health_schemas.js +1 -6
- package/script/server/internal_jobs/bindings.d.ts +11 -0
- package/script/server/internal_jobs/bindings.d.ts.map +1 -1
- package/script/server/internal_jobs/job-manager.d.ts +44 -1
- package/script/server/internal_jobs/job-manager.d.ts.map +1 -1
- package/script/server/internal_jobs/job-manager.js +361 -51
- package/script/server/internal_jobs/key-coordinator.d.ts +260 -0
- package/script/server/internal_jobs/key-coordinator.d.ts.map +1 -0
- package/script/server/internal_jobs/key-coordinator.js +593 -0
- package/script/server/internal_jobs/projection.d.ts.map +1 -1
- package/script/server/internal_jobs/projection.js +2 -0
- package/script/server/internal_jobs/runtime-worker.d.ts +5 -1
- package/script/server/internal_jobs/runtime-worker.d.ts.map +1 -1
- package/script/server/internal_jobs/runtime-worker.js +14 -2
- package/script/server/internal_jobs/types.d.ts +5 -5
- package/script/server/internal_jobs/types.d.ts.map +1 -1
- package/script/server/internal_jobs/types.js +6 -0
- package/script/server/service.d.ts +8 -3
- package/script/server/service.d.ts.map +1 -1
- package/script/server/service.js +126 -5
- package/script/service/drizzle.d.ts +27 -0
- package/script/service/drizzle.d.ts.map +1 -0
- package/script/service/drizzle.js +88 -0
- package/script/service/mod.d.ts +1 -1
- package/script/service/mod.d.ts.map +1 -1
- package/script/service/mod.js +1 -2
- package/script/service/outbox_inbox.d.ts.map +1 -1
- package/script/service/outbox_inbox.js +13 -2
- package/script/trellis.d.ts +24 -8
- package/script/trellis.d.ts.map +1 -1
- package/script/trellis.js +44 -22
- package/src/auth/mod.ts +28 -2
- package/src/auth/protocol.ts +72 -37
- package/src/codec.ts +1 -0
- package/src/contract_support/canonical.ts +3 -0
- package/src/contract_support/mod.ts +158 -5
- package/src/contract_support/protocol.ts +56 -9
- package/src/health.ts +0 -1
- package/src/index.ts +2 -1
- package/src/jobs.ts +138 -1
- package/src/sdk/_generated/auth/api.ts +9 -2
- package/src/sdk/_generated/auth/client.ts +85 -78
- package/src/sdk/_generated/auth/contract.ts +1803 -1435
- package/src/sdk/_generated/auth/schemas.ts +1166 -971
- package/src/sdk/_generated/auth/types.ts +330 -314
- package/src/sdk/_generated/core/api.ts +9 -2
- package/src/sdk/_generated/core/client.ts +41 -2
- package/src/sdk/_generated/core/contract.ts +91 -1
- package/src/sdk/_generated/core/schemas.ts +81 -0
- package/src/sdk/_generated/core/types.ts +23 -1
- package/src/sdk/_generated/health/client.ts +6 -6
- package/src/sdk/_generated/health/contract.ts +2 -10
- package/src/sdk/_generated/health/schemas.ts +1 -9
- package/src/sdk/_generated/health/types.ts +6 -2
- package/src/sdk/_generated/jobs/client.ts +17 -6
- package/src/sdk/_generated/jobs/contract.ts +269 -1
- package/src/sdk/_generated/jobs/owned_api.ts +21 -0
- package/src/sdk/_generated/jobs/schemas.ts +213 -0
- package/src/sdk/_generated/jobs/types.ts +116 -1
- package/src/sdk/_generated/state/client.ts +6 -6
- package/src/server/health.ts +2 -6
- package/src/server/health_schemas.ts +0 -6
- package/src/server/internal_jobs/bindings.ts +11 -0
- package/src/server/internal_jobs/job-manager.ts +436 -16
- package/src/server/internal_jobs/key-coordinator.ts +955 -0
- package/src/server/internal_jobs/projection.ts +2 -0
- package/src/server/internal_jobs/runtime-worker.ts +17 -1
- package/src/server/internal_jobs/types.ts +6 -0
- package/src/server/service.ts +168 -9
- package/src/service/drizzle.ts +125 -0
- package/src/service/mod.ts +0 -1
- package/src/service/outbox_inbox.ts +16 -6
- package/src/trellis.ts +76 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-manager.d.ts","sourceRoot":"","sources":["../../../src/server/internal_jobs/job-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"job-manager.d.ts","sourceRoot":"","sources":["../../../src/server/internal_jobs/job-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,17 +10,19 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _JobManager_instances, _JobManager_context, _JobManager_meta, _JobManager_getQueueBinding, _JobManager_publishJobEvent;
|
|
13
|
+
var _JobManager_instances, _JobManager_context, _JobManager_meta, _JobManager_getQueueBinding, _JobManager_publishJobEvent, _JobManager_submit, _JobManager_admitKeyedCreate, _JobManager_removeQueuedKeyedReservation, _JobManager_restoreReplacedKeyedReservation, _JobManager_publishSkipped, _JobManager_keyedHeartbeat, _JobManager_releaseKeyedSlot, _JobManager_releaseKeyedSlotAfterPublishFailure, _JobManager_publishStaleCompletionIgnored;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.JobCancellationToken = exports.ActiveJobRuntimeError = exports.ActiveJob = exports.JobManager = exports.JobProcessError = void 0;
|
|
16
16
|
const nats_core_1 = require("@nats-io/nats-core");
|
|
17
17
|
const ulid_1 = require("ulid");
|
|
18
18
|
const carrier_js_1 = require("../../telemetry/carrier.js");
|
|
19
19
|
const mod_js_1 = require("../../telemetry/mod.js");
|
|
20
|
+
const jobs_js_1 = require("../../jobs.js");
|
|
20
21
|
const active_job_js_1 = require("./active-job.js");
|
|
21
22
|
Object.defineProperty(exports, "ActiveJob", { enumerable: true, get: function () { return active_job_js_1.ActiveJob; } });
|
|
22
23
|
Object.defineProperty(exports, "ActiveJobRuntimeError", { enumerable: true, get: function () { return active_job_js_1.ActiveJobRuntimeError; } });
|
|
23
24
|
Object.defineProperty(exports, "JobCancellationToken", { enumerable: true, get: function () { return active_job_js_1.JobCancellationToken; } });
|
|
25
|
+
const key_coordinator_js_1 = require("./key-coordinator.js");
|
|
24
26
|
class JobProcessError extends Error {
|
|
25
27
|
constructor(kind, message) {
|
|
26
28
|
super(message);
|
|
@@ -48,41 +50,47 @@ class JobManager {
|
|
|
48
50
|
__classPrivateFieldSet(this, _JobManager_context, context, "f");
|
|
49
51
|
}
|
|
50
52
|
async create(type, payload) {
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
await __classPrivateFieldGet(this, _JobManager_instances, "m",
|
|
85
|
-
|
|
53
|
+
const outcome = await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_submit).call(this, type, payload, true);
|
|
54
|
+
if (outcome.kind === "accepted") {
|
|
55
|
+
return outcome.job;
|
|
56
|
+
}
|
|
57
|
+
if (outcome.kind === "coalesced") {
|
|
58
|
+
throw new jobs_js_1.JobNotEnqueuedError({
|
|
59
|
+
reason: "coalesced",
|
|
60
|
+
key: outcome.key,
|
|
61
|
+
active: 0,
|
|
62
|
+
queued: 1,
|
|
63
|
+
limit: 0,
|
|
64
|
+
existingJobId: outcome.existing.id,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (outcome.kind === "replaced") {
|
|
68
|
+
throw new jobs_js_1.JobNotEnqueuedError({
|
|
69
|
+
reason: "queue-depth",
|
|
70
|
+
key: outcome.key,
|
|
71
|
+
active: 0,
|
|
72
|
+
queued: 1,
|
|
73
|
+
limit: 0,
|
|
74
|
+
existingJobId: outcome.replaced.id,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
throw new jobs_js_1.JobNotEnqueuedError({
|
|
78
|
+
reason: outcome.reason,
|
|
79
|
+
key: outcome.key,
|
|
80
|
+
active: outcome.active,
|
|
81
|
+
queued: outcome.queued,
|
|
82
|
+
limit: outcome.limit,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async submit(type, payload) {
|
|
86
|
+
return await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_submit).call(this, type, payload, false);
|
|
87
|
+
}
|
|
88
|
+
async cleanupQueuedKeyedJob(job) {
|
|
89
|
+
const queue = __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_getQueueBinding).call(this, job.type);
|
|
90
|
+
const keyedPolicy = getKeyPolicy(queue);
|
|
91
|
+
if (!keyedPolicy)
|
|
92
|
+
return;
|
|
93
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_removeQueuedKeyedReservation).call(this, job, keyedPolicy);
|
|
86
94
|
}
|
|
87
95
|
process(job, cancellation, handler, metadata = {}, validation = {}) {
|
|
88
96
|
return this.processWithHeartbeat(job, cancellation, () => {
|
|
@@ -90,25 +98,78 @@ class JobManager {
|
|
|
90
98
|
}, handler, metadata, validation);
|
|
91
99
|
}
|
|
92
100
|
async processWithHeartbeat(job, cancellation, heartbeat, handler, metadata = {}, validation = {}) {
|
|
93
|
-
__classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_getQueueBinding).call(this, job.type);
|
|
94
101
|
const tries = job.tries + 1;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
const queue = __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_getQueueBinding).call(this, job.type);
|
|
103
|
+
const keyedPolicy = getKeyPolicy(queue);
|
|
104
|
+
let lease;
|
|
105
|
+
let staleSlots = [];
|
|
106
|
+
if (keyedPolicy) {
|
|
107
|
+
const coordinator = __classPrivateFieldGet(this, _JobManager_context, "f").keyCoordinator;
|
|
108
|
+
if (!coordinator) {
|
|
109
|
+
throw new Error(`Keyed jobs queue '${job.type}' requires the JOBS_KEYS coordinator`);
|
|
110
|
+
}
|
|
111
|
+
const acquired = await coordinator.acquireActiveSlot({
|
|
112
|
+
service: job.service,
|
|
113
|
+
jobType: job.type,
|
|
114
|
+
jobId: job.id,
|
|
115
|
+
payload: job.payload,
|
|
116
|
+
context: job.context,
|
|
117
|
+
lifecycleState: metadata.latestState ?? job.state,
|
|
118
|
+
tries,
|
|
119
|
+
instanceId: metadata.instanceId ?? "unknown",
|
|
120
|
+
now: __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_meta).call(this).nowIso(),
|
|
121
|
+
policy: keyedPolicy,
|
|
122
|
+
});
|
|
123
|
+
if (acquired.kind === "blocked") {
|
|
124
|
+
return { outcome: "deferred", tries, reason: acquired.reason };
|
|
125
|
+
}
|
|
126
|
+
lease = {
|
|
127
|
+
key: acquired.key,
|
|
128
|
+
keyHash: acquired.keyHash,
|
|
129
|
+
slotToken: acquired.slotToken,
|
|
130
|
+
policy: keyedPolicy,
|
|
131
|
+
};
|
|
132
|
+
staleSlots = acquired.stale;
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
for (const stale of staleSlots) {
|
|
136
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishJobEvent).call(this, job.type, stale.jobId, {
|
|
137
|
+
jobId: stale.jobId,
|
|
138
|
+
service: job.service,
|
|
139
|
+
jobType: job.type,
|
|
140
|
+
eventType: "stale",
|
|
141
|
+
state: "stale",
|
|
142
|
+
previousState: "active",
|
|
143
|
+
context: stale.context,
|
|
144
|
+
tries: stale.tries,
|
|
145
|
+
error: "keyed job lease expired",
|
|
146
|
+
timestamp: __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_meta).call(this).nowIso(),
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishJobEvent).call(this, job.type, job.id, {
|
|
150
|
+
jobId: job.id,
|
|
151
|
+
service: job.service,
|
|
152
|
+
jobType: job.type,
|
|
153
|
+
eventType: "started",
|
|
154
|
+
state: "active",
|
|
155
|
+
previousState: job.state,
|
|
156
|
+
context: job.context,
|
|
157
|
+
tries,
|
|
158
|
+
timestamp: __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_meta).call(this).nowIso(),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_releaseKeyedSlotAfterPublishFailure).call(this, job, lease, error);
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
106
165
|
try {
|
|
107
|
-
const result = await this.withActiveJobAndHeartbeat({ ...job, state: "active", tries }, cancellation, heartbeat, handler, metadata);
|
|
166
|
+
const result = await this.withActiveJobAndHeartbeat({ ...job, state: "active", tries }, cancellation, lease ? __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_keyedHeartbeat).call(this, job, lease, heartbeat) : heartbeat, handler, metadata, lease);
|
|
108
167
|
if (cancellation.isHostShutdown()) {
|
|
168
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_releaseKeyedSlot).call(this, job, lease);
|
|
109
169
|
return { outcome: "interrupted", tries };
|
|
110
170
|
}
|
|
111
171
|
if (cancellation.isCancelled()) {
|
|
172
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_releaseKeyedSlot).call(this, job, lease);
|
|
112
173
|
return { outcome: "cancelled", tries };
|
|
113
174
|
}
|
|
114
175
|
try {
|
|
@@ -121,6 +182,11 @@ class JobManager {
|
|
|
121
182
|
catch (error) {
|
|
122
183
|
throw JobProcessError.failed(error instanceof Error ? error.message : String(error));
|
|
123
184
|
}
|
|
185
|
+
const release = await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_releaseKeyedSlot).call(this, job, lease);
|
|
186
|
+
if (release === "staleCompletion") {
|
|
187
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishStaleCompletionIgnored).call(this, job, tries);
|
|
188
|
+
return { outcome: "stale_completion_ignored", tries };
|
|
189
|
+
}
|
|
124
190
|
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishJobEvent).call(this, job.type, job.id, {
|
|
125
191
|
jobId: job.id,
|
|
126
192
|
service: job.service,
|
|
@@ -137,9 +203,11 @@ class JobManager {
|
|
|
137
203
|
}
|
|
138
204
|
catch (error) {
|
|
139
205
|
if (cancellation.isHostShutdown()) {
|
|
206
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_releaseKeyedSlot).call(this, job, lease);
|
|
140
207
|
return { outcome: "interrupted", tries };
|
|
141
208
|
}
|
|
142
209
|
if (cancellation.isCancelled()) {
|
|
210
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_releaseKeyedSlot).call(this, job, lease);
|
|
143
211
|
return { outcome: "cancelled", tries };
|
|
144
212
|
}
|
|
145
213
|
if (error instanceof JobProcessError) {
|
|
@@ -151,6 +219,11 @@ class JobManager {
|
|
|
151
219
|
operation: job.type,
|
|
152
220
|
phase: "handler_result",
|
|
153
221
|
});
|
|
222
|
+
const release = await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_releaseKeyedSlot).call(this, job, lease);
|
|
223
|
+
if (release === "staleCompletion") {
|
|
224
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishStaleCompletionIgnored).call(this, job, tries);
|
|
225
|
+
return { outcome: "stale_completion_ignored", tries };
|
|
226
|
+
}
|
|
154
227
|
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishJobEvent).call(this, job.type, job.id, {
|
|
155
228
|
jobId: job.id,
|
|
156
229
|
service: job.service,
|
|
@@ -171,6 +244,11 @@ class JobManager {
|
|
|
171
244
|
operation: job.type,
|
|
172
245
|
phase: "handler_result",
|
|
173
246
|
});
|
|
247
|
+
const release = await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_releaseKeyedSlot).call(this, job, lease);
|
|
248
|
+
if (release === "staleCompletion") {
|
|
249
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishStaleCompletionIgnored).call(this, job, tries);
|
|
250
|
+
return { outcome: "stale_completion_ignored", tries };
|
|
251
|
+
}
|
|
174
252
|
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishJobEvent).call(this, job.type, job.id, {
|
|
175
253
|
jobId: job.id,
|
|
176
254
|
service: job.service,
|
|
@@ -241,7 +319,10 @@ class JobManager {
|
|
|
241
319
|
throw new active_job_js_1.ActiveJobRuntimeError("worker heartbeat unavailable");
|
|
242
320
|
}, f, metadata);
|
|
243
321
|
}
|
|
244
|
-
async withActiveJobAndHeartbeat(job, cancellation, heartbeat, f, metadata = {}) {
|
|
322
|
+
async withActiveJobAndHeartbeat(job, cancellation, heartbeat, f, metadata = {}, lease) {
|
|
323
|
+
const stopAutoHeartbeat = lease
|
|
324
|
+
? startAutoHeartbeat(heartbeat, lease.policy.heartbeatIntervalMs)
|
|
325
|
+
: () => { };
|
|
245
326
|
const activeJob = new active_job_js_1.ActiveJob(job, cancellation, {
|
|
246
327
|
updateProgress: (progress) => this.emitProgress(job, progress),
|
|
247
328
|
log: (entry) => this.emitLog(job, entry),
|
|
@@ -259,7 +340,12 @@ class JobManager {
|
|
|
259
340
|
}, {
|
|
260
341
|
redeliveryCount: metadata.redeliveryCount ?? 0,
|
|
261
342
|
});
|
|
262
|
-
|
|
343
|
+
try {
|
|
344
|
+
return await f(activeJob);
|
|
345
|
+
}
|
|
346
|
+
finally {
|
|
347
|
+
stopAutoHeartbeat();
|
|
348
|
+
}
|
|
263
349
|
}
|
|
264
350
|
}
|
|
265
351
|
exports.JobManager = JobManager;
|
|
@@ -290,7 +376,231 @@ _JobManager_context = new WeakMap(), _JobManager_instances = new WeakSet(), _Job
|
|
|
290
376
|
});
|
|
291
377
|
throw error;
|
|
292
378
|
}
|
|
379
|
+
}, _JobManager_submit = async function _JobManager_submit(type, payload, strictCreate) {
|
|
380
|
+
const binding = __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_getQueueBinding).call(this, type);
|
|
381
|
+
const meta = __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_meta).call(this);
|
|
382
|
+
const now = meta.nowIso();
|
|
383
|
+
const id = meta.nextJobId();
|
|
384
|
+
const context = createJobContext();
|
|
385
|
+
const namespace = __classPrivateFieldGet(this, _JobManager_context, "f").jobs.namespace;
|
|
386
|
+
const deadline = computeDeadline(now, binding.defaultDeadlineMs);
|
|
387
|
+
const job = {
|
|
388
|
+
id,
|
|
389
|
+
service: namespace,
|
|
390
|
+
type,
|
|
391
|
+
state: "pending",
|
|
392
|
+
context,
|
|
393
|
+
payload,
|
|
394
|
+
createdAt: now,
|
|
395
|
+
updatedAt: now,
|
|
396
|
+
tries: 0,
|
|
397
|
+
maxTries: binding.maxDeliver,
|
|
398
|
+
...(deadline ? { deadline } : {}),
|
|
399
|
+
};
|
|
400
|
+
const event = {
|
|
401
|
+
jobId: id,
|
|
402
|
+
service: job.service,
|
|
403
|
+
jobType: type,
|
|
404
|
+
eventType: "created",
|
|
405
|
+
state: "pending",
|
|
406
|
+
context,
|
|
407
|
+
tries: 0,
|
|
408
|
+
maxTries: binding.maxDeliver,
|
|
409
|
+
payload,
|
|
410
|
+
...(deadline ? { deadline } : {}),
|
|
411
|
+
timestamp: now,
|
|
412
|
+
};
|
|
413
|
+
const keyedPolicy = getKeyPolicy(binding);
|
|
414
|
+
if (keyedPolicy) {
|
|
415
|
+
const admission = await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_admitKeyedCreate).call(this, {
|
|
416
|
+
type,
|
|
417
|
+
job,
|
|
418
|
+
event,
|
|
419
|
+
policy: keyedPolicy,
|
|
420
|
+
strictCreate,
|
|
421
|
+
});
|
|
422
|
+
if (admission.kind !== "accepted" && admission.kind !== "replaced") {
|
|
423
|
+
return admission;
|
|
424
|
+
}
|
|
425
|
+
if (strictCreate && admission.kind === "replaced") {
|
|
426
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_restoreReplacedKeyedReservation).call(this, job, admission.replaced, keyedPolicy);
|
|
427
|
+
return {
|
|
428
|
+
kind: "rejected",
|
|
429
|
+
key: admission.key,
|
|
430
|
+
reason: "queue-depth",
|
|
431
|
+
active: admission.state.active.length,
|
|
432
|
+
queued: admission.state.queued.length,
|
|
433
|
+
limit: keyedPolicy.queue.maxQueuedPerKey,
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
if (admission.kind === "replaced") {
|
|
437
|
+
try {
|
|
438
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishSkipped).call(this, type, admission.replaced, now);
|
|
439
|
+
}
|
|
440
|
+
catch (error) {
|
|
441
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_restoreReplacedKeyedReservation).call(this, job, admission.replaced, keyedPolicy);
|
|
442
|
+
throw error;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
try {
|
|
446
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishJobEvent).call(this, type, id, event);
|
|
447
|
+
}
|
|
448
|
+
catch (error) {
|
|
449
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_removeQueuedKeyedReservation).call(this, job, keyedPolicy);
|
|
450
|
+
throw error;
|
|
451
|
+
}
|
|
452
|
+
if (admission.kind === "replaced") {
|
|
453
|
+
return {
|
|
454
|
+
kind: "replaced",
|
|
455
|
+
key: admission.key,
|
|
456
|
+
replaced: {
|
|
457
|
+
service: admission.replaced.service,
|
|
458
|
+
jobType: admission.replaced.jobType,
|
|
459
|
+
id: admission.replaced.id,
|
|
460
|
+
},
|
|
461
|
+
job,
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
return { kind: "accepted", job, key: admission.key };
|
|
465
|
+
}
|
|
466
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishJobEvent).call(this, type, id, event);
|
|
467
|
+
return { kind: "accepted", job };
|
|
468
|
+
}, _JobManager_admitKeyedCreate = async function _JobManager_admitKeyedCreate(args) {
|
|
469
|
+
const coordinator = __classPrivateFieldGet(this, _JobManager_context, "f").keyCoordinator;
|
|
470
|
+
if (!coordinator) {
|
|
471
|
+
throw new Error(`Keyed jobs queue '${args.type}' requires the JOBS_KEYS coordinator`);
|
|
472
|
+
}
|
|
473
|
+
return await coordinator.admitCreate({
|
|
474
|
+
service: args.job.service,
|
|
475
|
+
jobType: args.type,
|
|
476
|
+
jobId: args.job.id,
|
|
477
|
+
payload: args.job.payload,
|
|
478
|
+
context: args.event.context,
|
|
479
|
+
createdAt: args.event.timestamp,
|
|
480
|
+
policy: args.policy,
|
|
481
|
+
strictCreate: args.strictCreate,
|
|
482
|
+
});
|
|
483
|
+
}, _JobManager_removeQueuedKeyedReservation = async function _JobManager_removeQueuedKeyedReservation(job, policy) {
|
|
484
|
+
const coordinator = __classPrivateFieldGet(this, _JobManager_context, "f").keyCoordinator;
|
|
485
|
+
if (!coordinator)
|
|
486
|
+
return;
|
|
487
|
+
await coordinator.removeQueuedJob({
|
|
488
|
+
service: job.service,
|
|
489
|
+
jobType: job.type,
|
|
490
|
+
jobId: job.id,
|
|
491
|
+
payload: job.payload,
|
|
492
|
+
now: __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_meta).call(this).nowIso(),
|
|
493
|
+
policy,
|
|
494
|
+
});
|
|
495
|
+
}, _JobManager_restoreReplacedKeyedReservation = async function _JobManager_restoreReplacedKeyedReservation(job, replaced, policy) {
|
|
496
|
+
const coordinator = __classPrivateFieldGet(this, _JobManager_context, "f").keyCoordinator;
|
|
497
|
+
if (!coordinator)
|
|
498
|
+
return;
|
|
499
|
+
await coordinator.restoreReplacedQueuedJob({
|
|
500
|
+
service: job.service,
|
|
501
|
+
jobType: job.type,
|
|
502
|
+
replacementJobId: job.id,
|
|
503
|
+
replaced,
|
|
504
|
+
payload: job.payload,
|
|
505
|
+
now: __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_meta).call(this).nowIso(),
|
|
506
|
+
policy,
|
|
507
|
+
});
|
|
508
|
+
}, _JobManager_publishSkipped = async function _JobManager_publishSkipped(type, replaced, timestamp) {
|
|
509
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishJobEvent).call(this, type, replaced.id, {
|
|
510
|
+
jobId: replaced.id,
|
|
511
|
+
service: __classPrivateFieldGet(this, _JobManager_context, "f").jobs.namespace,
|
|
512
|
+
jobType: type,
|
|
513
|
+
eventType: "skipped",
|
|
514
|
+
state: "skipped",
|
|
515
|
+
previousState: "pending",
|
|
516
|
+
context: replaced.context,
|
|
517
|
+
tries: 0,
|
|
518
|
+
error: "replaced by newer keyed job",
|
|
519
|
+
timestamp,
|
|
520
|
+
});
|
|
521
|
+
}, _JobManager_keyedHeartbeat = function _JobManager_keyedHeartbeat(job, lease, heartbeat) {
|
|
522
|
+
return async () => {
|
|
523
|
+
await heartbeat();
|
|
524
|
+
const renewed = await __classPrivateFieldGet(this, _JobManager_context, "f").keyCoordinator.renewHeartbeat({
|
|
525
|
+
service: job.service,
|
|
526
|
+
jobType: job.type,
|
|
527
|
+
jobId: job.id,
|
|
528
|
+
lease,
|
|
529
|
+
now: __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_meta).call(this).nowIso(),
|
|
530
|
+
});
|
|
531
|
+
if (renewed.kind === "lost") {
|
|
532
|
+
(0, mod_js_1.recordTrellisError)(new active_job_js_1.ActiveJobRuntimeError("keyed job slot lease was lost"), {
|
|
533
|
+
surface: "job",
|
|
534
|
+
direction: "worker",
|
|
535
|
+
operation: job.type,
|
|
536
|
+
phase: "heartbeat",
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
};
|
|
540
|
+
}, _JobManager_releaseKeyedSlot = async function _JobManager_releaseKeyedSlot(job, lease) {
|
|
541
|
+
if (!lease)
|
|
542
|
+
return undefined;
|
|
543
|
+
const released = await __classPrivateFieldGet(this, _JobManager_context, "f").keyCoordinator.releaseActiveSlot({
|
|
544
|
+
service: job.service,
|
|
545
|
+
jobType: job.type,
|
|
546
|
+
jobId: job.id,
|
|
547
|
+
lease,
|
|
548
|
+
now: __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_meta).call(this).nowIso(),
|
|
549
|
+
});
|
|
550
|
+
return released.kind === "released" ? "released" : "staleCompletion";
|
|
551
|
+
}, _JobManager_releaseKeyedSlotAfterPublishFailure = async function _JobManager_releaseKeyedSlotAfterPublishFailure(job, lease, publishError) {
|
|
552
|
+
try {
|
|
553
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_releaseKeyedSlot).call(this, job, lease);
|
|
554
|
+
}
|
|
555
|
+
catch (cleanupError) {
|
|
556
|
+
(0, mod_js_1.recordTrellisError)(cleanupError, {
|
|
557
|
+
surface: "job",
|
|
558
|
+
direction: "worker",
|
|
559
|
+
operation: job.type,
|
|
560
|
+
phase: "keyed_slot_cleanup",
|
|
561
|
+
});
|
|
562
|
+
(0, mod_js_1.recordTrellisError)(publishError, {
|
|
563
|
+
surface: "job",
|
|
564
|
+
direction: "worker",
|
|
565
|
+
operation: job.type,
|
|
566
|
+
phase: "publish",
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
}, _JobManager_publishStaleCompletionIgnored = async function _JobManager_publishStaleCompletionIgnored(job, tries) {
|
|
570
|
+
await __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_publishJobEvent).call(this, job.type, job.id, {
|
|
571
|
+
jobId: job.id,
|
|
572
|
+
service: job.service,
|
|
573
|
+
jobType: job.type,
|
|
574
|
+
eventType: "staleCompletionIgnored",
|
|
575
|
+
state: "stale",
|
|
576
|
+
previousState: "active",
|
|
577
|
+
context: job.context,
|
|
578
|
+
tries,
|
|
579
|
+
error: "keyed job slot lease was lost before completion",
|
|
580
|
+
timestamp: __classPrivateFieldGet(this, _JobManager_instances, "m", _JobManager_meta).call(this).nowIso(),
|
|
581
|
+
});
|
|
293
582
|
};
|
|
583
|
+
function getKeyPolicy(binding) {
|
|
584
|
+
if (!binding.keyConcurrency) {
|
|
585
|
+
return undefined;
|
|
586
|
+
}
|
|
587
|
+
return (0, key_coordinator_js_1.normalizeJobKeyPolicy)({
|
|
588
|
+
keyConcurrency: binding.keyConcurrency,
|
|
589
|
+
queue: binding.queue,
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
function startAutoHeartbeat(heartbeat, intervalMs) {
|
|
593
|
+
const timer = setInterval(() => {
|
|
594
|
+
void heartbeat().catch((error) => {
|
|
595
|
+
(0, mod_js_1.recordTrellisError)(error, {
|
|
596
|
+
surface: "job",
|
|
597
|
+
direction: "worker",
|
|
598
|
+
phase: "heartbeat",
|
|
599
|
+
});
|
|
600
|
+
});
|
|
601
|
+
}, intervalMs);
|
|
602
|
+
return () => clearInterval(timer);
|
|
603
|
+
}
|
|
294
604
|
function computeDeadline(now, deadlineMs) {
|
|
295
605
|
if (deadlineMs === undefined) {
|
|
296
606
|
return undefined;
|