absurd-sdk 0.0.4 → 0.0.6
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 +4 -12
- package/dist/cjs/index.js +222 -80
- package/dist/index.d.ts +133 -30
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +220 -79
- package/dist/index.js.map +1 -1
- package/package.json +14 -8
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;
|
|
226
260
|
}
|
|
227
261
|
/**
|
|
228
|
-
*
|
|
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;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
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, created
|
|
299
376
|
FROM absurd.spawn_task($1, $2, $3, $4)`, [
|
|
300
377
|
queue,
|
|
301
378
|
taskName,
|
|
@@ -310,31 +387,49 @@ export class Absurd {
|
|
|
310
387
|
taskID: row.task_id,
|
|
311
388
|
runID: row.run_id,
|
|
312
389
|
attempt: row.attempt,
|
|
390
|
+
created: row.created,
|
|
313
391
|
};
|
|
314
392
|
}
|
|
315
393
|
/**
|
|
316
|
-
* Emits an event
|
|
394
|
+
* Emits an event with an optional payload on the specified or default queue.
|
|
395
|
+
* @param eventName Non-empty event name.
|
|
396
|
+
* @param payload Optional JSON-serializable payload.
|
|
397
|
+
* @param queueName Queue to emit to (defaults to this client's queue).
|
|
317
398
|
*/
|
|
318
399
|
async emitEvent(eventName, payload, queueName) {
|
|
319
400
|
if (!eventName) {
|
|
320
401
|
throw new Error("eventName must be a non-empty string");
|
|
321
402
|
}
|
|
322
|
-
await this.
|
|
403
|
+
await this.con.query(`SELECT absurd.emit_event($1, $2, $3)`, [
|
|
323
404
|
queueName || this.queueName,
|
|
324
405
|
eventName,
|
|
325
406
|
JSON.stringify(payload ?? null),
|
|
326
407
|
]);
|
|
327
408
|
}
|
|
409
|
+
/**
|
|
410
|
+
* Cancels a task by ID on the specified or default queue; running tasks stop at the next checkpoint/heartbeat.
|
|
411
|
+
* @param taskID Task identifier to cancel.
|
|
412
|
+
* @param queueName Queue name (defaults to this client's queue).
|
|
413
|
+
*/
|
|
414
|
+
async cancelTask(taskID, queueName) {
|
|
415
|
+
await this.con.query(`SELECT absurd.cancel_task($1, $2)`, [
|
|
416
|
+
queueName || this.queueName,
|
|
417
|
+
taskID,
|
|
418
|
+
]);
|
|
419
|
+
}
|
|
328
420
|
async claimTasks(options) {
|
|
329
421
|
const { batchSize: count = 1, claimTimeout = 120, workerId = "worker", } = options ?? {};
|
|
330
|
-
const result = await this.
|
|
422
|
+
const result = await this.con.query(`SELECT run_id, task_id, attempt, task_name, params, retry_strategy, max_attempts,
|
|
331
423
|
headers, wake_event, event_payload
|
|
332
424
|
FROM absurd.claim_task($1, $2, $3, $4)`, [this.queueName, workerId, claimTimeout, count]);
|
|
333
425
|
return result.rows;
|
|
334
426
|
}
|
|
335
427
|
/**
|
|
336
|
-
*
|
|
337
|
-
*
|
|
428
|
+
* Claims up to batchSize tasks and processes them sequentially using the given workerId and claimTimeout.
|
|
429
|
+
* @param workerId Worker identifier.
|
|
430
|
+
* @param claimTimeout Lease duration in seconds.
|
|
431
|
+
* @param batchSize Maximum number of tasks to process.
|
|
432
|
+
* Note: For parallel processing, use startWorker().
|
|
338
433
|
*/
|
|
339
434
|
async workBatch(workerId = "worker", claimTimeout = 120, batchSize = 1) {
|
|
340
435
|
const tasks = await this.claimTasks({ batchSize, claimTimeout, workerId });
|
|
@@ -343,18 +438,37 @@ export class Absurd {
|
|
|
343
438
|
}
|
|
344
439
|
}
|
|
345
440
|
/**
|
|
346
|
-
* Starts a worker that continuously polls for
|
|
347
|
-
*
|
|
441
|
+
* Starts a background worker that continuously polls for and processes tasks from the queue.
|
|
442
|
+
* The worker will claim tasks up to the configured concurrency limit and process them in parallel.
|
|
443
|
+
*
|
|
444
|
+
* Tasks are claimed with a lease (claimTimeout) that prevents other workers from processing them.
|
|
445
|
+
* The lease is automatically extended when tasks write checkpoints or call heartbeat(). If a worker
|
|
446
|
+
* crashes or stops making progress, the lease expires and another worker can claim the task.
|
|
447
|
+
*
|
|
448
|
+
* @param options Configure worker behavior:
|
|
449
|
+
* - concurrency: Max parallel tasks (default: 1)
|
|
450
|
+
* - claimTimeout: Task lease duration in seconds (default: 120)
|
|
451
|
+
* - batchSize: Tasks to claim per poll (default: concurrency)
|
|
452
|
+
* - pollInterval: Seconds between polls when idle (default: 0.25)
|
|
453
|
+
* - workerId: Worker identifier for tracking (default: hostname:pid)
|
|
454
|
+
* - onError: Error handler called for execution failures
|
|
455
|
+
* - fatalOnLeaseTimeout: Terminate process if task exceeds 2x claimTimeout (default: true)
|
|
456
|
+
* @returns Worker instance with close() method for graceful shutdown.
|
|
348
457
|
*/
|
|
349
458
|
async startWorker(options = {}) {
|
|
350
|
-
const { workerId = `${os.hostname?.() || "host"}:${process.pid}`, claimTimeout = 120, concurrency = 1, batchSize, pollInterval = 0.25, onError = (err) =>
|
|
459
|
+
const { workerId = `${os.hostname?.() || "host"}:${process.pid}`, claimTimeout = 120, concurrency = 1, batchSize, pollInterval = 0.25, onError = (err) => this.log.error("Worker error:", err), fatalOnLeaseTimeout = true, } = options;
|
|
351
460
|
const effectiveBatchSize = batchSize ?? concurrency;
|
|
352
461
|
let running = true;
|
|
353
462
|
let workerLoopPromise;
|
|
354
463
|
const executing = new Set();
|
|
355
464
|
let availabilityPromise = null;
|
|
356
465
|
let availabilityResolve = null;
|
|
466
|
+
let sleepTimer = null;
|
|
357
467
|
const notifyAvailability = () => {
|
|
468
|
+
if (sleepTimer) {
|
|
469
|
+
clearTimeout(sleepTimer);
|
|
470
|
+
sleepTimer = null;
|
|
471
|
+
}
|
|
358
472
|
if (availabilityResolve) {
|
|
359
473
|
availabilityResolve();
|
|
360
474
|
availabilityResolve = null;
|
|
@@ -362,16 +476,18 @@ export class Absurd {
|
|
|
362
476
|
}
|
|
363
477
|
};
|
|
364
478
|
const waitForAvailability = async () => {
|
|
365
|
-
if (executing.size === 0) {
|
|
366
|
-
await sleep(pollInterval);
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
479
|
if (!availabilityPromise) {
|
|
370
480
|
availabilityPromise = new Promise((resolve) => {
|
|
371
481
|
availabilityResolve = resolve;
|
|
482
|
+
sleepTimer = setTimeout(() => {
|
|
483
|
+
sleepTimer = null;
|
|
484
|
+
availabilityResolve = null;
|
|
485
|
+
availabilityPromise = null;
|
|
486
|
+
resolve();
|
|
487
|
+
}, pollInterval * 1000);
|
|
372
488
|
});
|
|
373
489
|
}
|
|
374
|
-
await
|
|
490
|
+
await availabilityPromise;
|
|
375
491
|
};
|
|
376
492
|
const worker = {
|
|
377
493
|
close: async () => {
|
|
@@ -423,12 +539,15 @@ export class Absurd {
|
|
|
423
539
|
})();
|
|
424
540
|
return worker;
|
|
425
541
|
}
|
|
542
|
+
/**
|
|
543
|
+
* Stops any running worker and closes the underlying pool if owned.
|
|
544
|
+
*/
|
|
426
545
|
async close() {
|
|
427
546
|
if (this.worker) {
|
|
428
547
|
await this.worker.close();
|
|
429
548
|
}
|
|
430
549
|
if (this.ownedPool) {
|
|
431
|
-
await this.
|
|
550
|
+
await this.con.end();
|
|
432
551
|
}
|
|
433
552
|
}
|
|
434
553
|
async executeTask(task, claimTimeout, options) {
|
|
@@ -436,8 +555,9 @@ export class Absurd {
|
|
|
436
555
|
let fatalTimer;
|
|
437
556
|
const registration = this.registry.get(task.task_name);
|
|
438
557
|
const ctx = await TaskContext.create({
|
|
558
|
+
log: this.log,
|
|
439
559
|
taskID: task.task_id,
|
|
440
|
-
|
|
560
|
+
con: this.con,
|
|
441
561
|
queueName: registration?.queue ?? "unknown",
|
|
442
562
|
task: task,
|
|
443
563
|
claimTimeout,
|
|
@@ -446,11 +566,11 @@ export class Absurd {
|
|
|
446
566
|
if (claimTimeout > 0) {
|
|
447
567
|
const taskLabel = `${task.task_name} (${task.task_id})`;
|
|
448
568
|
warnTimer = setTimeout(() => {
|
|
449
|
-
|
|
569
|
+
this.log.warn(`task ${taskLabel} exceeded claim timeout of ${claimTimeout}s`);
|
|
450
570
|
}, claimTimeout * 1000);
|
|
451
571
|
if (options?.fatalOnLeaseTimeout) {
|
|
452
572
|
fatalTimer = setTimeout(() => {
|
|
453
|
-
|
|
573
|
+
this.log.error(`task ${taskLabel} exceeded claim timeout of ${claimTimeout}s by more than 100%; terminating process`);
|
|
454
574
|
process.exit(1);
|
|
455
575
|
}, claimTimeout * 1000 * 2);
|
|
456
576
|
}
|
|
@@ -462,14 +582,15 @@ export class Absurd {
|
|
|
462
582
|
throw new Error("Misconfigured task (queue mismatch)");
|
|
463
583
|
}
|
|
464
584
|
const result = await registration.handler(task.params, ctx);
|
|
465
|
-
await
|
|
585
|
+
await completeTaskRun(this.con, this.queueName, task.run_id, result);
|
|
466
586
|
}
|
|
467
587
|
catch (err) {
|
|
468
|
-
if (err instanceof SuspendTask) {
|
|
469
|
-
// Task suspended (sleep or await), don't complete or fail
|
|
588
|
+
if (err instanceof SuspendTask || err instanceof CancelledTask) {
|
|
589
|
+
// Task suspended or cancelled (sleep or await), don't complete or fail
|
|
470
590
|
return;
|
|
471
591
|
}
|
|
472
|
-
|
|
592
|
+
this.log.error("[absurd] task execution failed:", err);
|
|
593
|
+
await failTaskRun(this.con, this.queueName, task.run_id, err);
|
|
473
594
|
}
|
|
474
595
|
finally {
|
|
475
596
|
if (warnTimer) {
|
|
@@ -481,6 +602,11 @@ export class Absurd {
|
|
|
481
602
|
}
|
|
482
603
|
}
|
|
483
604
|
}
|
|
605
|
+
function isQueryable(value) {
|
|
606
|
+
return (typeof value === "object" &&
|
|
607
|
+
value !== null &&
|
|
608
|
+
typeof value.query === "function");
|
|
609
|
+
}
|
|
484
610
|
function serializeError(err) {
|
|
485
611
|
if (err instanceof Error) {
|
|
486
612
|
return {
|
|
@@ -491,6 +617,21 @@ function serializeError(err) {
|
|
|
491
617
|
}
|
|
492
618
|
return { message: String(err) };
|
|
493
619
|
}
|
|
620
|
+
async function completeTaskRun(con, queueName, runID, result) {
|
|
621
|
+
await con.query(`SELECT absurd.complete_run($1, $2, $3)`, [
|
|
622
|
+
queueName,
|
|
623
|
+
runID,
|
|
624
|
+
JSON.stringify(result ?? null),
|
|
625
|
+
]);
|
|
626
|
+
}
|
|
627
|
+
async function failTaskRun(con, queueName, runID, err) {
|
|
628
|
+
await con.query(`SELECT absurd.fail_run($1, $2, $3, $4)`, [
|
|
629
|
+
queueName,
|
|
630
|
+
runID,
|
|
631
|
+
JSON.stringify(serializeError(err)),
|
|
632
|
+
null,
|
|
633
|
+
]);
|
|
634
|
+
}
|
|
494
635
|
function normalizeSpawnOptions(options) {
|
|
495
636
|
const normalized = {};
|
|
496
637
|
if (options.headers !== undefined) {
|
|
@@ -506,6 +647,9 @@ function normalizeSpawnOptions(options) {
|
|
|
506
647
|
if (cancellation) {
|
|
507
648
|
normalized.cancellation = cancellation;
|
|
508
649
|
}
|
|
650
|
+
if (options.idempotencyKey !== undefined) {
|
|
651
|
+
normalized.idempotency_key = options.idempotencyKey;
|
|
652
|
+
}
|
|
509
653
|
return normalized;
|
|
510
654
|
}
|
|
511
655
|
function serializeRetryStrategy(strategy) {
|
|
@@ -536,7 +680,4 @@ function normalizeCancellation(policy) {
|
|
|
536
680
|
}
|
|
537
681
|
return Object.keys(normalized).length > 0 ? normalized : undefined;
|
|
538
682
|
}
|
|
539
|
-
async function sleep(ms) {
|
|
540
|
-
return new Promise((resolve) => setTimeout(resolve, ms * 1000));
|
|
541
|
-
}
|
|
542
683
|
//# 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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"}
|