@anishhs/retryq 1.0.0 → 1.1.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 +735 -169
- package/dist/index.d.ts +14 -5
- package/dist/index.js +174 -46
- package/dist/index.js.map +1 -1
- package/package.json +7 -3
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,11 @@ export type RetryQJobOptions = {
|
|
|
6
6
|
jitter?: number;
|
|
7
7
|
label?: string;
|
|
8
8
|
priority?: number;
|
|
9
|
+
signal?: AbortSignal;
|
|
10
|
+
};
|
|
11
|
+
export type RetryQManagerConfig = {
|
|
12
|
+
maxConcurrent?: number;
|
|
13
|
+
maxHistorySize?: number;
|
|
9
14
|
};
|
|
10
15
|
export type JobState = "pending" | "running" | "completed" | "failed" | "cancelled";
|
|
11
16
|
export interface RetryQJob {
|
|
@@ -15,13 +20,14 @@ export interface RetryQJob {
|
|
|
15
20
|
priority: number;
|
|
16
21
|
retriesLeft: number;
|
|
17
22
|
promise: Promise<any>;
|
|
18
|
-
cancel: () => void;
|
|
19
|
-
fn: () => Promise<any>;
|
|
23
|
+
cancel: (force?: boolean) => void;
|
|
24
|
+
fn: (signal?: AbortSignal) => Promise<any>;
|
|
20
25
|
options: RetryQJobOptions;
|
|
21
26
|
createdAt: number;
|
|
22
27
|
startedAt?: number;
|
|
23
28
|
finishedAt?: number;
|
|
24
29
|
error?: any;
|
|
30
|
+
abortController?: AbortController;
|
|
25
31
|
}
|
|
26
32
|
export interface CancelableFunction {
|
|
27
33
|
(): void;
|
|
@@ -33,13 +39,16 @@ export declare class RetryQManager {
|
|
|
33
39
|
private failedJobs;
|
|
34
40
|
private completedJobs;
|
|
35
41
|
private maxConcurrent;
|
|
42
|
+
private maxHistorySize;
|
|
36
43
|
private registry;
|
|
37
|
-
constructor(
|
|
38
|
-
|
|
44
|
+
constructor(config?: RetryQManagerConfig | number);
|
|
45
|
+
private _evictOldest;
|
|
46
|
+
clearHistory(state?: JobState): void;
|
|
47
|
+
createJob(fn: (signal?: AbortSignal) => Promise<any>, options?: RetryQJobOptions): RetryQJob;
|
|
39
48
|
private _sortQueue;
|
|
40
49
|
private _processQueue;
|
|
41
50
|
private _runJob;
|
|
42
|
-
cancelJob(id: string): void;
|
|
51
|
+
cancelJob(id: string, force?: boolean): void;
|
|
43
52
|
listJobs(): {
|
|
44
53
|
pending: {
|
|
45
54
|
id: string;
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.RetryQManager = void 0;
|
|
13
|
-
// Custom ID generator
|
|
4
|
+
// Custom ID generator - improved collision resistance with counter + multiple random segments
|
|
5
|
+
let idCounter = 0;
|
|
14
6
|
function randomId() {
|
|
15
|
-
|
|
7
|
+
const timestamp = Date.now();
|
|
8
|
+
const counter = (idCounter++ % 10000).toString(36);
|
|
9
|
+
const random1 = Math.random().toString(36).slice(2, 11);
|
|
10
|
+
const random2 = Math.random().toString(36).slice(2, 11);
|
|
11
|
+
return `job-${timestamp}-${counter}-${random1}${random2}`;
|
|
16
12
|
}
|
|
17
13
|
function sleep(ms, cancelFn) {
|
|
18
14
|
return new Promise((resolve, reject) => {
|
|
@@ -26,32 +22,104 @@ function sleep(ms, cancelFn) {
|
|
|
26
22
|
});
|
|
27
23
|
}
|
|
28
24
|
class RetryQManager {
|
|
29
|
-
constructor(
|
|
25
|
+
constructor(config = {}) {
|
|
26
|
+
var _a, _b;
|
|
30
27
|
this.pendingQueue = [];
|
|
31
28
|
this.runningJobs = new Map();
|
|
32
29
|
this.failedJobs = new Map();
|
|
33
30
|
this.completedJobs = new Map();
|
|
34
31
|
this.registry = new Map();
|
|
35
|
-
|
|
32
|
+
// Support legacy number parameter for backwards compatibility
|
|
33
|
+
if (typeof config === "number") {
|
|
34
|
+
this.maxConcurrent = config;
|
|
35
|
+
this.maxHistorySize = 1000;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.maxConcurrent = (_a = config.maxConcurrent) !== null && _a !== void 0 ? _a : Infinity;
|
|
39
|
+
this.maxHistorySize = (_b = config.maxHistorySize) !== null && _b !== void 0 ? _b : 1000;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Evict oldest job from a map when it exceeds maxHistorySize
|
|
43
|
+
_evictOldest(map) {
|
|
44
|
+
if (map.size >= this.maxHistorySize) {
|
|
45
|
+
const oldest = map.keys().next().value;
|
|
46
|
+
if (oldest) {
|
|
47
|
+
map.delete(oldest);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Clear job history for a specific state or all states
|
|
52
|
+
clearHistory(state) {
|
|
53
|
+
if (!state || state === "failed") {
|
|
54
|
+
this.failedJobs.clear();
|
|
55
|
+
}
|
|
56
|
+
if (!state || state === "completed") {
|
|
57
|
+
this.completedJobs.clear();
|
|
58
|
+
}
|
|
36
59
|
}
|
|
37
60
|
createJob(fn, options = {}) {
|
|
38
|
-
var _a, _b;
|
|
61
|
+
var _a, _b, _c, _d, _e, _f;
|
|
62
|
+
// Input validation to prevent DoS and invalid configurations
|
|
63
|
+
const retries = (_a = options.retries) !== null && _a !== void 0 ? _a : 3;
|
|
64
|
+
const delay = (_b = options.delay) !== null && _b !== void 0 ? _b : 1000;
|
|
65
|
+
const backoff = (_c = options.backoff) !== null && _c !== void 0 ? _c : 2;
|
|
66
|
+
const maxTime = (_d = options.maxTime) !== null && _d !== void 0 ? _d : 30000; // Increased from 5000 to 30000 (30s)
|
|
67
|
+
const jitter = (_e = options.jitter) !== null && _e !== void 0 ? _e : 0.1;
|
|
68
|
+
const priority = (_f = options.priority) !== null && _f !== void 0 ? _f : 1;
|
|
69
|
+
// Validate inputs
|
|
70
|
+
if (retries < 0) {
|
|
71
|
+
throw new Error("retries must be >= 0");
|
|
72
|
+
}
|
|
73
|
+
if (retries > 100) {
|
|
74
|
+
throw new Error("retries cannot exceed 100 (DoS protection)");
|
|
75
|
+
}
|
|
76
|
+
if (delay < 0) {
|
|
77
|
+
throw new Error("delay must be >= 0");
|
|
78
|
+
}
|
|
79
|
+
if (backoff < 1) {
|
|
80
|
+
throw new Error("backoff must be >= 1");
|
|
81
|
+
}
|
|
82
|
+
if (maxTime <= 0) {
|
|
83
|
+
throw new Error("maxTime must be > 0");
|
|
84
|
+
}
|
|
85
|
+
if (jitter < 0 || jitter > 1) {
|
|
86
|
+
throw new Error("jitter must be between 0 and 1");
|
|
87
|
+
}
|
|
39
88
|
const id = randomId();
|
|
89
|
+
// Create internal AbortController for force cancellation
|
|
90
|
+
const abortController = new AbortController();
|
|
91
|
+
// If external signal provided, link it to internal controller
|
|
92
|
+
if (options.signal) {
|
|
93
|
+
const externalSignal = options.signal;
|
|
94
|
+
externalSignal.addEventListener('abort', () => {
|
|
95
|
+
if (!abortController.signal.aborted) {
|
|
96
|
+
abortController.abort(externalSignal.reason);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
40
100
|
const job = {
|
|
41
101
|
id,
|
|
42
102
|
label: options.label || id,
|
|
43
103
|
state: "pending",
|
|
44
|
-
priority
|
|
45
|
-
retriesLeft:
|
|
104
|
+
priority,
|
|
105
|
+
retriesLeft: retries + 1, // +1 for initial attempt (retries is number of RETRIES, not total attempts)
|
|
46
106
|
promise: Promise.resolve(), // placeholder
|
|
47
|
-
cancel: () => this.cancelJob(id),
|
|
107
|
+
cancel: (force) => this.cancelJob(id, force),
|
|
48
108
|
fn,
|
|
49
|
-
options,
|
|
109
|
+
options: Object.assign(Object.assign({}, options), { retries, delay, backoff, maxTime, jitter, priority }),
|
|
50
110
|
createdAt: Date.now(),
|
|
111
|
+
abortController,
|
|
51
112
|
};
|
|
52
|
-
|
|
113
|
+
// Add to pending queue BEFORE starting execution (fixes state inconsistency)
|
|
53
114
|
this.pendingQueue.push(job);
|
|
54
115
|
this._sortQueue();
|
|
116
|
+
// Start execution
|
|
117
|
+
job.promise = this._runJob(job);
|
|
118
|
+
// Add internal error handler to prevent unhandled promise rejections
|
|
119
|
+
job.promise.catch(() => {
|
|
120
|
+
// Errors are already handled in _runJob and stored in job.error
|
|
121
|
+
// This catch prevents unhandled rejection if consumer doesn't add .catch()
|
|
122
|
+
});
|
|
55
123
|
this._processQueue();
|
|
56
124
|
return job;
|
|
57
125
|
}
|
|
@@ -59,73 +127,133 @@ class RetryQManager {
|
|
|
59
127
|
this.pendingQueue.sort((a, b) => b.priority - a.priority);
|
|
60
128
|
}
|
|
61
129
|
_processQueue() {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
});
|
|
130
|
+
// Synchronous to prevent race conditions with concurrent calls
|
|
131
|
+
while (this.runningJobs.size < this.maxConcurrent &&
|
|
132
|
+
this.pendingQueue.length > 0) {
|
|
133
|
+
const job = this.pendingQueue.shift();
|
|
134
|
+
// job.promise already set in createJob
|
|
135
|
+
this.runningJobs.set(job.id, job);
|
|
136
|
+
}
|
|
70
137
|
}
|
|
71
|
-
_runJob(job) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
138
|
+
async _runJob(job) {
|
|
139
|
+
var _a, _b, _c, _d;
|
|
140
|
+
// Wait until _processQueue() has moved this job to runningJobs
|
|
141
|
+
// This enforces concurrency control
|
|
142
|
+
while (!this.runningJobs.has(job.id)) {
|
|
143
|
+
// Check if cancelled while waiting
|
|
144
|
+
if (job.state === "cancelled") {
|
|
145
|
+
throw job.error || new Error("Job cancelled");
|
|
146
|
+
}
|
|
147
|
+
// Check if external/internal signal already aborted
|
|
148
|
+
if ((_a = job.abortController) === null || _a === void 0 ? void 0 : _a.signal.aborted) {
|
|
149
|
+
job.state = "cancelled";
|
|
150
|
+
job.error = new Error("Job cancelled via abort signal");
|
|
151
|
+
throw job.error;
|
|
152
|
+
}
|
|
153
|
+
// Yield control to allow _processQueue() to run
|
|
154
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
155
|
+
}
|
|
156
|
+
job.state = "running";
|
|
157
|
+
job.startedAt = Date.now();
|
|
158
|
+
const cancelFn = () => { };
|
|
159
|
+
this.registry.set(job.id, cancelFn);
|
|
160
|
+
const { delay = 1000, backoff = 2, maxTime = 30000, jitter = 0.1, } = job.options;
|
|
161
|
+
let currentDelay = delay;
|
|
162
|
+
try {
|
|
80
163
|
while (job.retriesLeft > 0) {
|
|
81
|
-
|
|
164
|
+
// Check for cancellation at the start of each iteration
|
|
165
|
+
if (job.state === "cancelled") {
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
// Check if abort signal was triggered
|
|
169
|
+
if ((_b = job.abortController) === null || _b === void 0 ? void 0 : _b.signal.aborted) {
|
|
170
|
+
job.state = "cancelled";
|
|
171
|
+
job.error = new Error("Job cancelled via abort signal");
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
const elapsed = Date.now() - ((_c = job.startedAt) !== null && _c !== void 0 ? _c : Date.now());
|
|
82
175
|
if (elapsed >= maxTime)
|
|
83
176
|
break;
|
|
84
177
|
try {
|
|
85
|
-
|
|
178
|
+
// Pass abort signal to job function for force cancellation support
|
|
179
|
+
const signal = ((_d = job.abortController) === null || _d === void 0 ? void 0 : _d.signal) || new AbortController().signal;
|
|
180
|
+
const result = await job.fn(signal);
|
|
181
|
+
// Check if cancelled during execution
|
|
182
|
+
if (job.state === "cancelled") {
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
86
185
|
job.state = "completed";
|
|
87
186
|
job.finishedAt = Date.now();
|
|
187
|
+
// Evict oldest if history is full, then add new job
|
|
188
|
+
this._evictOldest(this.completedJobs);
|
|
88
189
|
this.completedJobs.set(job.id, job);
|
|
89
190
|
this.runningJobs.delete(job.id);
|
|
191
|
+
this.registry.delete(job.id); // Clean up registry
|
|
90
192
|
this._processQueue();
|
|
91
193
|
return result; // returns actual value
|
|
92
194
|
}
|
|
93
195
|
catch (err) {
|
|
94
196
|
job.retriesLeft--;
|
|
95
197
|
job.error = err;
|
|
198
|
+
// Check again after error in case cancelled during execution
|
|
199
|
+
if (job.state === "cancelled") {
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
96
202
|
if (job.retriesLeft <= 0)
|
|
97
203
|
break;
|
|
98
|
-
// jitter
|
|
204
|
+
// jitter with boundary checks
|
|
99
205
|
const jitterAmount = currentDelay * jitter;
|
|
100
206
|
let adjustedDelay = currentDelay + (Math.random() * 2 - 1) * jitterAmount;
|
|
101
|
-
adjustedDelay = Math.min(adjustedDelay, maxTime - elapsed);
|
|
207
|
+
adjustedDelay = Math.max(0, Math.min(adjustedDelay, maxTime - elapsed));
|
|
102
208
|
if (adjustedDelay > 0)
|
|
103
|
-
|
|
209
|
+
await sleep(adjustedDelay, cancelFn);
|
|
104
210
|
currentDelay *= backoff;
|
|
105
211
|
}
|
|
106
212
|
}
|
|
107
|
-
|
|
213
|
+
// Job failed after exhausting retries or exceeding maxTime
|
|
214
|
+
// Only set to failed if not already cancelled (can be set externally by cancelJob)
|
|
215
|
+
const currentState = job.state;
|
|
216
|
+
if (currentState !== "cancelled") {
|
|
108
217
|
job.state = "failed";
|
|
109
|
-
|
|
218
|
+
job.finishedAt = Date.now();
|
|
219
|
+
// Evict oldest if history is full, then add new job
|
|
220
|
+
this._evictOldest(this.failedJobs);
|
|
221
|
+
this.failedJobs.set(job.id, job);
|
|
222
|
+
}
|
|
223
|
+
// Cleanup (safe to call even if already done by cancelJob)
|
|
110
224
|
this.runningJobs.delete(job.id);
|
|
111
|
-
this.
|
|
225
|
+
this.registry.delete(job.id);
|
|
112
226
|
this._processQueue();
|
|
113
227
|
throw job.error || new Error("Job failed");
|
|
114
|
-
}
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
// Ensure cleanup happens even if there's an unexpected error
|
|
231
|
+
this.runningJobs.delete(job.id);
|
|
232
|
+
this.registry.delete(job.id);
|
|
233
|
+
throw err;
|
|
234
|
+
}
|
|
115
235
|
}
|
|
116
|
-
cancelJob(id) {
|
|
236
|
+
cancelJob(id, force = false) {
|
|
117
237
|
const job = this.runningJobs.get(id) || this.pendingQueue.find((j) => j.id === id);
|
|
118
238
|
if (!job)
|
|
119
239
|
return;
|
|
120
240
|
job.state = "cancelled";
|
|
121
241
|
job.error = new Error("Job cancelled");
|
|
122
242
|
job.finishedAt = Date.now();
|
|
243
|
+
// Force cancellation: abort the controller to interrupt in-progress execution
|
|
244
|
+
if (force && job.abortController && !job.abortController.signal.aborted) {
|
|
245
|
+
job.abortController.abort(new Error("Job forcefully cancelled"));
|
|
246
|
+
}
|
|
123
247
|
this.runningJobs.delete(id);
|
|
124
248
|
this.pendingQueue = this.pendingQueue.filter((j) => j.id !== id);
|
|
249
|
+
// Evict oldest if history is full, then add cancelled job
|
|
250
|
+
this._evictOldest(this.failedJobs);
|
|
125
251
|
this.failedJobs.set(id, job);
|
|
126
252
|
const cancelFn = this.registry.get(id);
|
|
127
253
|
if (cancelFn === null || cancelFn === void 0 ? void 0 : cancelFn.cancelSleep)
|
|
128
254
|
cancelFn.cancelSleep();
|
|
255
|
+
// Clean up registry
|
|
256
|
+
this.registry.delete(id);
|
|
129
257
|
}
|
|
130
258
|
listJobs() {
|
|
131
259
|
return {
|
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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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anishhs/retryq",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Production-ready retry queue with force cancellation, priorities, and exponential backoff",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
@@ -11,7 +11,11 @@
|
|
|
11
11
|
"prepare": "npm run build",
|
|
12
12
|
"build": "tsc",
|
|
13
13
|
"start": "node dist/index.js",
|
|
14
|
-
"dev": "ts-node src/index.ts"
|
|
14
|
+
"dev": "ts-node src/index.ts",
|
|
15
|
+
"test": "npm run test:verification && npm run test:force-cancel && npm run test:cancellation",
|
|
16
|
+
"test:verification": "node tests/verification.test.js",
|
|
17
|
+
"test:force-cancel": "node tests/force-cancellation.test.js",
|
|
18
|
+
"test:cancellation": "node tests/cancellation-proof.test.js"
|
|
15
19
|
},
|
|
16
20
|
"keywords": [
|
|
17
21
|
"retryq",
|