From 2d4ffbf72bb88c8f98a0f0e283e4af6c680f9360 Mon Sep 17 00:00:00 2001 From: lkho Date: Mon, 26 Nov 2018 13:44:47 +0800 Subject: [PATCH 1/2] Rewrite agenda callbacks with promise --- lib/agendash.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/agendash.js b/lib/agendash.js index 3a50d430..ecb20eec 100644 --- a/lib/agendash.js +++ b/lib/agendash.js @@ -218,8 +218,10 @@ module.exports = function(agenda, options) { return callback('Jobs not found'); } async.series(jobs.map(job => done => { - const newJob = agenda.create(job.name, job.data).save(() => { + agenda.create(job.name, job.data).save().then(newJob => { done(null, newJob); + }, err => { + done(err); }); }), (err, results) => { callback(err, results); @@ -236,11 +238,13 @@ module.exports = function(agenda, options) { } try { const collection = agenda._collection.collection || agenda._collection; - agenda.cancel({_id: {$in: jobIds.map(jobId => collection.s.pkFactory(jobId))}}, (err, deleted) => { - if (err || !deleted) { - callback('Jobs not deleted'); + agenda.cancel({_id: {$in: jobIds.map(jobId => collection.s.pkFactory(jobId))}}).then(deleted => { + if (!deleted) { + return callback('Jobs not deleted'); } callback(); + }, err => { + callback(err.message); }); } catch (err) { callback(err.message); @@ -264,11 +268,10 @@ module.exports = function(agenda, options) { } else { return callback('Jobs not created'); } - job.save(err => { - if (err) { - return callback('Jobs not created'); - } + job.save().then(() => { callback(); + }, err => { + callback(err.message); }); } catch (err) { callback(err.message); From 630d08e799e4dd65d7b3cf5e81268d9578689d51 Mon Sep 17 00:00:00 2001 From: lkho Date: Mon, 26 Nov 2018 14:10:44 +0800 Subject: [PATCH 2/2] Continue fetchData interval even if request failed --- public/js/main.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/js/main.js b/public/js/main.js index 4a8b4315..742a2cd8 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -382,7 +382,7 @@ $(function () { this._fetchRequest = $.get('api', { job: this.currentRequest.get('job'), state: this.currentRequest.get('state') - }).success(this.resultsFetched) + }).success(this.resultsFetched).complete(this.fetchDataRequeue.bind(this)) }, resultsFetched: function (results) { this.overviewItems.set(results.overview) @@ -392,6 +392,8 @@ $(function () { }) this.render(results) this.jobItems.set(results.jobs) + }, + fetchDataRequeue: function () { this._fetchTimeout = setTimeout(this.fetchData, this.currentRequest.get('refreshInterval')) }, render: function (results) {