qdone 2.0.10-alpha → 2.0.11-alpha
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/commonjs/src/consumer.js
CHANGED
|
@@ -158,7 +158,7 @@ function processMessages(queues, callback, options) {
|
|
|
158
158
|
maxMessages = Math.min(10, jobsLeft);
|
|
159
159
|
listen(qname, qrl, maxMessages);
|
|
160
160
|
jobsLeft -= maxMessages;
|
|
161
|
-
if (
|
|
161
|
+
if (opt.verbose) {
|
|
162
162
|
console.error(chalk_1.default.blue('Listening on: '), qname);
|
|
163
163
|
}
|
|
164
164
|
debug({ listenedTo: { qname: qname, maxMessages: maxMessages, jobsLeft: jobsLeft } });
|
|
@@ -79,19 +79,19 @@ var JobExecutor = /** @class */ (function () {
|
|
|
79
79
|
*/
|
|
80
80
|
JobExecutor.prototype.maintainVisibility = function () {
|
|
81
81
|
return __awaiter(this, void 0, void 0, function () {
|
|
82
|
-
var now, jobsToExtendByQrl, jobsToDeleteByQrl, jobsToCleanup, _i, _a, job, jobRunTime, jobsToDelete, jobsToExtend, doubled, secondsUntilMax, secondsUntilKill, _b,
|
|
82
|
+
var now, jobsToExtendByQrl, jobsToDeleteByQrl, jobsToCleanup, _i, _a, job, jobRunTime, jobsToDelete, jobsToExtend, doubled, secondsUntilMax, secondsUntilKill, _b, _c, _d, _e, qrl, jobsToExtend, entries, messageId, job, entry, input, result, _f, _g, _h, _j, qrl, jobsToDelete, entries, messageId, job, entry, input, result;
|
|
83
83
|
var _this = this;
|
|
84
|
-
return __generator(this, function (
|
|
85
|
-
switch (
|
|
84
|
+
return __generator(this, function (_k) {
|
|
85
|
+
switch (_k.label) {
|
|
86
86
|
case 0:
|
|
87
87
|
debug('maintainVisibility', this.jobs);
|
|
88
88
|
now = new Date();
|
|
89
|
-
jobsToExtendByQrl =
|
|
90
|
-
jobsToDeleteByQrl =
|
|
89
|
+
jobsToExtendByQrl = {};
|
|
90
|
+
jobsToDeleteByQrl = {};
|
|
91
91
|
jobsToCleanup = new Set();
|
|
92
92
|
if (this.opt.verbose) {
|
|
93
93
|
console.error(chalk_1.default.blue('Stats: '), this.stats);
|
|
94
|
-
console.error(chalk_1.default.blue('Running: '), this.jobs.map(function (_a) {
|
|
94
|
+
console.error(chalk_1.default.blue('Running: '), this.jobs.filter(function (j) { return j.status === 'processing'; }).map(function (_a) {
|
|
95
95
|
var qname = _a.qname, message = _a.message;
|
|
96
96
|
return ({ qname: qname, payload: message.Body });
|
|
97
97
|
}));
|
|
@@ -101,17 +101,17 @@ var JobExecutor = /** @class */ (function () {
|
|
|
101
101
|
job = _a[_i];
|
|
102
102
|
jobRunTime = (now - job.start) / 1000;
|
|
103
103
|
if (job.status === 'complete') {
|
|
104
|
-
jobsToDelete = jobsToDeleteByQrl
|
|
104
|
+
jobsToDelete = jobsToDeleteByQrl[job.qrl] || [];
|
|
105
105
|
jobsToDelete.push(job);
|
|
106
|
-
jobsToDeleteByQrl
|
|
106
|
+
jobsToDeleteByQrl[job.qrl] = jobsToDelete;
|
|
107
107
|
}
|
|
108
108
|
else if (job.status === 'failed') {
|
|
109
109
|
jobsToCleanup.add(job);
|
|
110
110
|
}
|
|
111
111
|
else if (jobRunTime >= job.exendAtSecond) {
|
|
112
|
-
jobsToExtend = jobsToExtendByQrl
|
|
112
|
+
jobsToExtend = jobsToExtendByQrl[job.qrl] || [];
|
|
113
113
|
jobsToExtend.push(job);
|
|
114
|
-
jobsToExtendByQrl
|
|
114
|
+
jobsToExtendByQrl[job.qrl] = jobsToExtend;
|
|
115
115
|
doubled = job.visibilityTimeout * 2;
|
|
116
116
|
secondsUntilMax = maxJobSeconds - jobRunTime;
|
|
117
117
|
secondsUntilKill = this.opt.killAfter - jobRunTime;
|
|
@@ -120,12 +120,20 @@ var JobExecutor = /** @class */ (function () {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
debug('maintainVisibility', { jobsToDeleteByQrl: jobsToDeleteByQrl, jobsToExtendByQrl: jobsToExtendByQrl });
|
|
123
|
-
_b =
|
|
124
|
-
|
|
123
|
+
_b = jobsToExtendByQrl;
|
|
124
|
+
_c = [];
|
|
125
|
+
for (_d in _b)
|
|
126
|
+
_c.push(_d);
|
|
127
|
+
_e = 0;
|
|
128
|
+
_k.label = 1;
|
|
125
129
|
case 1:
|
|
126
|
-
if (!(
|
|
127
|
-
|
|
128
|
-
|
|
130
|
+
if (!(_e < _c.length)) return [3 /*break*/, 6];
|
|
131
|
+
_d = _c[_e];
|
|
132
|
+
if (!(_d in _b)) return [3 /*break*/, 5];
|
|
133
|
+
qrl = _d;
|
|
134
|
+
jobsToExtend = jobsToExtendByQrl[qrl];
|
|
135
|
+
debug({ qrl: qrl, jobsToExtend: jobsToExtend });
|
|
136
|
+
_k.label = 2;
|
|
129
137
|
case 2:
|
|
130
138
|
if (!jobsToExtend.length) return [3 /*break*/, 4];
|
|
131
139
|
entries = [];
|
|
@@ -143,7 +151,7 @@ var JobExecutor = /** @class */ (function () {
|
|
|
143
151
|
debug({ ChangeMessageVisibilityBatch: input });
|
|
144
152
|
return [4 /*yield*/, (0, sqs_js_1.getSQSClient)().send(new client_sqs_1.ChangeMessageVisibilityBatchCommand(input))];
|
|
145
153
|
case 3:
|
|
146
|
-
result =
|
|
154
|
+
result = _k.sent();
|
|
147
155
|
debug('ChangeMessageVisibilityBatch returned', result);
|
|
148
156
|
this.stats.sqsCalls++;
|
|
149
157
|
this.stats.timeoutsExtended += 10;
|
|
@@ -162,17 +170,24 @@ var JobExecutor = /** @class */ (function () {
|
|
|
162
170
|
})
|
|
163
171
|
}));
|
|
164
172
|
}
|
|
165
|
-
|
|
173
|
+
_k.label = 5;
|
|
166
174
|
case 5:
|
|
167
|
-
|
|
175
|
+
_e++;
|
|
168
176
|
return [3 /*break*/, 1];
|
|
169
177
|
case 6:
|
|
170
|
-
|
|
171
|
-
|
|
178
|
+
_f = jobsToDeleteByQrl;
|
|
179
|
+
_g = [];
|
|
180
|
+
for (_h in _f)
|
|
181
|
+
_g.push(_h);
|
|
182
|
+
_j = 0;
|
|
183
|
+
_k.label = 7;
|
|
172
184
|
case 7:
|
|
173
|
-
if (!(
|
|
174
|
-
|
|
175
|
-
_f
|
|
185
|
+
if (!(_j < _g.length)) return [3 /*break*/, 12];
|
|
186
|
+
_h = _g[_j];
|
|
187
|
+
if (!(_h in _f)) return [3 /*break*/, 11];
|
|
188
|
+
qrl = _h;
|
|
189
|
+
jobsToDelete = jobsToDeleteByQrl[qrl];
|
|
190
|
+
_k.label = 8;
|
|
176
191
|
case 8:
|
|
177
192
|
if (!jobsToDelete.length) return [3 /*break*/, 10];
|
|
178
193
|
entries = [];
|
|
@@ -190,7 +205,7 @@ var JobExecutor = /** @class */ (function () {
|
|
|
190
205
|
debug({ DeleteMessageBatch: input });
|
|
191
206
|
return [4 /*yield*/, (0, sqs_js_1.getSQSClient)().send(new client_sqs_1.DeleteMessageBatchCommand(input))];
|
|
192
207
|
case 9:
|
|
193
|
-
result =
|
|
208
|
+
result = _k.sent();
|
|
194
209
|
this.stats.sqsCalls++;
|
|
195
210
|
this.stats.jobsDeleted += 10;
|
|
196
211
|
debug('DeleteMessageBatch returned', result);
|
|
@@ -209,9 +224,9 @@ var JobExecutor = /** @class */ (function () {
|
|
|
209
224
|
})
|
|
210
225
|
}));
|
|
211
226
|
}
|
|
212
|
-
|
|
227
|
+
_k.label = 11;
|
|
213
228
|
case 11:
|
|
214
|
-
|
|
229
|
+
_j++;
|
|
215
230
|
return [3 /*break*/, 7];
|
|
216
231
|
case 12:
|
|
217
232
|
// Get rid of deleted and failed jobs
|
package/package.json
CHANGED
package/src/consumer.js
CHANGED
|
@@ -98,7 +98,7 @@ export async function processMessages (queues, callback, options) {
|
|
|
98
98
|
const maxMessages = Math.min(10, jobsLeft)
|
|
99
99
|
listen(qname, qrl, maxMessages)
|
|
100
100
|
jobsLeft -= maxMessages
|
|
101
|
-
if (
|
|
101
|
+
if (opt.verbose) {
|
|
102
102
|
console.error(chalk.blue('Listening on: '), qname)
|
|
103
103
|
}
|
|
104
104
|
debug({ listenedTo: { qname, maxMessages, jobsLeft } })
|
|
@@ -49,29 +49,29 @@ export class JobExecutor {
|
|
|
49
49
|
async maintainVisibility () {
|
|
50
50
|
debug('maintainVisibility', this.jobs)
|
|
51
51
|
const now = new Date()
|
|
52
|
-
const jobsToExtendByQrl =
|
|
53
|
-
const jobsToDeleteByQrl =
|
|
52
|
+
const jobsToExtendByQrl = {}
|
|
53
|
+
const jobsToDeleteByQrl = {}
|
|
54
54
|
const jobsToCleanup = new Set()
|
|
55
55
|
|
|
56
56
|
if (this.opt.verbose) {
|
|
57
57
|
console.error(chalk.blue('Stats: '), this.stats)
|
|
58
|
-
console.error(chalk.blue('Running: '), this.jobs.map(({ qname, message }) => ({ qname, payload: message.Body })))
|
|
58
|
+
console.error(chalk.blue('Running: '), this.jobs.filter(j => j.status === 'processing').map(({ qname, message }) => ({ qname, payload: message.Body })))
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
// Build list of jobs we need to deal with
|
|
62
62
|
for (const job of this.jobs) {
|
|
63
63
|
const jobRunTime = (now - job.start) / 1000
|
|
64
64
|
if (job.status === 'complete') {
|
|
65
|
-
const jobsToDelete = jobsToDeleteByQrl
|
|
65
|
+
const jobsToDelete = jobsToDeleteByQrl[job.qrl] || []
|
|
66
66
|
jobsToDelete.push(job)
|
|
67
|
-
jobsToDeleteByQrl
|
|
67
|
+
jobsToDeleteByQrl[job.qrl] = jobsToDelete
|
|
68
68
|
} else if (job.status === 'failed') {
|
|
69
69
|
jobsToCleanup.add(job)
|
|
70
70
|
} else if (jobRunTime >= job.exendAtSecond) {
|
|
71
71
|
// Add it to our organized list of jobs
|
|
72
|
-
const jobsToExtend = jobsToExtendByQrl
|
|
72
|
+
const jobsToExtend = jobsToExtendByQrl[job.qrl] || []
|
|
73
73
|
jobsToExtend.push(job)
|
|
74
|
-
jobsToExtendByQrl
|
|
74
|
+
jobsToExtendByQrl[job.qrl] = jobsToExtend
|
|
75
75
|
|
|
76
76
|
// Update the visibility timeout, double every time, up to max
|
|
77
77
|
const doubled = job.visibilityTimeout * 2
|
|
@@ -84,7 +84,9 @@ export class JobExecutor {
|
|
|
84
84
|
debug('maintainVisibility', { jobsToDeleteByQrl, jobsToExtendByQrl })
|
|
85
85
|
|
|
86
86
|
// Extend in batches for each queue
|
|
87
|
-
for (const
|
|
87
|
+
for (const qrl in jobsToExtendByQrl) {
|
|
88
|
+
const jobsToExtend = jobsToExtendByQrl[qrl]
|
|
89
|
+
debug({ qrl, jobsToExtend })
|
|
88
90
|
while (jobsToExtend.length) {
|
|
89
91
|
// Build list of messages to go in this batch
|
|
90
92
|
const entries = []
|
|
@@ -120,7 +122,8 @@ export class JobExecutor {
|
|
|
120
122
|
}
|
|
121
123
|
|
|
122
124
|
// Delete in batches for each queue
|
|
123
|
-
for (const
|
|
125
|
+
for (const qrl in jobsToDeleteByQrl) {
|
|
126
|
+
const jobsToDelete = jobsToDeleteByQrl[qrl]
|
|
124
127
|
while (jobsToDelete.length) {
|
|
125
128
|
// Build list of messages to go in this batch
|
|
126
129
|
const entries = []
|