Bree throws an error of jobs array is empty when creating the instance
theahmadzai opened this issue · comments
Describe the bug
Bree throws an error if the jobs array when creating object is empty so in my case I load all my jobs config from database and initially the jobs array is empty I add jobs after loading them from database.
- Node.js version: 16.13.1
- OS & version: 11
Actual behavior
...
Expected behavior
It should not throw error on creating bree object with empty jobs because jobs might be added later via bree.add
...
Code to reproduce
This is the code I use to load jobs and add it to bree
...
const Bree = require('bree')
const knex = require('./knex')
const logger = require('./logger')
const Bugsnag = require('./bugsnag')
const { JOB_ROOT, DATABASE_TABLE_JOBS } = require('../config')
const bree = new Bree({
logger,
root: JOB_ROOT,
jobs: [],
errorHandler: (error, workerMetadata) => {
const { threadId, name } = workerMetadata
if (threadId) {
logger.error(`Error in thread id: ${threadId}, name: ${name}`)
}
logger.error(error)
Bugsnag.notify(error)
},
})
bree.on('worker created', (name) => {
logger.info(`Worker created: ${name}`)
})
bree.on('worker deleted', (name) => {
logger.info(`Worker deleted: ${name}`)
})
exports.scheduler = bree
exports.start = async () => {
const jobs = await knex(DATABASE_TABLE_JOBS).where({ is_active: true })
jobs.forEach(async ({ name, filename, schedule }) => {
bree.add({
name,
path: `${JOB_ROOT}/${filename}`,
...schedule,
})
logger.info(`Loaded job(${name}) filename(${filename}) schedule(${JSON.stringify(schedule)})`)
})
logger.info(`${jobs.length} jobs loaded.`)
await bree.start()
return bree
}
Checklist
- I have read the documentation.
- I have tried my code with the latest version of Node.js and Bree.
This is expected behavior. It has checked for an index file in JOB_ROOT and found none. However bree has initialized and is running. Perhaps we should provide a better Error message here and an option to either not do this or silence this error.