agenda 6.0.0 → 6.2.0
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 +16 -5
- package/dist/Job.js +107 -0
- package/dist/Job.js.map +1 -1
- package/dist/JobProcessor.d.ts +4 -2
- package/dist/JobProcessor.js +73 -8
- package/dist/JobProcessor.js.map +1 -1
- package/dist/index.d.ts +150 -17
- package/dist/index.js +213 -13
- package/dist/index.js.map +1 -1
- package/dist/notifications/BaseNotificationChannel.d.ts +12 -1
- package/dist/notifications/BaseNotificationChannel.js +30 -0
- package/dist/notifications/BaseNotificationChannel.js.map +1 -1
- package/dist/notifications/InMemoryNotificationChannel.d.ts +2 -1
- package/dist/notifications/InMemoryNotificationChannel.js +7 -0
- package/dist/notifications/InMemoryNotificationChannel.js.map +1 -1
- package/dist/types/AgendaBackend.d.ts +8 -0
- package/dist/types/AgendaConfig.d.ts +1 -0
- package/dist/types/DrainOptions.d.ts +37 -0
- package/dist/types/DrainOptions.js +2 -0
- package/dist/types/DrainOptions.js.map +1 -0
- package/dist/types/JobDefinition.d.ts +9 -0
- package/dist/types/JobLogger.d.ts +111 -0
- package/dist/types/JobLogger.js +2 -0
- package/dist/types/JobLogger.js.map +1 -0
- package/dist/types/NotificationChannel.d.ts +49 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ import { ForkOptions } from 'child_process';
|
|
|
3
3
|
import type { JobDefinition } from './types/JobDefinition.js';
|
|
4
4
|
import type { AgendaConfig } from './types/AgendaConfig.js';
|
|
5
5
|
import type { AgendaBackend } from './types/AgendaBackend.js';
|
|
6
|
-
import type { NotificationChannel } from './types/NotificationChannel.js';
|
|
6
|
+
import type { NotificationChannel, JobStateNotification, JobStateType } from './types/NotificationChannel.js';
|
|
7
7
|
import type { JobRepository } from './types/JobRepository.js';
|
|
8
8
|
import type { AgendaStatus } from './types/AgendaStatus.js';
|
|
9
9
|
import type { JobsQueryOptions, JobsResult, JobsOverview } from './types/JobQuery.js';
|
|
10
10
|
import type { RemoveJobsOptions } from './types/JobRepository.js';
|
|
11
|
+
import type { DrainOptions, DrainResult } from './types/DrainOptions.js';
|
|
12
|
+
import type { JobLogger, JobLogEntry, JobLogQuery, JobLogQueryResult } from './types/JobLogger.js';
|
|
11
13
|
import { Job, JobWithId } from './Job.js';
|
|
12
14
|
import { JobPriority } from './utils/priority.js';
|
|
13
15
|
/**
|
|
@@ -30,6 +32,8 @@ export interface AgendaOptions {
|
|
|
30
32
|
lockLimit?: number;
|
|
31
33
|
/** Default lock lifetime in milliseconds */
|
|
32
34
|
defaultLockLifetime?: number;
|
|
35
|
+
/** Automatically remove one-time jobs from database after successful completion */
|
|
36
|
+
removeOnComplete?: boolean;
|
|
33
37
|
/** Fork helper configuration for sandboxed workers */
|
|
34
38
|
forkHelper?: {
|
|
35
39
|
path: string;
|
|
@@ -43,6 +47,52 @@ export interface AgendaOptions {
|
|
|
43
47
|
* e.g., MongoDB storage + Redis notifications
|
|
44
48
|
*/
|
|
45
49
|
notificationChannel?: NotificationChannel;
|
|
50
|
+
/**
|
|
51
|
+
* Enable persistent job event logging (stored in the backend's database).
|
|
52
|
+
*
|
|
53
|
+
* Disabled by default. When enabled, all job lifecycle events (start, success,
|
|
54
|
+
* fail, complete, retry, etc.) are persisted and can be queried via
|
|
55
|
+
* `agenda.getLogs()` or viewed in agendash.
|
|
56
|
+
*
|
|
57
|
+
* Options:
|
|
58
|
+
* - `true` — use the backend's built-in logger, all jobs are logged
|
|
59
|
+
* - `false` / omitted — no logging (default)
|
|
60
|
+
* - `JobLogger` — use a custom logger instance, all jobs are logged
|
|
61
|
+
* - `{ logger?: JobLogger, default?: boolean }` — fine-grained control:
|
|
62
|
+
* - `logger`: custom `JobLogger` (omit to use backend's built-in logger)
|
|
63
|
+
* - `default`: whether job definitions are logged by default (`true` = all logged,
|
|
64
|
+
* `false` = only jobs with `logging: true` in their definition are logged).
|
|
65
|
+
* Defaults to `true`.
|
|
66
|
+
*
|
|
67
|
+
* Per-job definitions can override the default via `define('job', fn, { logging: false })`.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* // Enable — log all jobs using backend's logger
|
|
72
|
+
* const agenda = new Agenda({ backend, logging: true });
|
|
73
|
+
*
|
|
74
|
+
* // Enable — opt-in per job (logger configured, but off by default)
|
|
75
|
+
* const agenda = new Agenda({ backend, logging: { default: false } });
|
|
76
|
+
* agenda.define('important', handler, { logging: true }); // logged
|
|
77
|
+
* agenda.define('noisy', handler); // NOT logged
|
|
78
|
+
*
|
|
79
|
+
* // Enable — custom logger (e.g., log to Postgres while using Mongo for storage)
|
|
80
|
+
* const agenda = new Agenda({ backend, logging: myPostgresJobLogger });
|
|
81
|
+
*
|
|
82
|
+
* // Enable — custom logger + opt-in per job
|
|
83
|
+
* const agenda = new Agenda({
|
|
84
|
+
* backend,
|
|
85
|
+
* logging: { logger: myPostgresJobLogger, default: false }
|
|
86
|
+
* });
|
|
87
|
+
*
|
|
88
|
+
* // Query logs
|
|
89
|
+
* const { entries } = await agenda.getLogs({ jobName: 'myJob', limit: 100 });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
logging?: boolean | JobLogger | {
|
|
93
|
+
logger?: JobLogger;
|
|
94
|
+
default?: boolean;
|
|
95
|
+
};
|
|
46
96
|
}
|
|
47
97
|
/**
|
|
48
98
|
* Details provided when a job is scheduled for retry
|
|
@@ -74,19 +124,46 @@ export declare class Agenda extends EventEmitter {
|
|
|
74
124
|
private backend;
|
|
75
125
|
db: JobRepository;
|
|
76
126
|
private notificationChannel?;
|
|
127
|
+
private stateSubscriptionUnsubscribe?;
|
|
128
|
+
/**
|
|
129
|
+
* The persistent job logger for storing job lifecycle events in the database.
|
|
130
|
+
* Disabled by default. Enable via `logging: true` (uses backend's built-in logger)
|
|
131
|
+
* or by passing a custom `JobLogger` implementation.
|
|
132
|
+
*/
|
|
133
|
+
jobLogger?: JobLogger;
|
|
134
|
+
/**
|
|
135
|
+
* Default logging behavior for job definitions that don't explicitly set `logging`.
|
|
136
|
+
* When `true` (default when logging is enabled), all jobs are logged.
|
|
137
|
+
* When `false`, only jobs with `logging: true` in their definition are logged.
|
|
138
|
+
*/
|
|
139
|
+
loggingDefault: boolean;
|
|
77
140
|
on(event: 'ready', listener: () => void): this;
|
|
78
141
|
on(event: 'error', listener: (error: Error) => void): this;
|
|
79
|
-
on(event: 'fail', listener: (error: Error, job: JobWithId) => void): this;
|
|
80
|
-
on(event: '
|
|
81
|
-
on(event: '
|
|
82
|
-
on(event: '
|
|
83
|
-
on(event: '
|
|
142
|
+
on(event: 'fail', listener: (error: Error, job: JobWithId, remote?: false) => void): this;
|
|
143
|
+
on(event: 'fail', listener: (error: string, job: JobStateNotification, remote: true) => void): this;
|
|
144
|
+
on(event: 'success', listener: (job: JobWithId, remote?: false) => void): this;
|
|
145
|
+
on(event: 'success', listener: (job: JobStateNotification, remote: true) => void): this;
|
|
146
|
+
on(event: 'start', listener: (job: JobWithId, remote?: false) => void): this;
|
|
147
|
+
on(event: 'start', listener: (job: JobStateNotification, remote: true) => void): this;
|
|
148
|
+
on(event: 'complete', listener: (job: JobWithId, remote?: false) => void): this;
|
|
149
|
+
on(event: 'complete', listener: (job: JobStateNotification, remote: true) => void): this;
|
|
150
|
+
on(event: 'progress', listener: (job: JobWithId, remote?: false) => void): this;
|
|
151
|
+
on(event: 'progress', listener: (job: JobStateNotification, remote: true) => void): this;
|
|
152
|
+
on(event: 'retry', listener: (job: JobWithId, details: RetryDetails, remote?: false) => void): this;
|
|
153
|
+
on(event: 'retry', listener: (job: JobStateNotification, details: RetryDetails, remote: true) => void): this;
|
|
84
154
|
on(event: 'retry exhausted', listener: (error: Error, job: JobWithId) => void): this;
|
|
85
|
-
on(event: `fail:${string}`, listener: (error: Error, job: JobWithId) => void): this;
|
|
86
|
-
on(event: `
|
|
87
|
-
on(event: `
|
|
88
|
-
on(event: `
|
|
89
|
-
on(event: `
|
|
155
|
+
on(event: `fail:${string}`, listener: (error: Error, job: JobWithId, remote?: false) => void): this;
|
|
156
|
+
on(event: `fail:${string}`, listener: (error: string, job: JobStateNotification, remote: true) => void): this;
|
|
157
|
+
on(event: `success:${string}`, listener: (job: JobWithId, remote?: false) => void): this;
|
|
158
|
+
on(event: `success:${string}`, listener: (job: JobStateNotification, remote: true) => void): this;
|
|
159
|
+
on(event: `start:${string}`, listener: (job: JobWithId, remote?: false) => void): this;
|
|
160
|
+
on(event: `start:${string}`, listener: (job: JobStateNotification, remote: true) => void): this;
|
|
161
|
+
on(event: `complete:${string}`, listener: (job: JobWithId, remote?: false) => void): this;
|
|
162
|
+
on(event: `complete:${string}`, listener: (job: JobStateNotification, remote: true) => void): this;
|
|
163
|
+
on(event: `progress:${string}`, listener: (job: JobWithId, remote?: false) => void): this;
|
|
164
|
+
on(event: `progress:${string}`, listener: (job: JobStateNotification, remote: true) => void): this;
|
|
165
|
+
on(event: `retry:${string}`, listener: (job: JobWithId, details: RetryDetails, remote?: false) => void): this;
|
|
166
|
+
on(event: `retry:${string}`, listener: (job: JobStateNotification, details: RetryDetails, remote: true) => void): this;
|
|
90
167
|
on(event: `retry exhausted:${string}`, listener: (error: Error, job: JobWithId) => void): this;
|
|
91
168
|
readonly definitions: {
|
|
92
169
|
[name: string]: JobDefinition;
|
|
@@ -163,11 +240,45 @@ export declare class Agenda extends EventEmitter {
|
|
|
163
240
|
* Check if a notification channel is configured
|
|
164
241
|
*/
|
|
165
242
|
hasNotificationChannel(): boolean;
|
|
243
|
+
/**
|
|
244
|
+
* Check if persistent job logging is enabled
|
|
245
|
+
*/
|
|
246
|
+
hasJobLogger(): boolean;
|
|
247
|
+
/**
|
|
248
|
+
* Log a job lifecycle event to the persistent job logger (fire-and-forget).
|
|
249
|
+
* Does nothing if no job logger is configured or if logging is disabled
|
|
250
|
+
* for the job definition (respects per-definition `logging` and the global `loggingDefault`).
|
|
251
|
+
* @internal
|
|
252
|
+
*/
|
|
253
|
+
logJobEvent(entry: Omit<JobLogEntry, '_id' | 'timestamp' | 'agendaName'>): void;
|
|
254
|
+
/**
|
|
255
|
+
* Query persistent job logs.
|
|
256
|
+
* Returns empty result if no job logger is configured.
|
|
257
|
+
*/
|
|
258
|
+
getLogs(query?: JobLogQuery): Promise<JobLogQueryResult>;
|
|
259
|
+
/**
|
|
260
|
+
* Clear persistent job logs matching the query.
|
|
261
|
+
* Returns 0 if no job logger is configured.
|
|
262
|
+
*/
|
|
263
|
+
clearLogs(query?: JobLogQuery): Promise<number>;
|
|
166
264
|
/**
|
|
167
265
|
* Publish a job notification to the notification channel
|
|
168
266
|
* @internal
|
|
169
267
|
*/
|
|
170
268
|
publishJobNotification(job: Job): Promise<void>;
|
|
269
|
+
/**
|
|
270
|
+
* Publish a job state notification to the notification channel.
|
|
271
|
+
* This enables bi-directional communication so that all subscribers
|
|
272
|
+
* can receive job lifecycle events (start, success, fail, complete, etc.)
|
|
273
|
+
* @internal
|
|
274
|
+
*/
|
|
275
|
+
publishJobStateNotification(job: Job, type: JobStateType, extra?: Partial<Omit<JobStateNotification, 'type' | 'jobId' | 'jobName' | 'timestamp' | 'source'>>): void;
|
|
276
|
+
/**
|
|
277
|
+
* Subscribe to state notifications and re-emit them as regular events.
|
|
278
|
+
* This allows `agenda.on('success:jobName', ...)` to work across processes.
|
|
279
|
+
* @internal
|
|
280
|
+
*/
|
|
281
|
+
private subscribeToStateNotifications;
|
|
171
282
|
/**
|
|
172
283
|
* Query jobs with database-agnostic options.
|
|
173
284
|
* Returns jobs with computed states and supports filtering by state.
|
|
@@ -196,10 +307,10 @@ export declare class Agenda extends EventEmitter {
|
|
|
196
307
|
* @param processor
|
|
197
308
|
* @param options
|
|
198
309
|
*/
|
|
199
|
-
define<DATA = any>(name: string, processor: (agendaJob: Job<DATA>, done: (error?: Error) => void) => void, options?: Partial<Pick<JobDefinition, 'lockLimit' | 'lockLifetime' | 'concurrency' | 'backoff'>> & {
|
|
310
|
+
define<DATA = any>(name: string, processor: (agendaJob: Job<DATA>, done: (error?: Error) => void) => void, options?: Partial<Pick<JobDefinition, 'lockLimit' | 'lockLifetime' | 'concurrency' | 'backoff' | 'removeOnComplete' | 'logging'>> & {
|
|
200
311
|
priority?: JobPriority;
|
|
201
312
|
}): void;
|
|
202
|
-
define<DATA = any>(name: string, processor: (agendaJob: Job<DATA>) => Promise<void>, options?: Partial<Pick<JobDefinition, 'lockLimit' | 'lockLifetime' | 'concurrency' | 'backoff'>> & {
|
|
313
|
+
define<DATA = any>(name: string, processor: (agendaJob: Job<DATA>) => Promise<void>, options?: Partial<Pick<JobDefinition, 'lockLimit' | 'lockLifetime' | 'concurrency' | 'backoff' | 'removeOnComplete' | 'logging'>> & {
|
|
203
314
|
priority?: JobPriority;
|
|
204
315
|
}): void;
|
|
205
316
|
/**
|
|
@@ -337,11 +448,31 @@ export declare class Agenda extends EventEmitter {
|
|
|
337
448
|
* Waits for all currently running jobs to finish before stopping.
|
|
338
449
|
* This allows for a graceful shutdown where jobs complete their work.
|
|
339
450
|
* Unlike stop(), this method waits for running jobs to complete instead of unlocking them.
|
|
340
|
-
*
|
|
341
|
-
*
|
|
342
|
-
*
|
|
451
|
+
*
|
|
452
|
+
* @param options - Drain options or timeout in milliseconds
|
|
453
|
+
* - `timeout`: Maximum time to wait for jobs to complete
|
|
454
|
+
* - `signal`: AbortSignal to cancel the drain operation
|
|
455
|
+
* - `closeConnection`: Whether to close the database connection (default: backend.ownsConnection)
|
|
456
|
+
* @returns DrainResult with completion statistics
|
|
457
|
+
*
|
|
458
|
+
* @example
|
|
459
|
+
* // Wait indefinitely for all jobs to complete
|
|
460
|
+
* await agenda.drain();
|
|
461
|
+
*
|
|
462
|
+
* @example
|
|
463
|
+
* // Wait up to 30 seconds
|
|
464
|
+
* const result = await agenda.drain(30000);
|
|
465
|
+
* if (result.timedOut) console.log(`${result.running} jobs still running`);
|
|
466
|
+
*
|
|
467
|
+
* @example
|
|
468
|
+
* // Use AbortSignal for external control
|
|
469
|
+
* const controller = new AbortController();
|
|
470
|
+
* setTimeout(() => controller.abort(), 30000);
|
|
471
|
+
* await agenda.drain({ signal: controller.signal });
|
|
343
472
|
*/
|
|
344
|
-
drain(
|
|
473
|
+
drain(options?: number | (DrainOptions & {
|
|
474
|
+
closeConnection?: boolean;
|
|
475
|
+
})): Promise<DrainResult>;
|
|
345
476
|
}
|
|
346
477
|
export * from './types/AgendaConfig.js';
|
|
347
478
|
export * from './types/JobDefinition.js';
|
|
@@ -353,7 +484,9 @@ export * from './types/JobRepository.js';
|
|
|
353
484
|
export * from './types/NotificationChannel.js';
|
|
354
485
|
export * from './types/AgendaBackend.js';
|
|
355
486
|
export * from './types/AgendaStatus.js';
|
|
487
|
+
export * from './types/DrainOptions.js';
|
|
356
488
|
export * from './notifications/index.js';
|
|
489
|
+
export * from './types/JobLogger.js';
|
|
357
490
|
export { applyAllDateConstraints, applyDateRangeConstraints, applySkipDays, shouldSkipDay, isWithinDateRange } from './utils/dateConstraints.js';
|
|
358
491
|
export * from './decorators/index.js';
|
|
359
492
|
export { backoffStrategies, constant, linear, exponential, combine, when, type BackoffStrategy, type BackoffContext, type BackoffOptions, type ExponentialBackoffOptions, type LinearBackoffOptions } from './utils/backoff.js';
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,8 @@ const DefaultOptions = {
|
|
|
13
13
|
defaultLockLimit: 0,
|
|
14
14
|
lockLimit: 0,
|
|
15
15
|
defaultLockLifetime: 10 * 60 * 1000,
|
|
16
|
-
forkHelper: { path: 'dist/childWorker.js' }
|
|
16
|
+
forkHelper: { path: 'dist/childWorker.js' },
|
|
17
|
+
removeOnComplete: false
|
|
17
18
|
};
|
|
18
19
|
/**
|
|
19
20
|
* @class
|
|
@@ -25,6 +26,19 @@ export class Agenda extends EventEmitter {
|
|
|
25
26
|
backend;
|
|
26
27
|
db;
|
|
27
28
|
notificationChannel;
|
|
29
|
+
stateSubscriptionUnsubscribe;
|
|
30
|
+
/**
|
|
31
|
+
* The persistent job logger for storing job lifecycle events in the database.
|
|
32
|
+
* Disabled by default. Enable via `logging: true` (uses backend's built-in logger)
|
|
33
|
+
* or by passing a custom `JobLogger` implementation.
|
|
34
|
+
*/
|
|
35
|
+
jobLogger;
|
|
36
|
+
/**
|
|
37
|
+
* Default logging behavior for job definitions that don't explicitly set `logging`.
|
|
38
|
+
* When `true` (default when logging is enabled), all jobs are logged.
|
|
39
|
+
* When `false`, only jobs with `logging: true` in their definition are logged.
|
|
40
|
+
*/
|
|
41
|
+
loggingDefault;
|
|
28
42
|
// Implementation (eslint-disable needed because overloads provide the public type safety)
|
|
29
43
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
44
|
on(event, listener) {
|
|
@@ -74,10 +88,32 @@ export class Agenda extends EventEmitter {
|
|
|
74
88
|
maxConcurrency: config.maxConcurrency || DefaultOptions.maxConcurrency,
|
|
75
89
|
defaultLockLimit: config.defaultLockLimit || DefaultOptions.defaultLockLimit,
|
|
76
90
|
lockLimit: config.lockLimit || DefaultOptions.lockLimit,
|
|
77
|
-
defaultLockLifetime: config.defaultLockLifetime || DefaultOptions.defaultLockLifetime
|
|
91
|
+
defaultLockLifetime: config.defaultLockLifetime || DefaultOptions.defaultLockLifetime,
|
|
92
|
+
removeOnComplete: config.removeOnComplete ?? DefaultOptions.removeOnComplete
|
|
78
93
|
};
|
|
79
94
|
this.forkedWorker = config.forkedWorker;
|
|
80
95
|
this.forkHelper = config.forkHelper;
|
|
96
|
+
// Initialize persistent job logger: disabled by default
|
|
97
|
+
if (config.logging === true) {
|
|
98
|
+
// Use backend's built-in logger, all jobs logged
|
|
99
|
+
this.jobLogger = config.backend.logger;
|
|
100
|
+
this.loggingDefault = true;
|
|
101
|
+
}
|
|
102
|
+
else if (config.logging && typeof config.logging === 'object' && 'log' in config.logging) {
|
|
103
|
+
// Passed a JobLogger instance directly — all jobs logged
|
|
104
|
+
this.jobLogger = config.logging;
|
|
105
|
+
this.loggingDefault = true;
|
|
106
|
+
}
|
|
107
|
+
else if (config.logging && typeof config.logging === 'object') {
|
|
108
|
+
// Options object: { logger?, default? }
|
|
109
|
+
const opts = config.logging;
|
|
110
|
+
this.jobLogger = opts.logger ?? config.backend.logger;
|
|
111
|
+
this.loggingDefault = opts.default ?? true;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Logging disabled (false / omitted)
|
|
115
|
+
this.loggingDefault = true;
|
|
116
|
+
}
|
|
81
117
|
// Store backend and get repository
|
|
82
118
|
this.backend = config.backend;
|
|
83
119
|
this.db = config.backend.repository;
|
|
@@ -231,6 +267,57 @@ export class Agenda extends EventEmitter {
|
|
|
231
267
|
hasNotificationChannel() {
|
|
232
268
|
return !!this.notificationChannel;
|
|
233
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Check if persistent job logging is enabled
|
|
272
|
+
*/
|
|
273
|
+
hasJobLogger() {
|
|
274
|
+
return !!this.jobLogger;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Log a job lifecycle event to the persistent job logger (fire-and-forget).
|
|
278
|
+
* Does nothing if no job logger is configured or if logging is disabled
|
|
279
|
+
* for the job definition (respects per-definition `logging` and the global `loggingDefault`).
|
|
280
|
+
* @internal
|
|
281
|
+
*/
|
|
282
|
+
logJobEvent(entry) {
|
|
283
|
+
if (!this.jobLogger)
|
|
284
|
+
return;
|
|
285
|
+
// Per-definition logging overrides the global default.
|
|
286
|
+
// If definition.logging is undefined, fall back to loggingDefault.
|
|
287
|
+
const definition = this.definitions[entry.jobName];
|
|
288
|
+
const enabled = definition?.logging ?? this.loggingDefault;
|
|
289
|
+
if (!enabled)
|
|
290
|
+
return;
|
|
291
|
+
this.jobLogger
|
|
292
|
+
.log({
|
|
293
|
+
...entry,
|
|
294
|
+
timestamp: new Date(),
|
|
295
|
+
agendaName: this.attrs.name || undefined
|
|
296
|
+
})
|
|
297
|
+
.catch(err => {
|
|
298
|
+
log('failed to write job log entry: %O', err);
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Query persistent job logs.
|
|
303
|
+
* Returns empty result if no job logger is configured.
|
|
304
|
+
*/
|
|
305
|
+
async getLogs(query) {
|
|
306
|
+
if (!this.jobLogger) {
|
|
307
|
+
return { entries: [], total: 0 };
|
|
308
|
+
}
|
|
309
|
+
return this.jobLogger.getLogs(query);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Clear persistent job logs matching the query.
|
|
313
|
+
* Returns 0 if no job logger is configured.
|
|
314
|
+
*/
|
|
315
|
+
async clearLogs(query) {
|
|
316
|
+
if (!this.jobLogger) {
|
|
317
|
+
return 0;
|
|
318
|
+
}
|
|
319
|
+
return this.jobLogger.clearLogs(query);
|
|
320
|
+
}
|
|
234
321
|
/**
|
|
235
322
|
* Publish a job notification to the notification channel
|
|
236
323
|
* @internal
|
|
@@ -257,6 +344,84 @@ export class Agenda extends EventEmitter {
|
|
|
257
344
|
this.emit('error', error);
|
|
258
345
|
}
|
|
259
346
|
}
|
|
347
|
+
/**
|
|
348
|
+
* Publish a job state notification to the notification channel.
|
|
349
|
+
* This enables bi-directional communication so that all subscribers
|
|
350
|
+
* can receive job lifecycle events (start, success, fail, complete, etc.)
|
|
351
|
+
* @internal
|
|
352
|
+
*/
|
|
353
|
+
publishJobStateNotification(job, type, extra) {
|
|
354
|
+
if (!this.notificationChannel ||
|
|
355
|
+
this.notificationChannel.state !== 'connected' ||
|
|
356
|
+
!this.notificationChannel.publishState) {
|
|
357
|
+
// Channel not configured, not connected, or doesn't support state notifications
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
const notification = {
|
|
361
|
+
type,
|
|
362
|
+
jobId: job.attrs._id,
|
|
363
|
+
jobName: job.attrs.name,
|
|
364
|
+
timestamp: new Date(),
|
|
365
|
+
source: this.attrs.name || undefined,
|
|
366
|
+
...extra
|
|
367
|
+
};
|
|
368
|
+
// fire+forget
|
|
369
|
+
this.notificationChannel
|
|
370
|
+
.publishState(notification)
|
|
371
|
+
.then(() => {
|
|
372
|
+
log('published job state notification [%s] for [%s:%s]', type, job.attrs.name, job.attrs._id);
|
|
373
|
+
})
|
|
374
|
+
.catch(error => {
|
|
375
|
+
log('failed to publish job state notification [%s] for [%s:%s]', type, job.attrs.name, job.attrs._id, error);
|
|
376
|
+
this.emit('error', error);
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Subscribe to state notifications and re-emit them as regular events.
|
|
381
|
+
* This allows `agenda.on('success:jobName', ...)` to work across processes.
|
|
382
|
+
* @internal
|
|
383
|
+
*/
|
|
384
|
+
subscribeToStateNotifications() {
|
|
385
|
+
if (!this.notificationChannel?.subscribeState) {
|
|
386
|
+
return () => { };
|
|
387
|
+
}
|
|
388
|
+
return this.notificationChannel.subscribeState(notification => {
|
|
389
|
+
// Skip events from our own instance to avoid double-firing
|
|
390
|
+
// (we already emit locally in Job.run())
|
|
391
|
+
// Handle both empty strings and undefined as "same source" when both are falsy
|
|
392
|
+
const notificationSource = notification.source || '';
|
|
393
|
+
const ourSource = this.attrs.name || '';
|
|
394
|
+
if (notificationSource === ourSource) {
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
log('received remote state notification [%s] for [%s:%s]', notification.type, notification.jobName, notification.jobId);
|
|
398
|
+
// Use nextTick to ensure local events are processed first
|
|
399
|
+
// This prevents race conditions where remote events arrive before local processing completes
|
|
400
|
+
process.nextTick(() => {
|
|
401
|
+
// Re-emit as regular events with remote=true flag
|
|
402
|
+
// For 'fail' events, the first argument is the error
|
|
403
|
+
if (notification.type === 'fail') {
|
|
404
|
+
this.emit('fail', notification.error, notification, true);
|
|
405
|
+
this.emit(`fail:${notification.jobName}`, notification.error, notification, true);
|
|
406
|
+
}
|
|
407
|
+
else if (notification.type === 'retry') {
|
|
408
|
+
// For 'retry' events, pass retry details as second argument
|
|
409
|
+
const retryDetails = {
|
|
410
|
+
attempt: notification.retryAttempt || 1,
|
|
411
|
+
delay: 0, // Not available in notification
|
|
412
|
+
nextRunAt: notification.retryAt || new Date(),
|
|
413
|
+
error: new Error(notification.error || 'Unknown error')
|
|
414
|
+
};
|
|
415
|
+
this.emit('retry', notification, retryDetails, true);
|
|
416
|
+
this.emit(`retry:${notification.jobName}`, notification, retryDetails, true);
|
|
417
|
+
}
|
|
418
|
+
else {
|
|
419
|
+
this.emit(notification.type, notification, true);
|
|
420
|
+
this.emit(`${notification.type}:${notification.jobName}`, notification, true);
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
});
|
|
424
|
+
}
|
|
260
425
|
/**
|
|
261
426
|
* Query jobs with database-agnostic options.
|
|
262
427
|
* Returns jobs with computed states and supports filtering by state.
|
|
@@ -299,7 +464,9 @@ export class Agenda extends EventEmitter {
|
|
|
299
464
|
lockLimit: options?.lockLimit || this.attrs.defaultLockLimit,
|
|
300
465
|
priority: parsePriority(options?.priority),
|
|
301
466
|
lockLifetime: options?.lockLifetime || this.attrs.defaultLockLifetime,
|
|
302
|
-
backoff: options?.backoff
|
|
467
|
+
backoff: options?.backoff,
|
|
468
|
+
removeOnComplete: options?.removeOnComplete ?? this.attrs.removeOnComplete,
|
|
469
|
+
logging: options?.logging
|
|
303
470
|
};
|
|
304
471
|
log('job [%s] defined with following options: \n%O', name, this.definitions[name]);
|
|
305
472
|
}
|
|
@@ -425,9 +592,7 @@ export class Agenda extends EventEmitter {
|
|
|
425
592
|
log('Agenda.nowDebounced(%s, [Object], %O, %d)', name, uniqueKey, debounceMs);
|
|
426
593
|
try {
|
|
427
594
|
const job = this.create(name, data);
|
|
428
|
-
job.schedule(new Date())
|
|
429
|
-
.unique(uniqueKey)
|
|
430
|
-
.debounce(debounceMs, options);
|
|
595
|
+
job.schedule(new Date()).unique(uniqueKey).debounce(debounceMs, options);
|
|
431
596
|
await job.save();
|
|
432
597
|
return job;
|
|
433
598
|
}
|
|
@@ -451,6 +616,8 @@ export class Agenda extends EventEmitter {
|
|
|
451
616
|
if (this.notificationChannel) {
|
|
452
617
|
log('Agenda.start connecting notification channel');
|
|
453
618
|
await this.notificationChannel.connect();
|
|
619
|
+
// Subscribe to state notifications for cross-process event propagation
|
|
620
|
+
this.stateSubscriptionUnsubscribe = this.subscribeToStateNotifications();
|
|
454
621
|
}
|
|
455
622
|
this.jobProcessor = new JobProcessor(this, this.attrs.maxConcurrency, this.attrs.lockLimit, this.attrs.processEvery, this.notificationChannel);
|
|
456
623
|
}
|
|
@@ -473,6 +640,11 @@ export class Agenda extends EventEmitter {
|
|
|
473
640
|
log('about to unlock jobs with ids: %O', jobIds);
|
|
474
641
|
await this.db.unlockJobs(jobIds);
|
|
475
642
|
}
|
|
643
|
+
// Unsubscribe from state notifications
|
|
644
|
+
if (this.stateSubscriptionUnsubscribe) {
|
|
645
|
+
this.stateSubscriptionUnsubscribe();
|
|
646
|
+
this.stateSubscriptionUnsubscribe = undefined;
|
|
647
|
+
}
|
|
476
648
|
// Disconnect notification channel if configured (we always disconnect since we connected it in start)
|
|
477
649
|
if (this.notificationChannel) {
|
|
478
650
|
log('Agenda.stop disconnecting notification channel');
|
|
@@ -491,30 +663,56 @@ export class Agenda extends EventEmitter {
|
|
|
491
663
|
* Waits for all currently running jobs to finish before stopping.
|
|
492
664
|
* This allows for a graceful shutdown where jobs complete their work.
|
|
493
665
|
* Unlike stop(), this method waits for running jobs to complete instead of unlocking them.
|
|
494
|
-
*
|
|
495
|
-
*
|
|
496
|
-
*
|
|
666
|
+
*
|
|
667
|
+
* @param options - Drain options or timeout in milliseconds
|
|
668
|
+
* - `timeout`: Maximum time to wait for jobs to complete
|
|
669
|
+
* - `signal`: AbortSignal to cancel the drain operation
|
|
670
|
+
* - `closeConnection`: Whether to close the database connection (default: backend.ownsConnection)
|
|
671
|
+
* @returns DrainResult with completion statistics
|
|
672
|
+
*
|
|
673
|
+
* @example
|
|
674
|
+
* // Wait indefinitely for all jobs to complete
|
|
675
|
+
* await agenda.drain();
|
|
676
|
+
*
|
|
677
|
+
* @example
|
|
678
|
+
* // Wait up to 30 seconds
|
|
679
|
+
* const result = await agenda.drain(30000);
|
|
680
|
+
* if (result.timedOut) console.log(`${result.running} jobs still running`);
|
|
681
|
+
*
|
|
682
|
+
* @example
|
|
683
|
+
* // Use AbortSignal for external control
|
|
684
|
+
* const controller = new AbortController();
|
|
685
|
+
* setTimeout(() => controller.abort(), 30000);
|
|
686
|
+
* await agenda.drain({ signal: controller.signal });
|
|
497
687
|
*/
|
|
498
|
-
async drain(
|
|
688
|
+
async drain(options) {
|
|
499
689
|
if (!this.jobProcessor) {
|
|
500
690
|
log('Agenda.drain called, but agenda has never started!');
|
|
501
|
-
return;
|
|
691
|
+
return { completed: 0, running: 0, timedOut: false, aborted: false };
|
|
502
692
|
}
|
|
693
|
+
// Normalize options
|
|
694
|
+
const opts = typeof options === 'number' ? { timeout: options } : options ?? {};
|
|
503
695
|
log('Agenda.drain called, waiting for jobs to finish');
|
|
504
|
-
await this.jobProcessor.drain();
|
|
696
|
+
const result = await this.jobProcessor.drain(opts);
|
|
697
|
+
// Unsubscribe from state notifications
|
|
698
|
+
if (this.stateSubscriptionUnsubscribe) {
|
|
699
|
+
this.stateSubscriptionUnsubscribe();
|
|
700
|
+
this.stateSubscriptionUnsubscribe = undefined;
|
|
701
|
+
}
|
|
505
702
|
// Disconnect notification channel if configured (we always disconnect since we connected it in start)
|
|
506
703
|
if (this.notificationChannel) {
|
|
507
704
|
log('Agenda.drain disconnecting notification channel');
|
|
508
705
|
await this.notificationChannel.disconnect();
|
|
509
706
|
}
|
|
510
707
|
// Determine whether to close backend connection
|
|
511
|
-
const shouldClose = closeConnection ?? this.backend.ownsConnection ?? true;
|
|
708
|
+
const shouldClose = opts.closeConnection ?? this.backend.ownsConnection ?? true;
|
|
512
709
|
// Disconnect the backend
|
|
513
710
|
if (shouldClose) {
|
|
514
711
|
log('Agenda.drain disconnecting backend');
|
|
515
712
|
await this.backend.disconnect();
|
|
516
713
|
}
|
|
517
714
|
this.jobProcessor = undefined;
|
|
715
|
+
return result;
|
|
518
716
|
}
|
|
519
717
|
}
|
|
520
718
|
export * from './types/AgendaConfig.js';
|
|
@@ -527,7 +725,9 @@ export * from './types/JobRepository.js';
|
|
|
527
725
|
export * from './types/NotificationChannel.js';
|
|
528
726
|
export * from './types/AgendaBackend.js';
|
|
529
727
|
export * from './types/AgendaStatus.js';
|
|
728
|
+
export * from './types/DrainOptions.js';
|
|
530
729
|
export * from './notifications/index.js';
|
|
730
|
+
export * from './types/JobLogger.js';
|
|
531
731
|
export { applyAllDateConstraints, applyDateRangeConstraints, applySkipDays, shouldSkipDay, isWithinDateRange } from './utils/dateConstraints.js';
|
|
532
732
|
export * from './decorators/index.js';
|
|
533
733
|
export { backoffStrategies, constant, linear, exponential, combine, when } from './utils/backoff.js';
|
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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"}
|