feat: support job.discard function in sandboxed processors

* Implement Job.prototype.isDiscarded
This commit is contained in:
Alexander Lolis
2021-07-26 19:28:47 +03:00
committed by Manuel Astudillo
parent b50512e1a8
commit 5adcf2ceed
5 changed files with 50 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
/**
* A processor file to be used in tests.
*
*/
'use strict';
const delay = require('delay');
module.exports = function(job) {
return delay(500).then(() => {
job.discard();
throw new Error('Manually discarded processor');
});
};
+21
View File
@@ -282,6 +282,27 @@ describe('sandboxed process', () => {
queue.add({ foo: 'bar' });
});
it('should process, discard and fail without retry', done => {
queue.process(__dirname + '/fixtures/fixture_processor_discard.js');
queue.on('failed', (job, err) => {
try {
expect(job.data).eql({ foo: 'bar' });
expect(job.isDiscarded()).to.be.true;
expect(job.failedReason).eql('Manually discarded processor');
expect(err.message).eql('Manually discarded processor');
expect(err.stack).include('fixture_processor_discard.js');
expect(Object.keys(queue.childPool.retained)).to.have.lengthOf(0);
expect(queue.childPool.getAllFree()).to.have.lengthOf(1);
done();
} catch (err) {
done(err);
}
});
queue.add({ foo: 'bar' });
});
it('should process and fail', done => {
queue.process(__dirname + '/fixtures/fixture_processor_fail.js');