bunqueue 1.5.0 → 1.6.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.
Files changed (45) hide show
  1. package/README.md +1 -1
  2. package/dist/application/dlqManager.d.ts +21 -4
  3. package/dist/application/dlqManager.d.ts.map +1 -1
  4. package/dist/application/dlqManager.js +167 -25
  5. package/dist/application/dlqManager.js.map +1 -1
  6. package/dist/application/queueManager.d.ts +18 -0
  7. package/dist/application/queueManager.d.ts.map +1 -1
  8. package/dist/application/queueManager.js +134 -0
  9. package/dist/application/queueManager.js.map +1 -1
  10. package/dist/cli/help.d.ts.map +1 -1
  11. package/dist/cli/help.js +7 -1
  12. package/dist/cli/help.js.map +1 -1
  13. package/dist/client/index.d.ts +1 -1
  14. package/dist/client/index.d.ts.map +1 -1
  15. package/dist/client/queue.d.ts +19 -1
  16. package/dist/client/queue.d.ts.map +1 -1
  17. package/dist/client/queue.js +87 -1
  18. package/dist/client/queue.js.map +1 -1
  19. package/dist/client/types.d.ts +71 -0
  20. package/dist/client/types.d.ts.map +1 -1
  21. package/dist/client/types.js +22 -0
  22. package/dist/client/types.js.map +1 -1
  23. package/dist/client/worker.d.ts +5 -0
  24. package/dist/client/worker.d.ts.map +1 -1
  25. package/dist/client/worker.js +30 -0
  26. package/dist/client/worker.js.map +1 -1
  27. package/dist/domain/queue/shard.d.ts +32 -7
  28. package/dist/domain/queue/shard.d.ts.map +1 -1
  29. package/dist/domain/queue/shard.js +102 -8
  30. package/dist/domain/queue/shard.js.map +1 -1
  31. package/dist/domain/types/dlq.d.ts +120 -0
  32. package/dist/domain/types/dlq.d.ts.map +1 -0
  33. package/dist/domain/types/dlq.js +77 -0
  34. package/dist/domain/types/dlq.js.map +1 -0
  35. package/dist/domain/types/stall.d.ts +49 -0
  36. package/dist/domain/types/stall.d.ts.map +1 -0
  37. package/dist/domain/types/stall.js +77 -0
  38. package/dist/domain/types/stall.js.map +1 -0
  39. package/dist/main.js +4 -9
  40. package/dist/main.js.map +1 -1
  41. package/dist/shared/version.d.ts +2 -2
  42. package/dist/shared/version.d.ts.map +1 -1
  43. package/dist/shared/version.js +27 -2
  44. package/dist/shared/version.js.map +1 -1
  45. package/package.json +10 -7
@@ -4,6 +4,9 @@
4
4
  */
5
5
  import type { Job, JobId } from '../types/job';
6
6
  import { type QueueState, RateLimiter, ConcurrencyLimiter } from '../types/queue';
7
+ import type { DlqEntry, DlqConfig, DlqFilter } from '../types/dlq';
8
+ import { FailureReason } from '../types/dlq';
9
+ import type { StallConfig } from '../types/stall';
7
10
  import { IndexedPriorityQueue } from './priorityQueue';
8
11
  /** Shard statistics counters for O(1) stats retrieval */
9
12
  export interface ShardStats {
@@ -25,8 +28,12 @@ export interface ShardStats {
25
28
  export declare class Shard {
26
29
  /** Priority queues by queue name */
27
30
  readonly queues: Map<string, IndexedPriorityQueue>;
28
- /** Dead letter queue by queue name */
29
- readonly dlq: Map<string, Job[]>;
31
+ /** Dead letter queue by queue name - now with full metadata */
32
+ readonly dlq: Map<string, DlqEntry[]>;
33
+ /** DLQ configuration per queue */
34
+ readonly dlqConfig: Map<string, DlqConfig>;
35
+ /** Stall configuration per queue */
36
+ readonly stallConfig: Map<string, StallConfig>;
30
37
  /** Running counters for O(1) stats - updated on every operation */
31
38
  private readonly stats;
32
39
  /** Set of delayed job IDs for tracking when they become ready */
@@ -120,12 +127,30 @@ export declare class Shard {
120
127
  * Get jobs waiting for a specific dependency - O(1)
121
128
  */
122
129
  getJobsWaitingFor(depId: JobId): Set<JobId> | undefined;
123
- /** Add job to DLQ */
124
- addToDlq(job: Job): void;
125
- /** Get DLQ jobs */
130
+ /** Get DLQ config for queue */
131
+ getDlqConfig(queue: string): DlqConfig;
132
+ /** Set DLQ config for queue */
133
+ setDlqConfig(queue: string, config: Partial<DlqConfig>): void;
134
+ /** Get stall config for queue */
135
+ getStallConfig(queue: string): StallConfig;
136
+ /** Set stall config for queue */
137
+ setStallConfig(queue: string, config: Partial<StallConfig>): void;
138
+ /** Add job to DLQ with full metadata */
139
+ addToDlq(job: Job, reason?: FailureReason, error?: string | null): DlqEntry;
140
+ /** Get DLQ entries (raw) */
141
+ getDlqEntries(queue: string): DlqEntry[];
142
+ /** Get DLQ jobs (for backward compatibility) */
126
143
  getDlq(queue: string, count?: number): Job[];
127
- /** Remove job from DLQ */
128
- removeFromDlq(queue: string, jobId: JobId): Job | null;
144
+ /** Get DLQ entries with filter */
145
+ getDlqFiltered(queue: string, filter: DlqFilter): DlqEntry[];
146
+ /** Remove entry from DLQ by job ID */
147
+ removeFromDlq(queue: string, jobId: JobId): DlqEntry | null;
148
+ /** Get entries ready for auto-retry */
149
+ getAutoRetryEntries(queue: string, now?: number): DlqEntry[];
150
+ /** Get expired entries for cleanup */
151
+ getExpiredEntries(queue: string, now?: number): DlqEntry[];
152
+ /** Remove expired entries */
153
+ purgeExpired(queue: string, now?: number): number;
129
154
  /** Clear DLQ for queue */
130
155
  clearDlq(queue: string): number;
131
156
  /** Get waiting job count for queue */
@@ -1 +1 @@
1
- {"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@
3
3
  * Each shard manages multiple queues and their state
4
4
  */
5
5
  import { createQueueState, RateLimiter, ConcurrencyLimiter } from '../types/queue';
6
+ import { DEFAULT_DLQ_CONFIG, createDlqEntry, isDlqEntryExpired, canAutoRetry, } from '../types/dlq';
7
+ import { DEFAULT_STALL_CONFIG } from '../types/stall';
6
8
  import { IndexedPriorityQueue } from './priorityQueue';
7
9
  import { SkipList } from '../../shared/skipList';
8
10
  import { MinHeap } from '../../shared/minHeap';
@@ -17,8 +19,12 @@ import { MinHeap } from '../../shared/minHeap';
17
19
  export class Shard {
18
20
  /** Priority queues by queue name */
19
21
  queues = new Map();
20
- /** Dead letter queue by queue name */
22
+ /** Dead letter queue by queue name - now with full metadata */
21
23
  dlq = new Map();
24
+ /** DLQ configuration per queue */
25
+ dlqConfig = new Map();
26
+ /** Stall configuration per queue */
27
+ stallConfig = new Map();
22
28
  /** Running counters for O(1) stats - updated on every operation */
23
29
  stats = {
24
30
  queuedJobs: 0,
@@ -254,34 +260,122 @@ export class Shard {
254
260
  return this.dependencyIndex.get(depId);
255
261
  }
256
262
  // ============ DLQ Operations ============
257
- /** Add job to DLQ */
258
- addToDlq(job) {
263
+ /** Get DLQ config for queue */
264
+ getDlqConfig(queue) {
265
+ return this.dlqConfig.get(queue) ?? DEFAULT_DLQ_CONFIG;
266
+ }
267
+ /** Set DLQ config for queue */
268
+ setDlqConfig(queue, config) {
269
+ const current = this.getDlqConfig(queue);
270
+ this.dlqConfig.set(queue, { ...current, ...config });
271
+ }
272
+ /** Get stall config for queue */
273
+ getStallConfig(queue) {
274
+ return this.stallConfig.get(queue) ?? DEFAULT_STALL_CONFIG;
275
+ }
276
+ /** Set stall config for queue */
277
+ setStallConfig(queue, config) {
278
+ const current = this.getStallConfig(queue);
279
+ this.stallConfig.set(queue, { ...current, ...config });
280
+ }
281
+ /** Add job to DLQ with full metadata */
282
+ addToDlq(job, reason = "unknown" /* FailureReason.Unknown */, error = null) {
259
283
  let dlq = this.dlq.get(job.queue);
260
284
  if (!dlq) {
261
285
  dlq = [];
262
286
  this.dlq.set(job.queue, dlq);
263
287
  }
264
- dlq.push(job);
288
+ const config = this.getDlqConfig(job.queue);
289
+ const entry = createDlqEntry(job, reason, error, config);
290
+ // Enforce max entries
291
+ while (dlq.length >= config.maxEntries) {
292
+ dlq.shift(); // Remove oldest
293
+ this.decrementDlq();
294
+ }
295
+ dlq.push(entry);
265
296
  this.incrementDlq();
297
+ return entry;
298
+ }
299
+ /** Get DLQ entries (raw) */
300
+ getDlqEntries(queue) {
301
+ return this.dlq.get(queue) ?? [];
266
302
  }
267
- /** Get DLQ jobs */
303
+ /** Get DLQ jobs (for backward compatibility) */
268
304
  getDlq(queue, count) {
269
305
  const dlq = this.dlq.get(queue);
270
306
  if (!dlq)
271
307
  return [];
272
- return count ? dlq.slice(0, count) : [...dlq];
308
+ const entries = count ? dlq.slice(0, count) : dlq;
309
+ return entries.map((e) => e.job);
310
+ }
311
+ /** Get DLQ entries with filter */
312
+ getDlqFiltered(queue, filter) {
313
+ const dlq = this.dlq.get(queue);
314
+ if (!dlq)
315
+ return [];
316
+ const now = Date.now();
317
+ let result = dlq.filter((entry) => {
318
+ if (filter.reason && entry.reason !== filter.reason)
319
+ return false;
320
+ if (filter.olderThan && entry.enteredAt >= filter.olderThan)
321
+ return false;
322
+ if (filter.newerThan && entry.enteredAt <= filter.newerThan)
323
+ return false;
324
+ if (filter.retriable && !canAutoRetry(entry, this.getDlqConfig(queue), now))
325
+ return false;
326
+ if (filter.expired && !isDlqEntryExpired(entry, now))
327
+ return false;
328
+ return true;
329
+ });
330
+ if (filter.offset) {
331
+ result = result.slice(filter.offset);
332
+ }
333
+ if (filter.limit) {
334
+ result = result.slice(0, filter.limit);
335
+ }
336
+ return result;
273
337
  }
274
- /** Remove job from DLQ */
338
+ /** Remove entry from DLQ by job ID */
275
339
  removeFromDlq(queue, jobId) {
276
340
  const dlq = this.dlq.get(queue);
277
341
  if (!dlq)
278
342
  return null;
279
- const idx = dlq.findIndex((j) => j.id === jobId);
343
+ const idx = dlq.findIndex((e) => e.job.id === jobId);
280
344
  if (idx === -1)
281
345
  return null;
282
346
  this.decrementDlq();
283
347
  return dlq.splice(idx, 1)[0];
284
348
  }
349
+ /** Get entries ready for auto-retry */
350
+ getAutoRetryEntries(queue, now = Date.now()) {
351
+ const dlq = this.dlq.get(queue);
352
+ if (!dlq)
353
+ return [];
354
+ const config = this.getDlqConfig(queue);
355
+ return dlq.filter((entry) => canAutoRetry(entry, config, now));
356
+ }
357
+ /** Get expired entries for cleanup */
358
+ getExpiredEntries(queue, now = Date.now()) {
359
+ const dlq = this.dlq.get(queue);
360
+ if (!dlq)
361
+ return [];
362
+ return dlq.filter((entry) => isDlqEntryExpired(entry, now));
363
+ }
364
+ /** Remove expired entries */
365
+ purgeExpired(queue, now = Date.now()) {
366
+ const dlq = this.dlq.get(queue);
367
+ if (!dlq)
368
+ return 0;
369
+ const before = dlq.length;
370
+ const remaining = dlq.filter((entry) => !isDlqEntryExpired(entry, now));
371
+ if (remaining.length < before) {
372
+ this.dlq.set(queue, remaining);
373
+ const removed = before - remaining.length;
374
+ this.decrementDlq(removed);
375
+ return removed;
376
+ }
377
+ return 0;
378
+ }
285
379
  /** Clear DLQ for queue */
286
380
  clearDlq(queue) {
287
381
  const dlq = this.dlq.get(queue);
@@ -1 +1 @@
1
- {"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Dead Letter Queue Types
3
+ * Enhanced DLQ with metadata, auto-retry, and lifecycle management
4
+ */
5
+ import type { Job } from './job';
6
+ /** Failure reason categories */
7
+ export declare const enum FailureReason {
8
+ /** Job explicitly failed via fail() call */
9
+ ExplicitFail = "explicit_fail",
10
+ /** Job exceeded max attempts */
11
+ MaxAttemptsExceeded = "max_attempts_exceeded",
12
+ /** Job timed out during processing */
13
+ Timeout = "timeout",
14
+ /** Job stalled (no heartbeat) */
15
+ Stalled = "stalled",
16
+ /** Job TTL expired */
17
+ TtlExpired = "ttl_expired",
18
+ /** Worker crashed/disconnected */
19
+ WorkerLost = "worker_lost",
20
+ /** Unknown/other reason */
21
+ Unknown = "unknown"
22
+ }
23
+ /** Single attempt record */
24
+ export interface AttemptRecord {
25
+ /** Attempt number (1-based) */
26
+ readonly attempt: number;
27
+ /** When this attempt started */
28
+ readonly startedAt: number;
29
+ /** When this attempt failed */
30
+ readonly failedAt: number;
31
+ /** Failure reason for this attempt */
32
+ readonly reason: FailureReason;
33
+ /** Error message if any */
34
+ readonly error: string | null;
35
+ /** Duration of this attempt in ms */
36
+ readonly duration: number;
37
+ }
38
+ /** DLQ Entry with full metadata */
39
+ export interface DlqEntry {
40
+ /** Original job */
41
+ readonly job: Job;
42
+ /** When first moved to DLQ */
43
+ readonly enteredAt: number;
44
+ /** Last failure reason */
45
+ readonly reason: FailureReason;
46
+ /** Last error message */
47
+ readonly error: string | null;
48
+ /** Full attempt history */
49
+ readonly attempts: AttemptRecord[];
50
+ /** Number of times retried from DLQ */
51
+ retryCount: number;
52
+ /** Last retry attempt from DLQ */
53
+ lastRetryAt: number | null;
54
+ /** Next scheduled auto-retry (null = no auto-retry) */
55
+ nextRetryAt: number | null;
56
+ /** Expires at (for auto-purge) */
57
+ readonly expiresAt: number | null;
58
+ }
59
+ /** DLQ configuration per queue */
60
+ export interface DlqConfig {
61
+ /** Enable auto-retry from DLQ */
62
+ autoRetry: boolean;
63
+ /** Auto-retry interval in ms (default: 1 hour) */
64
+ autoRetryInterval: number;
65
+ /** Max auto-retries before giving up (default: 3) */
66
+ maxAutoRetries: number;
67
+ /** Max age in ms before auto-purge (default: 7 days, null = never) */
68
+ maxAge: number | null;
69
+ /** Max entries per queue (default: 10000) */
70
+ maxEntries: number;
71
+ }
72
+ /** Default DLQ configuration */
73
+ export declare const DEFAULT_DLQ_CONFIG: DlqConfig;
74
+ /** Create a DLQ entry from a failed job */
75
+ export declare function createDlqEntry(job: Job, reason: FailureReason, error: string | null, config?: DlqConfig): DlqEntry;
76
+ /** Add attempt record to existing DLQ entry */
77
+ export declare function addAttemptRecord(entry: DlqEntry, reason: FailureReason, error: string | null): void;
78
+ /** Check if DLQ entry is expired */
79
+ export declare function isDlqEntryExpired(entry: DlqEntry, now?: number): boolean;
80
+ /** Check if DLQ entry can be auto-retried */
81
+ export declare function canAutoRetry(entry: DlqEntry, config: DlqConfig, now?: number): boolean;
82
+ /** Schedule next auto-retry */
83
+ export declare function scheduleNextRetry(entry: DlqEntry, config: DlqConfig): void;
84
+ /** DLQ filter options */
85
+ export interface DlqFilter {
86
+ /** Filter by failure reason */
87
+ reason?: FailureReason;
88
+ /** Filter by queue */
89
+ queue?: string;
90
+ /** Only entries older than this timestamp */
91
+ olderThan?: number;
92
+ /** Only entries newer than this timestamp */
93
+ newerThan?: number;
94
+ /** Only entries that can be retried */
95
+ retriable?: boolean;
96
+ /** Only entries that are expired */
97
+ expired?: boolean;
98
+ /** Limit results */
99
+ limit?: number;
100
+ /** Offset for pagination */
101
+ offset?: number;
102
+ }
103
+ /** DLQ statistics */
104
+ export interface DlqStats {
105
+ /** Total entries */
106
+ total: number;
107
+ /** Entries by reason */
108
+ byReason: Record<FailureReason, number>;
109
+ /** Entries by queue */
110
+ byQueue: Record<string, number>;
111
+ /** Entries awaiting auto-retry */
112
+ pendingRetry: number;
113
+ /** Expired entries (awaiting cleanup) */
114
+ expired: number;
115
+ /** Oldest entry timestamp */
116
+ oldestEntry: number | null;
117
+ /** Newest entry timestamp */
118
+ newestEntry: number | null;
119
+ }
120
+ //# sourceMappingURL=dlq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlq.d.ts","sourceRoot":"","sources":["../../../src/domain/types/dlq.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Dead Letter Queue Types
3
+ * Enhanced DLQ with metadata, auto-retry, and lifecycle management
4
+ */
5
+ /** Default DLQ configuration */
6
+ export const DEFAULT_DLQ_CONFIG = {
7
+ autoRetry: false,
8
+ autoRetryInterval: 60 * 60 * 1000, // 1 hour
9
+ maxAutoRetries: 3,
10
+ maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days
11
+ maxEntries: 10000,
12
+ };
13
+ /** Create a DLQ entry from a failed job */
14
+ export function createDlqEntry(job, reason, error, config = DEFAULT_DLQ_CONFIG) {
15
+ const now = Date.now();
16
+ const attemptRecord = {
17
+ attempt: job.attempts,
18
+ startedAt: job.startedAt ?? job.createdAt,
19
+ failedAt: now,
20
+ reason,
21
+ error,
22
+ duration: job.startedAt ? now - job.startedAt : 0,
23
+ };
24
+ return {
25
+ job,
26
+ enteredAt: now,
27
+ reason,
28
+ error,
29
+ attempts: [attemptRecord],
30
+ retryCount: 0,
31
+ lastRetryAt: null,
32
+ nextRetryAt: config.autoRetry ? now + config.autoRetryInterval : null,
33
+ expiresAt: config.maxAge ? now + config.maxAge : null,
34
+ };
35
+ }
36
+ /** Add attempt record to existing DLQ entry */
37
+ export function addAttemptRecord(entry, reason, error) {
38
+ const job = entry.job;
39
+ const now = Date.now();
40
+ entry.attempts.push({
41
+ attempt: job.attempts,
42
+ startedAt: job.startedAt ?? now,
43
+ failedAt: now,
44
+ reason,
45
+ error,
46
+ duration: job.startedAt ? now - job.startedAt : 0,
47
+ });
48
+ }
49
+ /** Check if DLQ entry is expired */
50
+ export function isDlqEntryExpired(entry, now = Date.now()) {
51
+ return entry.expiresAt !== null && now >= entry.expiresAt;
52
+ }
53
+ /** Check if DLQ entry can be auto-retried */
54
+ export function canAutoRetry(entry, config, now = Date.now()) {
55
+ if (!config.autoRetry)
56
+ return false;
57
+ if (entry.retryCount >= config.maxAutoRetries)
58
+ return false;
59
+ if (entry.nextRetryAt === null)
60
+ return false;
61
+ return now >= entry.nextRetryAt;
62
+ }
63
+ /** Schedule next auto-retry */
64
+ export function scheduleNextRetry(entry, config) {
65
+ const now = Date.now();
66
+ entry.retryCount++;
67
+ entry.lastRetryAt = now;
68
+ if (entry.retryCount < config.maxAutoRetries) {
69
+ // Exponential backoff for DLQ retries
70
+ const backoffMultiplier = Math.pow(2, entry.retryCount - 1);
71
+ entry.nextRetryAt = now + config.autoRetryInterval * backoffMultiplier;
72
+ }
73
+ else {
74
+ entry.nextRetryAt = null; // No more retries
75
+ }
76
+ }
77
+ //# sourceMappingURL=dlq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlq.js","sourceRoot":"","sources":["../../../src/domain/types/dlq.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Stall Detection Types
3
+ * Configuration and handling for stalled jobs
4
+ */
5
+ import type { Job } from './job';
6
+ /** Stall detection configuration per queue */
7
+ export interface StallConfig {
8
+ /** Enable stall detection (default: true) */
9
+ enabled: boolean;
10
+ /** Stall timeout in ms - job is stalled if no heartbeat (default: 30s) */
11
+ stallInterval: number;
12
+ /** Max stalls before moving to DLQ (default: 3) */
13
+ maxStalls: number;
14
+ /** Grace period after job start before stall detection (default: 5s) */
15
+ gracePeriod: number;
16
+ }
17
+ /** Default stall configuration */
18
+ export declare const DEFAULT_STALL_CONFIG: StallConfig;
19
+ /** Stall check result */
20
+ export interface StallCheckResult {
21
+ /** Is the job stalled? */
22
+ isStalled: boolean;
23
+ /** Time since last heartbeat in ms */
24
+ stalledFor: number;
25
+ /** Should move to DLQ? (exceeded max stalls) */
26
+ shouldMoveToDlq: boolean;
27
+ /** Stall count after this check */
28
+ newStallCount: number;
29
+ }
30
+ /** Check if a job is stalled */
31
+ export declare function checkStall(job: Job, config?: StallConfig, now?: number): StallCheckResult;
32
+ /** Stalled job action */
33
+ export declare const enum StallAction {
34
+ /** Retry the job */
35
+ Retry = "retry",
36
+ /** Move to DLQ */
37
+ MoveToDlq = "move_to_dlq",
38
+ /** Keep active (still within grace) */
39
+ Keep = "keep"
40
+ }
41
+ /** Determine action for stalled job */
42
+ export declare function getStallAction(job: Job, config?: StallConfig, now?: number): StallAction;
43
+ /** Update job heartbeat */
44
+ export declare function updateHeartbeat(job: Job, now?: number): void;
45
+ /** Reset stall count (after successful retry) */
46
+ export declare function resetStallCount(job: Job): void;
47
+ /** Increment stall count */
48
+ export declare function incrementStallCount(job: Job): number;
49
+ //# sourceMappingURL=stall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stall.d.ts","sourceRoot":"","sources":["../../../src/domain/types/stall.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC,8CAA8C;AAC9C,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,EAAE,WAKlC,CAAC;AAEF,yBAAyB;AACzB,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,eAAe,EAAE,OAAO,CAAC;IACzB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,gCAAgC;AAChC,wBAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,MAAM,GAAE,WAAkC,EAC1C,GAAG,GAAE,MAAmB,GACvB,gBAAgB,CA4ClB;AAED,yBAAyB;AACzB,0BAAkB,WAAW;IAC3B,oBAAoB;IACpB,KAAK,UAAU;IACf,kBAAkB;IAClB,SAAS,gBAAgB;IACzB,uCAAuC;IACvC,IAAI,SAAS;CACd;AAED,uCAAuC;AACvC,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,MAAM,GAAE,WAAkC,EAC1C,GAAG,GAAE,MAAmB,GACvB,WAAW,CAYb;AAED,2BAA2B;AAC3B,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAExE;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAE9C;AAED,4BAA4B;AAC5B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAGpD"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Stall Detection Types
3
+ * Configuration and handling for stalled jobs
4
+ */
5
+ /** Default stall configuration */
6
+ export const DEFAULT_STALL_CONFIG = {
7
+ enabled: true,
8
+ stallInterval: 30_000, // 30 seconds
9
+ maxStalls: 3,
10
+ gracePeriod: 5_000, // 5 seconds
11
+ };
12
+ /** Check if a job is stalled */
13
+ export function checkStall(job, config = DEFAULT_STALL_CONFIG, now = Date.now()) {
14
+ // Not processing = not stalled
15
+ if (job.startedAt === null) {
16
+ return {
17
+ isStalled: false,
18
+ stalledFor: 0,
19
+ shouldMoveToDlq: false,
20
+ newStallCount: job.stallCount,
21
+ };
22
+ }
23
+ // Grace period - don't check immediately after start
24
+ if (now - job.startedAt < config.gracePeriod) {
25
+ return {
26
+ isStalled: false,
27
+ stalledFor: 0,
28
+ shouldMoveToDlq: false,
29
+ newStallCount: job.stallCount,
30
+ };
31
+ }
32
+ // Use job-specific or default stall timeout
33
+ const stallInterval = job.stallTimeout ?? config.stallInterval;
34
+ const stalledFor = now - job.lastHeartbeat;
35
+ const isStalled = stalledFor > stallInterval;
36
+ if (!isStalled) {
37
+ return {
38
+ isStalled: false,
39
+ stalledFor,
40
+ shouldMoveToDlq: false,
41
+ newStallCount: job.stallCount,
42
+ };
43
+ }
44
+ const newStallCount = job.stallCount + 1;
45
+ const shouldMoveToDlq = newStallCount >= config.maxStalls;
46
+ return {
47
+ isStalled: true,
48
+ stalledFor,
49
+ shouldMoveToDlq,
50
+ newStallCount,
51
+ };
52
+ }
53
+ /** Determine action for stalled job */
54
+ export function getStallAction(job, config = DEFAULT_STALL_CONFIG, now = Date.now()) {
55
+ const result = checkStall(job, config, now);
56
+ if (!result.isStalled) {
57
+ return "keep" /* StallAction.Keep */;
58
+ }
59
+ if (result.shouldMoveToDlq) {
60
+ return "move_to_dlq" /* StallAction.MoveToDlq */;
61
+ }
62
+ return "retry" /* StallAction.Retry */;
63
+ }
64
+ /** Update job heartbeat */
65
+ export function updateHeartbeat(job, now = Date.now()) {
66
+ job.lastHeartbeat = now;
67
+ }
68
+ /** Reset stall count (after successful retry) */
69
+ export function resetStallCount(job) {
70
+ job.stallCount = 0;
71
+ }
72
+ /** Increment stall count */
73
+ export function incrementStallCount(job) {
74
+ job.stallCount++;
75
+ return job.stallCount;
76
+ }
77
+ //# sourceMappingURL=stall.js.map