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 +1 -1
- package/plugins/queue/scheduler.js +20 -16
- package/plugins/worker/worker.js +7 -3
package/package.json
CHANGED
|
@@ -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
|
-
|
|
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
|
|
223
|
+
await postBuildEvent(executor, config);
|
|
224
224
|
} catch (err) {
|
|
225
|
-
logger.error(
|
|
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();
|
package/plugins/worker/worker.js
CHANGED
|
@@ -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('
|
|
126
|
+
scheduler.on('workingTimestamp', timestamp =>
|
|
127
127
|
logger.info(`queueWorker->scheduler working timestamp ${timestamp}`)
|
|
128
128
|
);
|
|
129
|
-
scheduler.on('
|
|
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();
|