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.
@@ -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 (this.opt.verbose) {
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, jobsToExtendByQrl_1, _c, qrl, jobsToExtend, entries, messageId, job, entry, input, result, _d, jobsToDeleteByQrl_1, _e, qrl, jobsToDelete, entries, messageId, job, entry, input, result;
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 (_f) {
85
- switch (_f.label) {
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 = new Map();
90
- jobsToDeleteByQrl = new Map();
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.get(job.qrl) || [];
104
+ jobsToDelete = jobsToDeleteByQrl[job.qrl] || [];
105
105
  jobsToDelete.push(job);
106
- jobsToDeleteByQrl.set(job.qrl, jobsToDelete);
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.get(job.qrl) || [];
112
+ jobsToExtend = jobsToExtendByQrl[job.qrl] || [];
113
113
  jobsToExtend.push(job);
114
- jobsToExtendByQrl.set(job.qrl, jobsToExtend);
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 = 0, jobsToExtendByQrl_1 = jobsToExtendByQrl;
124
- _f.label = 1;
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 (!(_b < jobsToExtendByQrl_1.length)) return [3 /*break*/, 6];
127
- _c = jobsToExtendByQrl_1[_b], qrl = _c[0], jobsToExtend = _c[1];
128
- _f.label = 2;
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 = _f.sent();
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
- _f.label = 5;
173
+ _k.label = 5;
166
174
  case 5:
167
- _b++;
175
+ _e++;
168
176
  return [3 /*break*/, 1];
169
177
  case 6:
170
- _d = 0, jobsToDeleteByQrl_1 = jobsToDeleteByQrl;
171
- _f.label = 7;
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 (!(_d < jobsToDeleteByQrl_1.length)) return [3 /*break*/, 12];
174
- _e = jobsToDeleteByQrl_1[_d], qrl = _e[0], jobsToDelete = _e[1];
175
- _f.label = 8;
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 = _f.sent();
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
- _f.label = 11;
227
+ _k.label = 11;
213
228
  case 11:
214
- _d++;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qdone",
3
- "version": "2.0.10-alpha",
3
+ "version": "2.0.11-alpha",
4
4
  "description": "Language agnostic job queue for SQS",
5
5
  "type": "module",
6
6
  "main": "./index.js",
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 (this.opt.verbose) {
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 = new Map()
53
- const jobsToDeleteByQrl = new Map()
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.get(job.qrl) || []
65
+ const jobsToDelete = jobsToDeleteByQrl[job.qrl] || []
66
66
  jobsToDelete.push(job)
67
- jobsToDeleteByQrl.set(job.qrl, jobsToDelete)
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.get(job.qrl) || []
72
+ const jobsToExtend = jobsToExtendByQrl[job.qrl] || []
73
73
  jobsToExtend.push(job)
74
- jobsToExtendByQrl.set(job.qrl, jobsToExtend)
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 [qrl, jobsToExtend] of jobsToExtendByQrl) {
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 [qrl, jobsToDelete] of jobsToDeleteByQrl) {
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 = []