@tryghost/job-manager 0.8.15 → 0.8.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/lib/job-manager.js +10 -12
- package/package.json +6 -5
package/LICENSE
CHANGED
package/README.md
CHANGED
package/lib/job-manager.js
CHANGED
|
@@ -4,6 +4,7 @@ const later = require('@breejs/later');
|
|
|
4
4
|
const Bree = require('bree');
|
|
5
5
|
const pWaitFor = require('p-wait-for');
|
|
6
6
|
const {UnhandledJobError, IncorrectUsageError} = require('@tryghost/errors');
|
|
7
|
+
const logging = require('@tryghost/logging');
|
|
7
8
|
const isCronExpression = require('./is-cron-expression');
|
|
8
9
|
const assembleBreeJob = require('./assemble-bree-job');
|
|
9
10
|
|
|
@@ -28,11 +29,10 @@ const handler = (error, result) => {
|
|
|
28
29
|
class JobManager {
|
|
29
30
|
/**
|
|
30
31
|
* @param {Object} options
|
|
31
|
-
* @param {Object} [options.logging] - custom logging handler, defaults to console
|
|
32
32
|
* @param {Function} [options.errorHandler] - custom job error handler
|
|
33
33
|
* @param {Function} [options.workerMessageHandler] - custom message handler coming from workers
|
|
34
34
|
*/
|
|
35
|
-
constructor({
|
|
35
|
+
constructor({errorHandler, workerMessageHandler}) {
|
|
36
36
|
this.queue = fastq(this, worker, 1);
|
|
37
37
|
|
|
38
38
|
this.bree = new Bree({
|
|
@@ -43,8 +43,6 @@ class JobManager {
|
|
|
43
43
|
errorHandler: errorHandler,
|
|
44
44
|
workerMessageHandler: workerMessageHandler
|
|
45
45
|
});
|
|
46
|
-
|
|
47
|
-
this.logging = logging;
|
|
48
46
|
}
|
|
49
47
|
|
|
50
48
|
/**
|
|
@@ -60,7 +58,7 @@ class JobManager {
|
|
|
60
58
|
*/
|
|
61
59
|
addJob({name, at, job, data, offloaded = true}) {
|
|
62
60
|
if (offloaded) {
|
|
63
|
-
|
|
61
|
+
logging.info('Adding offloaded job to the queue');
|
|
64
62
|
let schedule;
|
|
65
63
|
|
|
66
64
|
if (!name) {
|
|
@@ -86,18 +84,18 @@ class JobManager {
|
|
|
86
84
|
});
|
|
87
85
|
}
|
|
88
86
|
|
|
89
|
-
|
|
87
|
+
logging.info(`Scheduling job ${name} at ${at}. Next run on: ${later.schedule(schedule).next()}`);
|
|
90
88
|
} else if (at !== undefined) {
|
|
91
|
-
|
|
89
|
+
logging.info(`Scheduling job ${name} at ${at}`);
|
|
92
90
|
} else {
|
|
93
|
-
|
|
91
|
+
logging.info(`Scheduling job ${name} to run immediately`);
|
|
94
92
|
}
|
|
95
93
|
|
|
96
94
|
const breeJob = assembleBreeJob(at, job, data, name);
|
|
97
95
|
this.bree.add(breeJob);
|
|
98
96
|
return this.bree.start(name);
|
|
99
97
|
} else {
|
|
100
|
-
|
|
98
|
+
logging.info('Adding one off inline job to the queue');
|
|
101
99
|
|
|
102
100
|
this.queue.push(async () => {
|
|
103
101
|
try {
|
|
@@ -109,7 +107,7 @@ class JobManager {
|
|
|
109
107
|
} catch (err) {
|
|
110
108
|
// NOTE: each job should be written in a safe way and handle all errors internally
|
|
111
109
|
// if the error is caught here jobs implementaton should be changed
|
|
112
|
-
|
|
110
|
+
logging.error(new UnhandledJobError({
|
|
113
111
|
context: (typeof job === 'function') ? 'function' : job,
|
|
114
112
|
err
|
|
115
113
|
}));
|
|
@@ -144,11 +142,11 @@ class JobManager {
|
|
|
144
142
|
return;
|
|
145
143
|
}
|
|
146
144
|
|
|
147
|
-
|
|
145
|
+
logging.warn('Waiting for busy job queue');
|
|
148
146
|
|
|
149
147
|
await pWaitFor(() => this.queue.idle() === true, options);
|
|
150
148
|
|
|
151
|
-
|
|
149
|
+
logging.warn('Job queue finished');
|
|
152
150
|
}
|
|
153
151
|
}
|
|
154
152
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tryghost/job-manager",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.19",
|
|
4
4
|
"repository": "https://github.com/TryGhost/Utils/tree/main/packages/job-manager",
|
|
5
5
|
"author": "Ghost Foundation",
|
|
6
6
|
"license": "MIT",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@sinonjs/fake-timers": "
|
|
23
|
-
"c8": "7.
|
|
24
|
-
"date-fns": "2.
|
|
22
|
+
"@sinonjs/fake-timers": "9.1.0",
|
|
23
|
+
"c8": "7.11.0",
|
|
24
|
+
"date-fns": "2.28.0",
|
|
25
25
|
"delay": "5.0.0",
|
|
26
26
|
"mocha": "9.1.3",
|
|
27
27
|
"should": "13.2.3",
|
|
@@ -29,10 +29,11 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@breejs/later": "^4.0.2",
|
|
32
|
+
"@tryghost/logging": "^2.0.0",
|
|
32
33
|
"bree": "^6.2.0",
|
|
33
34
|
"cron-validate": "^1.4.3",
|
|
34
35
|
"fastq": "^1.11.0",
|
|
35
36
|
"p-wait-for": "^3.2.0"
|
|
36
37
|
},
|
|
37
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "2f760f0875974aef9c9d867f7243ff70defc0152"
|
|
38
39
|
}
|