Record failed ES queue jobs when saving the result fails (don't retry) (#28629) (#29211)

This commit is contained in:
Joel Griffith 2019-01-23 13:37:12 -08:00 committed by GitHub
parent 4303d8df74
commit a740e6ec24
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 0 deletions

View file

@ -867,6 +867,33 @@ describe('Worker class', function () {
return sinon.stub(workerWithFailure, '_failJob').returns(Promise.resolve());
}
describe('saving output failure', () => {
it('should mark the job as failed if saving to ES fails', async () => {
const job = {
_id: 'shouldSucced',
_source: {
timeout: 1000,
payload: 'test'
}
};
sinon.stub(mockQueue.client, 'update').returns(Promise.reject({ statusCode: 413 }));
const workerFn = function (jobPayload) {
return new Promise(function (resolve) {
setTimeout(() => resolve(jobPayload), 10);
});
};
const worker = new Worker(mockQueue, 'test', workerFn, defaultWorkerOptions);
const failStub = getFailStub(worker);
await worker._performJob(job);
worker.destroy();
sinon.assert.called(failStub);
});
});
describe('search failure', function () {
it('causes _processPendingJobs to reject the Promise', function () {
sinon.stub(mockQueue.client, 'search').returns(Promise.reject(new Error('test error')));

View file

@ -259,6 +259,7 @@ export class Worker extends events.EventEmitter {
if (err.statusCode === 409) return false;
this.warn(`Failure saving job output ${job._id}`, err);
this.emit(constants.EVENT_WORKER_JOB_UPDATE_ERROR, this._formatErrorParams(err, job));
return this._failJob(job, (err.message) ? err.message : false);
});
}, (jobErr) => {
if (!jobErr) {