kue
kue copied to clipboard
Process won't exit after queue shutdown if client is saving a job
Test case:
const test = require('blue-tape')
const kue = require('kue')
let queue
test('create queue', (t) => {
queue = kue.createQueue({
prefix: 'test-shutdown',
redis: {
host: 'localhost',
port: 6379
},
})
t.end()
})
test('enqueue', (t) => {
// don't block
queue
.create('job-type', { foo: 'bar' })
.save((err) => {
t.ok(!!err)
console.error(err)
})
t.end()
})
test('shutdown queue', (t) => {
queue.shutdown(0, (err) => {
t.error(err)
t.end()
})
})
test('the process will not exit :(', (t) => {
t.end()
})
Output (process does not exit):
$ tape test.js
TAP version 13
# create queue
# enqueue
# shutdown queue
ok 1 undefined
# the process will not exit :(
ok 2 should be truthy
{ AbortError
at handle_offline_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:846:15)
at RedisClient.internal_send_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:880:9)
at Multi.exec_transaction (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/multi.js:115:18)
at Job.state (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:702:9)
at Job.<anonymous> (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:869:10)
at callbackOrEmit (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:89:9)
at /Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:107:13
at _combinedTickCallback (internal/process/next_tick.js:95:7)
at process._tickCallback (internal/process/next_tick.js:161:9)
command: 'EXEC',
code: 'NR_CLOSED',
errors:
[ { AbortError
at handle_offline_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:846:15)
at RedisClient.internal_send_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:880:9)
at pipeline_transaction_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/multi.js:41:18)
at Multi.exec_transaction (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/multi.js:112:9)
at Job.state (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:702:9)
at Job.<anonymous> (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:869:10)
at callbackOrEmit (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:89:9)
at /Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:107:13
at _combinedTickCallback (internal/process/next_tick.js:95:7)
at process._tickCallback (internal/process/next_tick.js:161:9) command: 'HSET', code: 'NR_CLOSED', args: [Array], position: 0 },
{ AbortError
at handle_offline_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:846:15)
at RedisClient.internal_send_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:880:9)
at pipeline_transaction_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/multi.js:41:18)
at Multi.exec_transaction (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/multi.js:112:9)
at Job.state (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:702:9)
at Job.<anonymous> (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:869:10)
at callbackOrEmit (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:89:9)
at /Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:107:13
at _combinedTickCallback (internal/process/next_tick.js:95:7)
at process._tickCallback (internal/process/next_tick.js:161:9) command: 'ZADD', code: 'NR_CLOSED', args: [Array], position: 1 },
{ AbortError
at handle_offline_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:846:15)
at RedisClient.internal_send_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:880:9)
at pipeline_transaction_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/multi.js:41:18)
at Multi.exec_transaction (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/multi.js:112:9)
at Job.state (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:702:9)
at Job.<anonymous> (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:869:10)
at callbackOrEmit (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:89:9)
at /Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:107:13
at _combinedTickCallback (internal/process/next_tick.js:95:7)
at process._tickCallback (internal/process/next_tick.js:161:9) command: 'ZADD', code: 'NR_CLOSED', args: [Array], position: 2 },
{ AbortError
at handle_offline_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:846:15)
at RedisClient.internal_send_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/index.js:880:9)
at pipeline_transaction_command (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/multi.js:41:18)
at Multi.exec_transaction (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/multi.js:112:9)
at Job.state (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:702:9)
at Job.<anonymous> (/Users/olalonde/code/kue-shutdown-test/node_modules/kue/lib/queue/job.js:869:10)
at callbackOrEmit (/Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:89:9)
at /Users/olalonde/code/kue-shutdown-test/node_modules/redis/lib/utils.js:107:13
at _combinedTickCallback (internal/process/next_tick.js:95:7)
at process._tickCallback (internal/process/next_tick.js:161:9)
command: 'LPUSH',
code: 'NR_CLOSED',
args: [Array],
position: 3 } ] }
Created this repo to reproduce: https://github.com/olalonde/kue-shutdown-test
Thank you @olalonde , I will try to check this ASAP
Any update regarding this ? Im experiencing something similar with AWS Lambda runtime. After a "hot" start, kue tries to create a new client without being initiated first, which fails the execution.
Hello! Any update regarding this?