rethinkdb-job-queue
Advanced tools
Comparing version 0.0.4 to 0.0.5
# `rethinkdb-job-queue` Change log | ||
## v0.0.5 / 2016-08-21 | ||
* Changed return values of Queue.removeJob to job ids. | ||
* Removed the Queue.connection alias property. | ||
* Added the 'pausing' Queue event. | ||
* Updated examples to work with the next() Promise. | ||
* Fixed a require path in queue-add-job. | ||
## v0.0.4 / 2016-08-18 | ||
@@ -4,0 +12,0 @@ |
@@ -26,2 +26,3 @@ 'use strict'; | ||
progress: 'progress', | ||
pausing: 'pausing', | ||
paused: 'paused', | ||
@@ -28,0 +29,0 @@ resumed: 'resumed', |
@@ -19,2 +19,3 @@ 'use strict'; | ||
}).then(function (updateResult) { | ||
job.log.push(log); | ||
logger('Event: log [' + job.id + ']', updateResult); | ||
@@ -21,0 +22,0 @@ job.q.emit(enums.status.log, job.id); |
@@ -49,3 +49,3 @@ 'use strict'; | ||
logger('Event: failed [' + jobIds[0] + ']'); | ||
job.q.emit(enums.status.failed, jobIds[0], job.dateRetry); | ||
job.q.emit(enums.status.failed, jobIds[0]); | ||
} else { | ||
@@ -52,0 +52,0 @@ logger('Event: terminated [' + jobIds[0] + ']'); |
@@ -8,3 +8,3 @@ 'use strict'; | ||
var dbResult = require('./db-result'); | ||
var jobParse = require('../src/job-parse'); | ||
var jobParse = require('./job-parse'); | ||
@@ -11,0 +11,0 @@ // skipStatusCheck is for ease of adding jobs during tests |
@@ -12,2 +12,4 @@ 'use strict'; | ||
q._paused = true; | ||
logger('Event: pausing [' + q.id + ']'); | ||
q.emit(enums.status.pausing, q.id); | ||
if (q.running < 1) { | ||
@@ -14,0 +16,0 @@ return resolve(); |
@@ -50,4 +50,4 @@ 'use strict'; | ||
return dbResult.status(result.removeResult, enums.dbResult.deleted); | ||
return result.jobIds; | ||
}); | ||
}; |
@@ -283,7 +283,2 @@ 'use strict'; | ||
}, { | ||
key: 'connection', | ||
get: function get() { | ||
return this.r; | ||
} | ||
}, { | ||
key: 'changeFeed', | ||
@@ -290,0 +285,0 @@ get: function get() { |
{ | ||
"name": "rethinkdb-job-queue", | ||
"version": "0.0.4", | ||
"version": "0.0.5", | ||
"description": "A persistent job or task queue backed by RethinkDB.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -27,2 +27,4 @@ # Introduction | ||
Note: You will need to install [RethinkDB][rethinkdb-url] before you can use `rethinkdb-job-queue` | ||
```sh | ||
@@ -52,6 +54,10 @@ npm install rethinkdb-job-queue --save | ||
// Do something with your result | ||
next(null, result) | ||
return next(null, result).catch((err) => { | ||
console.error(err) | ||
}) | ||
} catch (err) { | ||
console.error(err) | ||
next(err) | ||
return next(err).catch((err) => { | ||
console.error(err) | ||
}) | ||
} | ||
@@ -125,7 +131,13 @@ }) | ||
mailOptions.to = job.recipient | ||
transporter.sendMail(mailOptions).then((info) => { | ||
return transporter.sendMail(mailOptions).then((info) => { | ||
console.dir(info) | ||
next(null, info) | ||
return next(null, info) | ||
}).catch((err) => { | ||
next(err) | ||
// This catch if for nodemailer sendMail errors. | ||
return next(err).catch((err) => { | ||
// This second catch is for the next(err) Promise. | ||
// Calling next() updates the job in the database. | ||
// This catch allows you to log update errors. | ||
console.error(err) | ||
}) | ||
}) | ||
@@ -132,0 +144,0 @@ }) |
@@ -17,3 +17,3 @@ const test = require('tape') | ||
t.equal(Object.keys(enums.priority).length, 6, 'Enums priority has has correct number of keys') | ||
t.equal(Object.keys(enums.status).length, 22, 'Enums status has correct number of keys') | ||
t.equal(Object.keys(enums.status).length, 23, 'Enums status has correct number of keys') | ||
t.equal(Object.keys(enums.options).length, 11, 'Enums options has correct number of keys') | ||
@@ -20,0 +20,0 @@ t.equal(Object.keys(enums.index).length, 3, 'Enums index has has correct number of keys') |
@@ -15,3 +15,3 @@ const test = require('tape') | ||
test('job-failed', (t) => { | ||
t.plan(79) | ||
t.plan(76) | ||
@@ -22,8 +22,6 @@ const q = new Queue(testOptions.default()) | ||
let testEvents = false | ||
function failedEventHandler (jobId, dateRetry) { | ||
function failedEventHandler (jobId) { | ||
if (testEvents) { | ||
t.equal(jobId, job.id, | ||
`Event: Job failed [${jobId}]`) | ||
t.ok(is.date(dateRetry), | ||
`Event: Job failed dateRetry is a date [${dateRetry}]`) | ||
} | ||
@@ -30,0 +28,0 @@ } |
@@ -15,3 +15,3 @@ const test = require('tape') | ||
test('queue-interruption', (t) => { | ||
t.plan(9) | ||
t.plan(10) | ||
@@ -25,2 +25,7 @@ const q = new Queue(testOptions.default()) | ||
let testEvents = false | ||
function pausingEventHandler (qId) { | ||
if (testEvents) { | ||
t.equal(qId, q.id, `Event: pausing [${qId}]`) | ||
} | ||
} | ||
function pausedEventHandler (qId) { | ||
@@ -38,2 +43,3 @@ if (testEvents) { | ||
testEvents = true | ||
q.on(enums.status.paused, pausingEventHandler) | ||
q.on(enums.status.paused, pausedEventHandler) | ||
@@ -44,2 +50,3 @@ q.on(enums.status.resumed, resumedEventHandler) | ||
testEvents = false | ||
q.removeListener(enums.status.pausing, pausedEventHandler) | ||
q.removeListener(enums.status.paused, pausedEventHandler) | ||
@@ -46,0 +53,0 @@ q.removeListener(enums.status.resumed, resumedEventHandler) |
@@ -17,3 +17,3 @@ const test = require('tape') | ||
const q = new Queue(testOptions.default()) | ||
let jobs = q.createJob(3).map(j => j) | ||
let jobs = q.createJob(3) | ||
@@ -46,3 +46,3 @@ let testEvents = false | ||
}).then((removeResult) => { | ||
t.equal(removeResult, 3, 'Jobs removed successfully') | ||
t.equal(removeResult.length, 3, 'Jobs removed successfully') | ||
return q.getJob(jobs.map(j => j.id)) | ||
@@ -60,3 +60,3 @@ }).then((getResult) => { | ||
}).then((removeIdResult) => { | ||
t.equal(removeIdResult, 3, 'Jobs removed by id successfully') | ||
t.equal(removeIdResult.length, 3, 'Jobs removed by id successfully') | ||
return q.getJob(jobs.map(j => j.id)) | ||
@@ -74,3 +74,3 @@ }).then((getResult2) => { | ||
}).then((removeSingleResult) => { | ||
t.equal(removeSingleResult, 1, 'Single job removed successfully') | ||
t.equal(removeSingleResult.length, 1, 'Single job removed successfully') | ||
return q.getJob(jobs.id) | ||
@@ -88,3 +88,3 @@ }).then((getResult3) => { | ||
}).then((removeSingleResult2) => { | ||
t.equal(removeSingleResult2, 1, 'Single job removed by id successfully') | ||
t.equal(removeSingleResult2.length, 1, 'Single job removed by id successfully') | ||
return q.getJob(jobs.id) | ||
@@ -98,3 +98,3 @@ }).then((getResult4) => { | ||
}).then((undefinedResult) => { | ||
t.equal(undefinedResult, 0, 'Remove undefined job returns 0 result') | ||
t.equal(undefinedResult.length, 0, 'Remove undefined job returns 0 result') | ||
@@ -101,0 +101,0 @@ // ---------- Remove Invalid Job Tests ---------- |
@@ -13,3 +13,3 @@ const test = require('tape') | ||
test('queue', (t) => { | ||
t.plan(107) | ||
t.plan(106) | ||
@@ -150,3 +150,2 @@ let q = new Queue(testOptions.queueNameOnly()) | ||
t.ok(is.function(q.r), 'Queue r valid') | ||
t.ok(is.function(q.connection), 'Queue connection valid') | ||
t.ok(q.changeFeed, 'Queue change feed is enabled') | ||
@@ -237,4 +236,4 @@ t.ok(q.master, 'Queue is master queue') | ||
}).then((removedCount) => { | ||
t.ok(is.integer(removedCount), 'Remove job returns an integer') | ||
t.equal(removedCount, 1, 'Removed count is valid') | ||
t.ok(is.array(removedCount), 'Remove job returns an array') | ||
t.equal(removedCount.length, 1, 'Removed count is valid') | ||
return q.getJob(job.id) | ||
@@ -241,0 +240,0 @@ }).then((noJobs) => { |
@@ -21,4 +21,4 @@ // const Promise = require('bluebird') | ||
// const queueGetJob = require('./queue-get-job.spec') | ||
// const queueGetNextJob = require('./queue-get-next-job.spec') | ||
const queueProcess = require('./queue-process.spec') | ||
const queueGetNextJob = require('./queue-get-next-job.spec') | ||
// const queueProcess = require('./queue-process.spec') | ||
// const queueChange = require('./queue-change.spec') | ||
@@ -35,3 +35,3 @@ // const queueInterruption = require('./queue-interruption.spec') | ||
}).then(() => { | ||
return queueProcess() | ||
return queueInterruption() | ||
}) |
@@ -10,7 +10,7 @@ const Queue = require('../src/queue') | ||
q.addJob(job).then((jobs) => { | ||
return q.getJob(job.id) | ||
}).then((savedJobs) => { | ||
console.dir(savedJobs[0].getCleanCopy(true)) | ||
return q.summary() | ||
}).then((result) => { | ||
console.dir(result) | ||
return q.stop() | ||
}) |
# WORKLOG | ||
Check for invalid priority values for job options. | ||
Queue option parsing. | ||
Check for valid port range 1 to 65535. | ||
Checkout the createIndexInactivePriorityDateCreated index added status. | ||
## Update events in tests to support x of y | ||
@@ -15,16 +11,4 @@ | ||
Add error documentation. | ||
Job parsing errors have a custom property err.dbError. | ||
The next() function returns a promise with the number of running jobs. | ||
Jobs can be cancelled by adding properties to the err object in next(err). | ||
dateRetry gets updated on progress updates, use to stop a job timing out. | ||
Queue.ready() returns false if the queue has been detached from the database. | ||
Reviewed event has an object for args that includes reviewed and removed jobs. | ||
if using createJob(number) will need to map `q.createJob(jobsToCreate).map(j => j)` | ||
Write about the different Queue status and Job status values. |
227385
5248
201