@oneuptime/common 8.0.5547 → 8.0.5548
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.
|
@@ -36,6 +36,11 @@ export default class Queue {
|
|
|
36
36
|
}>
|
|
37
37
|
> = {};
|
|
38
38
|
|
|
39
|
+
// BullMQ rejects custom IDs containing colons, so normalize them early.
|
|
40
|
+
private static sanitizeJobId(jobId: string): string {
|
|
41
|
+
return jobId.replace(/:/g, "-");
|
|
42
|
+
}
|
|
43
|
+
|
|
39
44
|
private static async setupReconnectListener(
|
|
40
45
|
queue: BullQueue,
|
|
41
46
|
queueName: QueueName,
|
|
@@ -131,14 +136,17 @@ export default class Queue {
|
|
|
131
136
|
return;
|
|
132
137
|
}
|
|
133
138
|
|
|
134
|
-
const
|
|
139
|
+
const sanitizedJobId: string = this.sanitizeJobId(jobId.toString());
|
|
140
|
+
|
|
141
|
+
const job: Job | undefined =
|
|
142
|
+
await this.getQueue(queueName).getJob(sanitizedJobId);
|
|
135
143
|
|
|
136
144
|
if (job) {
|
|
137
145
|
await job.remove();
|
|
138
146
|
}
|
|
139
147
|
|
|
140
148
|
// remove existing repeatable job
|
|
141
|
-
await this.getQueue(queueName).removeRepeatableByKey(
|
|
149
|
+
await this.getQueue(queueName).removeRepeatableByKey(sanitizedJobId);
|
|
142
150
|
}
|
|
143
151
|
|
|
144
152
|
@CaptureSpan()
|
|
@@ -183,8 +191,10 @@ export default class Queue {
|
|
|
183
191
|
repeatableKey?: string | undefined;
|
|
184
192
|
},
|
|
185
193
|
): Promise<Job> {
|
|
194
|
+
const sanitizedJobId: string = this.sanitizeJobId(jobId.toString());
|
|
195
|
+
|
|
186
196
|
const optionsObject: JobsOptions = {
|
|
187
|
-
jobId:
|
|
197
|
+
jobId: sanitizedJobId,
|
|
188
198
|
};
|
|
189
199
|
|
|
190
200
|
if (options && options.scheduleAt) {
|
|
@@ -193,7 +203,8 @@ export default class Queue {
|
|
|
193
203
|
};
|
|
194
204
|
}
|
|
195
205
|
|
|
196
|
-
const job: Job | undefined =
|
|
206
|
+
const job: Job | undefined =
|
|
207
|
+
await this.getQueue(queueName).getJob(sanitizedJobId);
|
|
197
208
|
|
|
198
209
|
if (job) {
|
|
199
210
|
await job.remove();
|
|
@@ -211,7 +222,7 @@ export default class Queue {
|
|
|
211
222
|
if (!this.repeatableJobs[queueName]) {
|
|
212
223
|
this.repeatableJobs[queueName] = {};
|
|
213
224
|
}
|
|
214
|
-
this.repeatableJobs[queueName]![
|
|
225
|
+
this.repeatableJobs[queueName]![sanitizedJobId] = {
|
|
215
226
|
jobName,
|
|
216
227
|
data,
|
|
217
228
|
options: optionsObject,
|
|
@@ -26,6 +26,10 @@ export var QueueName;
|
|
|
26
26
|
QueueName["ProbeIngest"] = "ProbeIngest";
|
|
27
27
|
})(QueueName || (QueueName = {}));
|
|
28
28
|
class Queue {
|
|
29
|
+
// BullMQ rejects custom IDs containing colons, so normalize them early.
|
|
30
|
+
static sanitizeJobId(jobId) {
|
|
31
|
+
return jobId.replace(/:/g, "-");
|
|
32
|
+
}
|
|
29
33
|
static async setupReconnectListener(queue, queueName) {
|
|
30
34
|
const client = await queue.client;
|
|
31
35
|
client.on("ready", async () => {
|
|
@@ -97,12 +101,13 @@ class Queue {
|
|
|
97
101
|
if (!jobId) {
|
|
98
102
|
return;
|
|
99
103
|
}
|
|
100
|
-
const
|
|
104
|
+
const sanitizedJobId = this.sanitizeJobId(jobId.toString());
|
|
105
|
+
const job = await this.getQueue(queueName).getJob(sanitizedJobId);
|
|
101
106
|
if (job) {
|
|
102
107
|
await job.remove();
|
|
103
108
|
}
|
|
104
109
|
// remove existing repeatable job
|
|
105
|
-
await this.getQueue(queueName).removeRepeatableByKey(
|
|
110
|
+
await this.getQueue(queueName).removeRepeatableByKey(sanitizedJobId);
|
|
106
111
|
}
|
|
107
112
|
static getInspectorRoute() {
|
|
108
113
|
return "/worker/inspect/queue/:clusterKey";
|
|
@@ -121,15 +126,16 @@ class Queue {
|
|
|
121
126
|
return serverAdapter.getRouter();
|
|
122
127
|
}
|
|
123
128
|
static async addJob(queueName, jobId, jobName, data, options) {
|
|
129
|
+
const sanitizedJobId = this.sanitizeJobId(jobId.toString());
|
|
124
130
|
const optionsObject = {
|
|
125
|
-
jobId:
|
|
131
|
+
jobId: sanitizedJobId,
|
|
126
132
|
};
|
|
127
133
|
if (options && options.scheduleAt) {
|
|
128
134
|
optionsObject.repeat = {
|
|
129
135
|
pattern: options.scheduleAt,
|
|
130
136
|
};
|
|
131
137
|
}
|
|
132
|
-
const job = await this.getQueue(queueName).getJob(
|
|
138
|
+
const job = await this.getQueue(queueName).getJob(sanitizedJobId);
|
|
133
139
|
if (job) {
|
|
134
140
|
await job.remove();
|
|
135
141
|
}
|
|
@@ -142,7 +148,7 @@ class Queue {
|
|
|
142
148
|
if (!this.repeatableJobs[queueName]) {
|
|
143
149
|
this.repeatableJobs[queueName] = {};
|
|
144
150
|
}
|
|
145
|
-
this.repeatableJobs[queueName][
|
|
151
|
+
this.repeatableJobs[queueName][sanitizedJobId] = {
|
|
146
152
|
jobName,
|
|
147
153
|
data,
|
|
148
154
|
options: optionsObject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/Queue.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAoB,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,MAAM,CAAN,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,kCAAqB,CAAA;IACrB,8BAAiB,CAAA;IACjB,oCAAuB,CAAA;IACvB,0CAA6B,CAAA;IAC7B,4DAA+C,CAAA;IAC/C,wDAA2C,CAAA;IAC3C,wCAA2B,CAAA;AAC7B,CAAC,EARW,SAAS,KAAT,SAAS,QAQpB;AAKD,MAAqB,KAAK;
|
|
1
|
+
{"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/Queue.ts"],"names":[],"mappings":"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"}
|