From 54c19226bfab28648a53470019171d9e153ce498 Mon Sep 17 00:00:00 2001 From: Naz Date: Fri, 7 Oct 2022 18:41:11 +0800 Subject: [PATCH] Fixed an unhandled exception in job manager closes https://github.com/TryGhost/Toolbox/issues/402 - The SQL error was thrown whenever a job error was happening and was trying to persist an error. Persisting an error should only happen for "named" one-off jobs, instead of just one-off jobs. --- ghost/job-manager/lib/job-manager.js | 2 +- ghost/job-manager/test/job-manager.test.js | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ghost/job-manager/lib/job-manager.js b/ghost/job-manager/lib/job-manager.js index ed14a6fd17..b988da02d2 100644 --- a/ghost/job-manager/lib/job-manager.js +++ b/ghost/job-manager/lib/job-manager.js @@ -114,7 +114,7 @@ class JobManager { } async _jobErrorHandler(error, jobMeta) { - if (this._jobsRepository) { + if (this._jobsRepository && jobMeta.name) { const job = await this._jobsRepository.read(jobMeta.name); if (job) { diff --git a/ghost/job-manager/test/job-manager.test.js b/ghost/job-manager/test/job-manager.test.js index b6a3b98868..205298cced 100644 --- a/ghost/job-manager/test/job-manager.test.js +++ b/ghost/job-manager/test/job-manager.test.js @@ -65,7 +65,12 @@ describe('Job Manager', function () { it('handles failed job gracefully', async function () { const spy = sinon.stub().throws(); - const jobManager = new JobManager({}); + const jobModelSpy = { + findOne: sinon.spy() + }; + const jobManager = new JobManager({ + JobModel: jobModelSpy + }); jobManager.addJob({ job: spy, @@ -81,6 +86,8 @@ describe('Job Manager', function () { should(spy.called).be.true(); should(spy.args[0][0]).equal('test data'); should(logging.error.called).be.true(); + // a one-off job without a name should not have persistance + should(jobModelSpy.findOne.called).be.false(); }); });