absurd-sdk 0.0.4 → 0.0.5
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/README.md +2 -4
- package/dist/cjs/index.js +218 -80
- package/dist/index.d.ts +130 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +216 -79
- package/dist/index.js.map +1 -1
- package/package.json +13 -7
package/dist/index.js
CHANGED
|
@@ -13,6 +13,16 @@ export class SuspendTask extends Error {
|
|
|
13
13
|
this.name = "SuspendTask";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Internal exception that is thrown to cancel a run. As a user
|
|
18
|
+
* you should never see this exception.
|
|
19
|
+
*/
|
|
20
|
+
export class CancelledTask extends Error {
|
|
21
|
+
constructor() {
|
|
22
|
+
super("Task cancelled");
|
|
23
|
+
this.name = "CancelledTask";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
16
26
|
/**
|
|
17
27
|
* This error is thrown when awaiting an event ran into a timeout.
|
|
18
28
|
*/
|
|
@@ -23,36 +33,48 @@ export class TimeoutError extends Error {
|
|
|
23
33
|
}
|
|
24
34
|
}
|
|
25
35
|
export class TaskContext {
|
|
36
|
+
log;
|
|
26
37
|
taskID;
|
|
27
|
-
|
|
38
|
+
con;
|
|
28
39
|
queueName;
|
|
29
40
|
task;
|
|
30
41
|
checkpointCache;
|
|
31
42
|
claimTimeout;
|
|
32
43
|
stepNameCounter = new Map();
|
|
33
|
-
constructor(taskID,
|
|
44
|
+
constructor(log, taskID, con, queueName, task, checkpointCache, claimTimeout) {
|
|
45
|
+
this.log = log;
|
|
34
46
|
this.taskID = taskID;
|
|
35
|
-
this.
|
|
47
|
+
this.con = con;
|
|
36
48
|
this.queueName = queueName;
|
|
37
49
|
this.task = task;
|
|
38
50
|
this.checkpointCache = checkpointCache;
|
|
39
51
|
this.claimTimeout = claimTimeout;
|
|
40
52
|
}
|
|
41
53
|
static async create(args) {
|
|
42
|
-
const { taskID,
|
|
43
|
-
const result = await
|
|
54
|
+
const { log, taskID, con, queueName, task, claimTimeout } = args;
|
|
55
|
+
const result = await con.query(`SELECT checkpoint_name, state, status, owner_run_id, updated_at
|
|
44
56
|
FROM absurd.get_task_checkpoint_states($1, $2, $3)`, [queueName, task.task_id, task.run_id]);
|
|
45
57
|
const cache = new Map();
|
|
46
58
|
for (const row of result.rows) {
|
|
47
59
|
cache.set(row.checkpoint_name, row.state);
|
|
48
60
|
}
|
|
49
|
-
return new TaskContext(taskID,
|
|
61
|
+
return new TaskContext(log, taskID, con, queueName, task, cache, claimTimeout);
|
|
62
|
+
}
|
|
63
|
+
async queryWithCancelCheck(sql, params) {
|
|
64
|
+
try {
|
|
65
|
+
return await this.con.query(sql, params);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
if (err?.code === "AB001") {
|
|
69
|
+
throw new CancelledTask();
|
|
70
|
+
}
|
|
71
|
+
throw err;
|
|
72
|
+
}
|
|
50
73
|
}
|
|
51
74
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* must support `JSON.stringify`.
|
|
75
|
+
* Runs an idempotent step identified by name; caches and reuses its result across retries.
|
|
76
|
+
* @param name Unique checkpoint name for this step.
|
|
77
|
+
* @param fn Async function computing the step result (must be JSON-serializable).
|
|
56
78
|
*/
|
|
57
79
|
async step(name, fn) {
|
|
58
80
|
const checkpointName = this.getCheckpointName(name);
|
|
@@ -65,16 +87,17 @@ export class TaskContext {
|
|
|
65
87
|
return rv;
|
|
66
88
|
}
|
|
67
89
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
90
|
+
* Suspends the task until the given duration (seconds) elapses.
|
|
91
|
+
* @param stepName Checkpoint name for this wait.
|
|
92
|
+
* @param duration Duration to wait in seconds.
|
|
71
93
|
*/
|
|
72
94
|
async sleepFor(stepName, duration) {
|
|
73
95
|
return await this.sleepUntil(stepName, new Date(Date.now() + duration * 1000));
|
|
74
96
|
}
|
|
75
97
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
98
|
+
* Suspends the task until the specified time.
|
|
99
|
+
* @param stepName Checkpoint name for this wait.
|
|
100
|
+
* @param wakeAt Absolute time when the task should resume.
|
|
78
101
|
*/
|
|
79
102
|
async sleepUntil(stepName, wakeAt) {
|
|
80
103
|
const checkpointName = this.getCheckpointName(stepName);
|
|
@@ -99,7 +122,7 @@ export class TaskContext {
|
|
|
99
122
|
if (cached !== undefined) {
|
|
100
123
|
return cached;
|
|
101
124
|
}
|
|
102
|
-
const result = await this.
|
|
125
|
+
const result = await this.con.query(`SELECT checkpoint_name, state, status, owner_run_id, updated_at
|
|
103
126
|
FROM absurd.get_task_checkpoint_state($1, $2, $3)`, [this.queueName, this.task.task_id, checkpointName]);
|
|
104
127
|
if (result.rows.length > 0) {
|
|
105
128
|
const state = result.rows[0].state;
|
|
@@ -109,7 +132,7 @@ export class TaskContext {
|
|
|
109
132
|
return undefined;
|
|
110
133
|
}
|
|
111
134
|
async persistCheckpoint(checkpointName, value) {
|
|
112
|
-
await this.
|
|
135
|
+
await this.queryWithCancelCheck(`SELECT absurd.set_task_checkpoint_state($1, $2, $3, $4, $5, $6)`, [
|
|
113
136
|
this.queueName,
|
|
114
137
|
this.task.task_id,
|
|
115
138
|
checkpointName,
|
|
@@ -120,15 +143,18 @@ export class TaskContext {
|
|
|
120
143
|
this.checkpointCache.set(checkpointName, value);
|
|
121
144
|
}
|
|
122
145
|
async scheduleRun(wakeAt) {
|
|
123
|
-
await this.
|
|
146
|
+
await this.con.query(`SELECT absurd.schedule_run($1, $2, $3)`, [
|
|
124
147
|
this.queueName,
|
|
125
148
|
this.task.run_id,
|
|
126
149
|
wakeAt,
|
|
127
150
|
]);
|
|
128
151
|
}
|
|
129
152
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
153
|
+
* Waits for an event by name and returns its payload; optionally sets a custom step name and timeout (seconds).
|
|
154
|
+
* @param eventName Event identifier to wait for.
|
|
155
|
+
* @param options.stepName Optional checkpoint name (defaults to $awaitEvent:<eventName>).
|
|
156
|
+
* @param options.timeout Optional timeout in seconds.
|
|
157
|
+
* @throws TimeoutError If the event is not received before the timeout.
|
|
132
158
|
*/
|
|
133
159
|
async awaitEvent(eventName, options) {
|
|
134
160
|
// the default step name is derived from the event name.
|
|
@@ -151,8 +177,8 @@ export class TaskContext {
|
|
|
151
177
|
this.task.event_payload = null;
|
|
152
178
|
throw new TimeoutError(`Timed out waiting for event "${eventName}"`);
|
|
153
179
|
}
|
|
154
|
-
const result = await this.
|
|
155
|
-
|
|
180
|
+
const result = await this.queryWithCancelCheck(`SELECT should_suspend, payload
|
|
181
|
+
FROM absurd.await_event($1, $2, $3, $4, $5, $6)`, [
|
|
156
182
|
this.queueName,
|
|
157
183
|
this.task.task_id,
|
|
158
184
|
this.task.run_id,
|
|
@@ -172,60 +198,89 @@ export class TaskContext {
|
|
|
172
198
|
throw new SuspendTask();
|
|
173
199
|
}
|
|
174
200
|
/**
|
|
175
|
-
*
|
|
201
|
+
* Extends the current run's lease by the given seconds (defaults to the original claim timeout).
|
|
202
|
+
* @param seconds Lease extension in seconds.
|
|
203
|
+
*/
|
|
204
|
+
async heartbeat(seconds) {
|
|
205
|
+
await this.queryWithCancelCheck(`SELECT absurd.extend_claim($1, $2, $3)`, [
|
|
206
|
+
this.queueName,
|
|
207
|
+
this.task.run_id,
|
|
208
|
+
seconds ?? this.claimTimeout,
|
|
209
|
+
]);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Emits an event to this task's queue with an optional payload.
|
|
213
|
+
* @param eventName Non-empty event name.
|
|
214
|
+
* @param payload Optional JSON-serializable payload.
|
|
176
215
|
*/
|
|
177
216
|
async emitEvent(eventName, payload) {
|
|
178
217
|
if (!eventName) {
|
|
179
218
|
throw new Error("eventName must be a non-empty string");
|
|
180
219
|
}
|
|
181
|
-
await this.
|
|
220
|
+
await this.con.query(`SELECT absurd.emit_event($1, $2, $3)`, [
|
|
182
221
|
this.queueName,
|
|
183
222
|
eventName,
|
|
184
223
|
JSON.stringify(payload ?? null),
|
|
185
224
|
]);
|
|
186
225
|
}
|
|
187
|
-
async complete(result) {
|
|
188
|
-
await this.pool.query(`SELECT absurd.complete_run($1, $2, $3)`, [
|
|
189
|
-
this.queueName,
|
|
190
|
-
this.task.run_id,
|
|
191
|
-
JSON.stringify(result ?? null),
|
|
192
|
-
]);
|
|
193
|
-
}
|
|
194
|
-
async fail(err) {
|
|
195
|
-
console.error("[absurd] task execution failed:", err);
|
|
196
|
-
await this.pool.query(`SELECT absurd.fail_run($1, $2, $3, $4)`, [
|
|
197
|
-
this.queueName,
|
|
198
|
-
this.task.run_id,
|
|
199
|
-
JSON.stringify(serializeError(err)),
|
|
200
|
-
null,
|
|
201
|
-
]);
|
|
202
|
-
}
|
|
203
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* The Absurd SDK Client.
|
|
229
|
+
*
|
|
230
|
+
* Instanciate this class and keep it around to interact with Absurd.
|
|
231
|
+
*/
|
|
204
232
|
export class Absurd {
|
|
205
|
-
|
|
233
|
+
con;
|
|
206
234
|
ownedPool;
|
|
207
235
|
queueName;
|
|
208
236
|
defaultMaxAttempts;
|
|
209
237
|
registry = new Map();
|
|
238
|
+
log;
|
|
210
239
|
worker = null;
|
|
211
|
-
constructor(
|
|
212
|
-
if (
|
|
213
|
-
|
|
240
|
+
constructor(options = {}) {
|
|
241
|
+
if (typeof options === "string" || isQueryable(options)) {
|
|
242
|
+
options = { db: options };
|
|
243
|
+
}
|
|
244
|
+
let connectionOrUrl = options.db;
|
|
245
|
+
if (!connectionOrUrl) {
|
|
246
|
+
connectionOrUrl =
|
|
214
247
|
process.env.ABSURD_DATABASE_URL || "postgresql://localhost/absurd";
|
|
215
248
|
}
|
|
216
|
-
if (typeof
|
|
217
|
-
this.
|
|
249
|
+
if (typeof connectionOrUrl === "string") {
|
|
250
|
+
this.con = new pg.Pool({ connectionString: connectionOrUrl });
|
|
218
251
|
this.ownedPool = true;
|
|
219
252
|
}
|
|
220
253
|
else {
|
|
221
|
-
this.
|
|
254
|
+
this.con = connectionOrUrl;
|
|
222
255
|
this.ownedPool = false;
|
|
223
256
|
}
|
|
224
|
-
this.queueName = queueName;
|
|
225
|
-
this.defaultMaxAttempts = defaultMaxAttempts;
|
|
257
|
+
this.queueName = options?.queueName ?? "default";
|
|
258
|
+
this.defaultMaxAttempts = options?.defaultMaxAttempts ?? 5;
|
|
259
|
+
this.log = options?.log ?? console;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Returns a new client that uses the provided connection for queries; set owned=true to close it with close().
|
|
263
|
+
* @param con Connection to bind to.
|
|
264
|
+
* @param owned If true, the bound client will close this connection on close().
|
|
265
|
+
*/
|
|
266
|
+
bindToConnection(con, owned = false) {
|
|
267
|
+
const bound = new Absurd({
|
|
268
|
+
db: con, // this is okay because we ensure the invariant later
|
|
269
|
+
queueName: this.queueName,
|
|
270
|
+
defaultMaxAttempts: this.defaultMaxAttempts,
|
|
271
|
+
log: this.log,
|
|
272
|
+
});
|
|
273
|
+
bound.registry = this.registry;
|
|
274
|
+
bound.ownedPool = owned;
|
|
275
|
+
return bound;
|
|
226
276
|
}
|
|
227
277
|
/**
|
|
228
|
-
*
|
|
278
|
+
* Registers a task handler by name (optionally specifying queue, defaultMaxAttempts, and defaultCancellation).
|
|
279
|
+
* @param options.name Task name.
|
|
280
|
+
* @param options.queue Optional queue name (defaults to client queue).
|
|
281
|
+
* @param options.defaultMaxAttempts Optional default max attempts.
|
|
282
|
+
* @param options.defaultCancellation Optional default cancellation policy.
|
|
283
|
+
* @param handler Async task handler.
|
|
229
284
|
*/
|
|
230
285
|
registerTask(options, handler) {
|
|
231
286
|
if (!options?.name) {
|
|
@@ -250,16 +305,28 @@ export class Absurd {
|
|
|
250
305
|
handler: handler,
|
|
251
306
|
});
|
|
252
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Creates a queue (defaults to this client's queue).
|
|
310
|
+
* @param queueName Queue name to create.
|
|
311
|
+
*/
|
|
253
312
|
async createQueue(queueName) {
|
|
254
313
|
const queue = queueName ?? this.queueName;
|
|
255
|
-
await this.
|
|
314
|
+
await this.con.query(`SELECT absurd.create_queue($1)`, [queue]);
|
|
256
315
|
}
|
|
316
|
+
/**
|
|
317
|
+
* Drops a queue (defaults to this client's queue).
|
|
318
|
+
* @param queueName Queue name to drop.
|
|
319
|
+
*/
|
|
257
320
|
async dropQueue(queueName) {
|
|
258
321
|
const queue = queueName ?? this.queueName;
|
|
259
|
-
await this.
|
|
322
|
+
await this.con.query(`SELECT absurd.drop_queue($1)`, [queue]);
|
|
260
323
|
}
|
|
324
|
+
/**
|
|
325
|
+
* Lists all queue names.
|
|
326
|
+
* @returns Array of queue names.
|
|
327
|
+
*/
|
|
261
328
|
async listQueues() {
|
|
262
|
-
const result = await this.
|
|
329
|
+
const result = await this.con.query(`SELECT * FROM absurd.list_queues()`);
|
|
263
330
|
const rv = [];
|
|
264
331
|
for (const row of result.rows) {
|
|
265
332
|
rv.push(row.queue_name);
|
|
@@ -267,7 +334,17 @@ export class Absurd {
|
|
|
267
334
|
return rv;
|
|
268
335
|
}
|
|
269
336
|
/**
|
|
270
|
-
* Spawns a
|
|
337
|
+
* Spawns a task execution by enqueueing it for processing. The task will be picked up by a worker
|
|
338
|
+
* and executed with the provided parameters. Returns identifiers that can be used to track or cancel the task.
|
|
339
|
+
*
|
|
340
|
+
* For registered tasks, the queue and defaults are inferred from registration. For unregistered tasks,
|
|
341
|
+
* you must provide options.queue.
|
|
342
|
+
*
|
|
343
|
+
* @param taskName Name of the task to spawn (must be registered or provide options.queue).
|
|
344
|
+
* @param params JSON-serializable parameters passed to the task handler.
|
|
345
|
+
* @param options Configure queue, maxAttempts, retryStrategy, headers, and cancellation policies.
|
|
346
|
+
* @returns Object containing taskID (unique task identifier), runID (current attempt identifier), and attempt number.
|
|
347
|
+
* @throws Error If the task is unregistered without a queue, or if the queue mismatches registration.
|
|
271
348
|
*/
|
|
272
349
|
async spawn(taskName, params, options = {}) {
|
|
273
350
|
const registration = this.registry.get(taskName);
|
|
@@ -295,7 +372,7 @@ export class Absurd {
|
|
|
295
372
|
maxAttempts: effectiveMaxAttempts,
|
|
296
373
|
cancellation: effectiveCancellation,
|
|
297
374
|
});
|
|
298
|
-
const result = await this.
|
|
375
|
+
const result = await this.con.query(`SELECT task_id, run_id, attempt
|
|
299
376
|
FROM absurd.spawn_task($1, $2, $3, $4)`, [
|
|
300
377
|
queue,
|
|
301
378
|
taskName,
|
|
@@ -313,28 +390,45 @@ export class Absurd {
|
|
|
313
390
|
};
|
|
314
391
|
}
|
|
315
392
|
/**
|
|
316
|
-
* Emits an event
|
|
393
|
+
* Emits an event with an optional payload on the specified or default queue.
|
|
394
|
+
* @param eventName Non-empty event name.
|
|
395
|
+
* @param payload Optional JSON-serializable payload.
|
|
396
|
+
* @param queueName Queue to emit to (defaults to this client's queue).
|
|
317
397
|
*/
|
|
318
398
|
async emitEvent(eventName, payload, queueName) {
|
|
319
399
|
if (!eventName) {
|
|
320
400
|
throw new Error("eventName must be a non-empty string");
|
|
321
401
|
}
|
|
322
|
-
await this.
|
|
402
|
+
await this.con.query(`SELECT absurd.emit_event($1, $2, $3)`, [
|
|
323
403
|
queueName || this.queueName,
|
|
324
404
|
eventName,
|
|
325
405
|
JSON.stringify(payload ?? null),
|
|
326
406
|
]);
|
|
327
407
|
}
|
|
408
|
+
/**
|
|
409
|
+
* Cancels a task by ID on the specified or default queue; running tasks stop at the next checkpoint/heartbeat.
|
|
410
|
+
* @param taskID Task identifier to cancel.
|
|
411
|
+
* @param queueName Queue name (defaults to this client's queue).
|
|
412
|
+
*/
|
|
413
|
+
async cancelTask(taskID, queueName) {
|
|
414
|
+
await this.con.query(`SELECT absurd.cancel_task($1, $2)`, [
|
|
415
|
+
queueName || this.queueName,
|
|
416
|
+
taskID,
|
|
417
|
+
]);
|
|
418
|
+
}
|
|
328
419
|
async claimTasks(options) {
|
|
329
420
|
const { batchSize: count = 1, claimTimeout = 120, workerId = "worker", } = options ?? {};
|
|
330
|
-
const result = await this.
|
|
421
|
+
const result = await this.con.query(`SELECT run_id, task_id, attempt, task_name, params, retry_strategy, max_attempts,
|
|
331
422
|
headers, wake_event, event_payload
|
|
332
423
|
FROM absurd.claim_task($1, $2, $3, $4)`, [this.queueName, workerId, claimTimeout, count]);
|
|
333
424
|
return result.rows;
|
|
334
425
|
}
|
|
335
426
|
/**
|
|
336
|
-
*
|
|
337
|
-
*
|
|
427
|
+
* Claims up to batchSize tasks and processes them sequentially using the given workerId and claimTimeout.
|
|
428
|
+
* @param workerId Worker identifier.
|
|
429
|
+
* @param claimTimeout Lease duration in seconds.
|
|
430
|
+
* @param batchSize Maximum number of tasks to process.
|
|
431
|
+
* Note: For parallel processing, use startWorker().
|
|
338
432
|
*/
|
|
339
433
|
async workBatch(workerId = "worker", claimTimeout = 120, batchSize = 1) {
|
|
340
434
|
const tasks = await this.claimTasks({ batchSize, claimTimeout, workerId });
|
|
@@ -343,18 +437,37 @@ export class Absurd {
|
|
|
343
437
|
}
|
|
344
438
|
}
|
|
345
439
|
/**
|
|
346
|
-
* Starts a worker that continuously polls for
|
|
347
|
-
*
|
|
440
|
+
* Starts a background worker that continuously polls for and processes tasks from the queue.
|
|
441
|
+
* The worker will claim tasks up to the configured concurrency limit and process them in parallel.
|
|
442
|
+
*
|
|
443
|
+
* Tasks are claimed with a lease (claimTimeout) that prevents other workers from processing them.
|
|
444
|
+
* The lease is automatically extended when tasks write checkpoints or call heartbeat(). If a worker
|
|
445
|
+
* crashes or stops making progress, the lease expires and another worker can claim the task.
|
|
446
|
+
*
|
|
447
|
+
* @param options Configure worker behavior:
|
|
448
|
+
* - concurrency: Max parallel tasks (default: 1)
|
|
449
|
+
* - claimTimeout: Task lease duration in seconds (default: 120)
|
|
450
|
+
* - batchSize: Tasks to claim per poll (default: concurrency)
|
|
451
|
+
* - pollInterval: Seconds between polls when idle (default: 0.25)
|
|
452
|
+
* - workerId: Worker identifier for tracking (default: hostname:pid)
|
|
453
|
+
* - onError: Error handler called for execution failures
|
|
454
|
+
* - fatalOnLeaseTimeout: Terminate process if task exceeds 2x claimTimeout (default: true)
|
|
455
|
+
* @returns Worker instance with close() method for graceful shutdown.
|
|
348
456
|
*/
|
|
349
457
|
async startWorker(options = {}) {
|
|
350
|
-
const { workerId = `${os.hostname?.() || "host"}:${process.pid}`, claimTimeout = 120, concurrency = 1, batchSize, pollInterval = 0.25, onError = (err) => console.error("
|
|
458
|
+
const { workerId = `${os.hostname?.() || "host"}:${process.pid}`, claimTimeout = 120, concurrency = 1, batchSize, pollInterval = 0.25, onError = (err) => console.error("Worker error:", err), fatalOnLeaseTimeout = true, } = options;
|
|
351
459
|
const effectiveBatchSize = batchSize ?? concurrency;
|
|
352
460
|
let running = true;
|
|
353
461
|
let workerLoopPromise;
|
|
354
462
|
const executing = new Set();
|
|
355
463
|
let availabilityPromise = null;
|
|
356
464
|
let availabilityResolve = null;
|
|
465
|
+
let sleepTimer = null;
|
|
357
466
|
const notifyAvailability = () => {
|
|
467
|
+
if (sleepTimer) {
|
|
468
|
+
clearTimeout(sleepTimer);
|
|
469
|
+
sleepTimer = null;
|
|
470
|
+
}
|
|
358
471
|
if (availabilityResolve) {
|
|
359
472
|
availabilityResolve();
|
|
360
473
|
availabilityResolve = null;
|
|
@@ -362,16 +475,18 @@ export class Absurd {
|
|
|
362
475
|
}
|
|
363
476
|
};
|
|
364
477
|
const waitForAvailability = async () => {
|
|
365
|
-
if (executing.size === 0) {
|
|
366
|
-
await sleep(pollInterval);
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
478
|
if (!availabilityPromise) {
|
|
370
479
|
availabilityPromise = new Promise((resolve) => {
|
|
371
480
|
availabilityResolve = resolve;
|
|
481
|
+
sleepTimer = setTimeout(() => {
|
|
482
|
+
sleepTimer = null;
|
|
483
|
+
availabilityResolve = null;
|
|
484
|
+
availabilityPromise = null;
|
|
485
|
+
resolve();
|
|
486
|
+
}, pollInterval * 1000);
|
|
372
487
|
});
|
|
373
488
|
}
|
|
374
|
-
await
|
|
489
|
+
await availabilityPromise;
|
|
375
490
|
};
|
|
376
491
|
const worker = {
|
|
377
492
|
close: async () => {
|
|
@@ -423,12 +538,15 @@ export class Absurd {
|
|
|
423
538
|
})();
|
|
424
539
|
return worker;
|
|
425
540
|
}
|
|
541
|
+
/**
|
|
542
|
+
* Stops any running worker and closes the underlying pool if owned.
|
|
543
|
+
*/
|
|
426
544
|
async close() {
|
|
427
545
|
if (this.worker) {
|
|
428
546
|
await this.worker.close();
|
|
429
547
|
}
|
|
430
548
|
if (this.ownedPool) {
|
|
431
|
-
await this.
|
|
549
|
+
await this.con.end();
|
|
432
550
|
}
|
|
433
551
|
}
|
|
434
552
|
async executeTask(task, claimTimeout, options) {
|
|
@@ -436,8 +554,9 @@ export class Absurd {
|
|
|
436
554
|
let fatalTimer;
|
|
437
555
|
const registration = this.registry.get(task.task_name);
|
|
438
556
|
const ctx = await TaskContext.create({
|
|
557
|
+
log: this.log,
|
|
439
558
|
taskID: task.task_id,
|
|
440
|
-
|
|
559
|
+
con: this.con,
|
|
441
560
|
queueName: registration?.queue ?? "unknown",
|
|
442
561
|
task: task,
|
|
443
562
|
claimTimeout,
|
|
@@ -446,11 +565,11 @@ export class Absurd {
|
|
|
446
565
|
if (claimTimeout > 0) {
|
|
447
566
|
const taskLabel = `${task.task_name} (${task.task_id})`;
|
|
448
567
|
warnTimer = setTimeout(() => {
|
|
449
|
-
|
|
568
|
+
this.log.warn(`task ${taskLabel} exceeded claim timeout of ${claimTimeout}s`);
|
|
450
569
|
}, claimTimeout * 1000);
|
|
451
570
|
if (options?.fatalOnLeaseTimeout) {
|
|
452
571
|
fatalTimer = setTimeout(() => {
|
|
453
|
-
|
|
572
|
+
this.log.error(`task ${taskLabel} exceeded claim timeout of ${claimTimeout}s by more than 100%; terminating process`);
|
|
454
573
|
process.exit(1);
|
|
455
574
|
}, claimTimeout * 1000 * 2);
|
|
456
575
|
}
|
|
@@ -462,14 +581,15 @@ export class Absurd {
|
|
|
462
581
|
throw new Error("Misconfigured task (queue mismatch)");
|
|
463
582
|
}
|
|
464
583
|
const result = await registration.handler(task.params, ctx);
|
|
465
|
-
await
|
|
584
|
+
await completeTaskRun(this.con, this.queueName, task.run_id, result);
|
|
466
585
|
}
|
|
467
586
|
catch (err) {
|
|
468
|
-
if (err instanceof SuspendTask) {
|
|
469
|
-
// Task suspended (sleep or await), don't complete or fail
|
|
587
|
+
if (err instanceof SuspendTask || err instanceof CancelledTask) {
|
|
588
|
+
// Task suspended or cancelled (sleep or await), don't complete or fail
|
|
470
589
|
return;
|
|
471
590
|
}
|
|
472
|
-
|
|
591
|
+
this.log.error("[absurd] task execution failed:", err);
|
|
592
|
+
await failTaskRun(this.con, this.queueName, task.run_id, err);
|
|
473
593
|
}
|
|
474
594
|
finally {
|
|
475
595
|
if (warnTimer) {
|
|
@@ -481,6 +601,11 @@ export class Absurd {
|
|
|
481
601
|
}
|
|
482
602
|
}
|
|
483
603
|
}
|
|
604
|
+
function isQueryable(value) {
|
|
605
|
+
return (typeof value === "object" &&
|
|
606
|
+
value !== null &&
|
|
607
|
+
typeof value.query === "function");
|
|
608
|
+
}
|
|
484
609
|
function serializeError(err) {
|
|
485
610
|
if (err instanceof Error) {
|
|
486
611
|
return {
|
|
@@ -491,6 +616,21 @@ function serializeError(err) {
|
|
|
491
616
|
}
|
|
492
617
|
return { message: String(err) };
|
|
493
618
|
}
|
|
619
|
+
async function completeTaskRun(con, queueName, runID, result) {
|
|
620
|
+
await con.query(`SELECT absurd.complete_run($1, $2, $3)`, [
|
|
621
|
+
queueName,
|
|
622
|
+
runID,
|
|
623
|
+
JSON.stringify(result ?? null),
|
|
624
|
+
]);
|
|
625
|
+
}
|
|
626
|
+
async function failTaskRun(con, queueName, runID, err) {
|
|
627
|
+
await con.query(`SELECT absurd.fail_run($1, $2, $3, $4)`, [
|
|
628
|
+
queueName,
|
|
629
|
+
runID,
|
|
630
|
+
JSON.stringify(serializeError(err)),
|
|
631
|
+
null,
|
|
632
|
+
]);
|
|
633
|
+
}
|
|
494
634
|
function normalizeSpawnOptions(options) {
|
|
495
635
|
const normalized = {};
|
|
496
636
|
if (options.headers !== undefined) {
|
|
@@ -536,7 +676,4 @@ function normalizeCancellation(policy) {
|
|
|
536
676
|
}
|
|
537
677
|
return Object.keys(normalized).length > 0 ? normalized : undefined;
|
|
538
678
|
}
|
|
539
|
-
async function sleep(ms) {
|
|
540
|
-
return new Promise((resolve) => setTimeout(resolve, ms * 1000));
|
|
541
|
-
}
|
|
542
679
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|