screwdriver-queue-service 2.0.36 → 2.0.37

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "screwdriver-queue-service",
3
- "version": "2.0.36",
3
+ "version": "2.0.37",
4
4
  "description": "Screwdriver Queue Service API",
5
5
  "main": "app.js",
6
6
  "directories": {
@@ -166,15 +166,6 @@ async function startPeriodic(executor, config) {
166
166
 
167
167
  if (triggerBuild) {
168
168
  config.causeMessage = 'Started by periodic build scheduler';
169
-
170
- // Even if post event failed for this event after retry, we should still enqueue the next event
171
- try {
172
- await postBuildEvent(executor, config);
173
- } catch (err) {
174
- logger.error(
175
- `periodic builds: failed to post build event for job ${job.id} in pipeline ${pipeline.id}: ${err}`
176
- );
177
- }
178
169
  }
179
170
 
180
171
  if (buildCron && job.state === 'ENABLED' && !job.archived) {
@@ -214,18 +205,28 @@ async function startPeriodic(executor, config) {
214
205
  logger.error(`failed to enqueue for job ${job.id}: ${err}`);
215
206
  }
216
207
  }
217
- if (!shouldRetry) {
218
- logger.info(`successfully added to queue for job ${job.id}`);
219
208
 
220
- return Promise.resolve();
209
+ if (shouldRetry) {
210
+ try {
211
+ await executor.queue.enqueueAt(next, executor.periodicBuildQueue, 'startDelayed', [{ jobId: job.id }]);
212
+ } catch (err) {
213
+ logger.error(`failed to add to delayed queue for job ${job.id}: ${err}`);
214
+ }
215
+ } else {
216
+ logger.info(`successfully added to queue for job ${job.id}`);
221
217
  }
218
+ }
219
+ logger.info(`added to delayed queue for job ${job.id}`);
220
+
221
+ if (triggerBuild) {
222
222
  try {
223
- await executor.queue.enqueueAt(next, executor.periodicBuildQueue, 'startDelayed', [{ jobId: job.id }]);
223
+ await postBuildEvent(executor, config);
224
224
  } catch (err) {
225
- logger.error(`failed to add to delayed queue for job ${job.id}: ${err}`);
225
+ logger.error(
226
+ `periodic builds: failed to post build event for job ${job.id} in pipeline ${pipeline.id}: ${err}`
227
+ );
226
228
  }
227
229
  }
228
- logger.info(`added to delayed queue for job ${job.id}`);
229
230
 
230
231
  return Promise.resolve();
231
232
  }
@@ -536,8 +537,11 @@ async function init(executor) {
536
537
  executor.scheduler.on('master', state => logger.info(`scheduler became master ${state}`));
537
538
  executor.scheduler.on('error', error => logger.info(`scheduler error >> ${error}`));
538
539
  executor.scheduler.on('workingTimestamp', timestamp => logger.info(`scheduler working timestamp ${timestamp}`));
540
+ executor.scheduler.on('cleanStuckWorker', (workerName, errorPayload, delta) =>
541
+ logger.info(`scheduler failing ${workerName} (stuck for ${delta}s) and failing job ${errorPayload}`)
542
+ );
539
543
  executor.scheduler.on('transferredJob', (timestamp, job) =>
540
- logger.info(`scheduler enqueuing job timestamp >> ${JSON.stringify(job)}`)
544
+ logger.info(`scheduler enqueuing job ${timestamp} >> ${JSON.stringify(job)}`)
541
545
  );
542
546
 
543
547
  await executor.multiWorker.start();
@@ -123,13 +123,17 @@ async function invoke() {
123
123
  scheduler.on('poll', () => logger.info('queueWorker->scheduler polling'));
124
124
  scheduler.on('master', state => logger.info(`queueWorker->scheduler became master ${state}`));
125
125
  scheduler.on('error', error => logger.info(`queueWorker->scheduler error >> ${error}`));
126
- scheduler.on('working_timestamp', timestamp =>
126
+ scheduler.on('workingTimestamp', timestamp =>
127
127
  logger.info(`queueWorker->scheduler working timestamp ${timestamp}`)
128
128
  );
129
- scheduler.on('transferred_job', (timestamp, job) =>
129
+ scheduler.on('transferredJob', (timestamp, job) =>
130
130
  logger.info(`queueWorker->scheduler enqueuing job timestamp >> ${timestamp} ${JSON.stringify(job)}`)
131
131
  );
132
-
132
+ scheduler.on('cleanStuckWorker', (workerName, errorPayload, delta) =>
133
+ logger.info(
134
+ `queueWorker->scheduler failing ${workerName} (stuck for ${delta}s) and failing job ${errorPayload}`
135
+ )
136
+ );
133
137
  multiWorker.start();
134
138
 
135
139
  await scheduler.connect();