Comparing version 0.0.14 to 0.0.15
52
index.js
@@ -46,2 +46,3 @@ const { Worker } = require('worker_threads'); | ||
this.getWorkerMetadata = this.getWorkerMetadata.bind(this); | ||
this.run = this.run.bind(this); | ||
@@ -368,2 +369,16 @@ this.start = this.start.bind(this); | ||
getWorkerMetadata(name, meta = {}) { | ||
return this.workers[name] | ||
? { | ||
...meta, | ||
worker: { | ||
isMainThread: this.workers[name].isMainThread, | ||
resourceLimits: this.workers[name].resourceLimits, | ||
threadId: this.workers[name].threadId, | ||
workerData: this.workers[name].workerData | ||
} | ||
} | ||
: meta; | ||
} | ||
run(name) { | ||
@@ -376,3 +391,4 @@ debug('run', name); | ||
return this.config.logger.error( | ||
new Error(`Job "${name}" is already running`) | ||
new Error(`Job "${name}" is already running`), | ||
this.getWorkerMetadata(name) | ||
); | ||
@@ -399,7 +415,13 @@ debug('starting worker', name); | ||
this.workers[name].on('online', () => { | ||
this.config.logger.info(`${prefix} online`); | ||
this.config.logger.info( | ||
`${prefix} online`, | ||
this.getWorkerMetadata(name) | ||
); | ||
}); | ||
this.workers[name].on('message', (message) => { | ||
this.config.logger.info(`${prefix} sent a message`, { message }); | ||
if (message === 'done') { | ||
this.config.logger.info( | ||
`${prefix} signaled completion`, | ||
this.getWorkerMetadata(name) | ||
); | ||
this.workers[name].removeAllListeners('message'); | ||
@@ -409,15 +431,28 @@ this.workers[name].removeAllListeners('exit'); | ||
delete this.workers[name]; | ||
return; | ||
} | ||
this.config.logger.info( | ||
`${prefix} sent a message`, | ||
this.getWorkerMetadata(name, { message }) | ||
); | ||
}); | ||
this.workers[name].on('messageerror', (err) => { | ||
this.config.logger.error(`${prefix} had a message error`, { err }); | ||
this.config.logger.error( | ||
`${prefix} had a message error`, | ||
this.getWorkerMetadata(name, { err }) | ||
); | ||
}); | ||
this.workers[name].on('error', (err) => { | ||
this.config.logger.error(`${prefix} had an error`, { err }); | ||
this.config.logger.error( | ||
`${prefix} had an error`, | ||
this.getWorkerMetadata(name, { err }) | ||
); | ||
}); | ||
this.workers[name].on('exit', (code) => { | ||
delete this.workers[name]; | ||
this.config.logger[code === 0 ? 'info' : 'error']( | ||
`${prefix} exited with code ${code}` | ||
`${prefix} exited with code ${code}`, | ||
this.getWorkerMetadata(name) | ||
); | ||
delete this.workers[name]; | ||
}); | ||
@@ -556,3 +591,4 @@ return; | ||
this.config.logger.info( | ||
`Gracefully cancelled worker for job "${name}"` | ||
`Gracefully cancelled worker for job "${name}"`, | ||
this.getWorkerMetadata(name) | ||
); | ||
@@ -559,0 +595,0 @@ this.workers[name].terminate(); |
{ | ||
"name": "bree", | ||
"description": "The best job scheduler for Node.js with support for cron, ms, and human-friendly strings. Uses workers and spawns sandboxed processes. Supports async/await, retries, throttling, concurrency, and cancelable promises (graceful shutdown). Simple, fast, and the most lightweight tool for the job. Made for Lad.", | ||
"version": "0.0.14", | ||
"version": "0.0.15", | ||
"author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com/)", | ||
@@ -6,0 +6,0 @@ "ava": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
43246
600