Automattic / kue

Kue is a priority job queue backed by redis, built for node.js.
http://automattic.github.io/kue
MIT License
9.45k stars 862 forks source link

Error: Shutdown already in progress - critical issues with Kue #1219

Open samuelgoldenbaum opened 5 years ago

samuelgoldenbaum commented 5 years ago

Seems calling queue.shutdown()when more that one queue exists causes an error:

Error: Shutdown already in progress

See example below:

process.stdin.resume();

const kue = require('kue');

let queue = kue.createQueue({
    redis: 'redis://localhost:6380'
});

queue.process('my-event', (job, done) => {
    console.info(job.data);

    done();
});

//_________________________________________________________________________________________________

let queue2 = kue.createQueue({
    redis: 'redis://localhost:6380'
});

queue2.process('my-other-event', (job, done) => {
    console.info(job.data);

    done();
});

//_________________________________________________________________________________________________

let job = queue
    .create('my-event', {foo: 'bar'})
    .removeOnComplete(true)
    .save();

setTimeout(() => {
    queue.shutdown(0, (err) => {
        if (err) {
            return console.error(err);
        }

        console.info('queue shutdown');
    });

}, 5000);

let job2 = queue2
    .create('my-other-event', {foo: 'bar'})
    .removeOnComplete(true)
    .save();

setTimeout(() => {
    queue2.shutdown(0, (err) => {
        if (err) {
            return console.error(err);
        }

        console.info('queue2 shutdown');
    });

}, 5000);

While I am grateful for OS contribution, there is so much critical stuff that in undocumented in this project