From aa20a9d084d704bd2a016193d64e25091c33c401 Mon Sep 17 00:00:00 2001 From: Andrei Cioromila <andrei.cioromila@thinslices.com> Date: Wed, 20 Feb 2019 16:42:12 +0200 Subject: [PATCH] fix(jobs): Cancel jobs sequentially so we don't exhaust the db connection pool --- packages/component-invite/package.json | 5 +++-- .../src/routes/collectionsInvitations/delete.js | 14 ++++++++------ yarn.lock | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/component-invite/package.json b/packages/component-invite/package.json index 28a8d8eab..594240db2 100644 --- a/packages/component-invite/package.json +++ b/packages/component-invite/package.json @@ -19,6 +19,7 @@ "path": "component-invite" }, "dependencies": { + "bluebird": "^3.5.3", "body-parser": "^1.17.2", "chance": "^1.0.13", "moment": "^2.23.0" @@ -26,8 +27,8 @@ "peerDependencies": { "@pubsweet/component-send-email": "0.2.4", "@pubsweet/logger": "^0.0.1", - "pubsweet-server": "^10.0.0", - "pubsweet-component-jobs": "0.0.1" + "pubsweet-component-jobs": "0.0.1", + "pubsweet-server": "^10.0.0" }, "devDependencies": { "apidoc": "^0.17.6", diff --git a/packages/component-invite/src/routes/collectionsInvitations/delete.js b/packages/component-invite/src/routes/collectionsInvitations/delete.js index 54d4f0d75..e0378a2fb 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/delete.js +++ b/packages/component-invite/src/routes/collectionsInvitations/delete.js @@ -1,3 +1,5 @@ +const { last, get, chain, difference } = require('lodash') +const Promise = require('bluebird') const config = require('config') const { @@ -12,8 +14,6 @@ const { const Job = require('pubsweet-component-jobs') -const { last, get, chain, difference } = require('lodash') - const s3Config = get(config, 'pubsweet-component-aws-s3', {}) const notifications = require('./emails/notifications') @@ -134,10 +134,12 @@ module.exports = models => async (req, res) => { })), ] - fragment.invitations.forEach(inv => { - Job.cancelQueue(`removal-${inv.userId}-${inv.id}`) - Job.cancelQueue(`reminders-${inv.userId}-${inv.id}`) - }) + await Promise.each(fragment.invitations, async inv => + Promise.all([ + Job.cancelQueue(`removal-${inv.userId}-${inv.id}`), + Job.cancelQueue(`reminders-${inv.userId}-${inv.id}`), + ]), + ) fragment.invitations = [] fragment.recommendations = [] diff --git a/yarn.lock b/yarn.lock index 6766261b3..f35ca675f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1990,7 +1990,7 @@ bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" -bluebird@^3.5.2: +bluebird@^3.5.2, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" -- GitLab