diff --git a/server/controllers/monitorController.js b/server/controllers/monitorController.js index 5f0e22ecf..1247e4509 100755 --- a/server/controllers/monitorController.js +++ b/server/controllers/monitorController.js @@ -550,10 +550,8 @@ class MonitorController { }) ); - // Delete the old job(editedMonitor has the same ID as the old monitor) - await this.jobQueue.deleteJob(monitorBeforeEdit); - // Add the new job back to the queue - await this.jobQueue.addJob(editedMonitor._id, editedMonitor); + await this.jobQueue.updateJob(editedMonitor); + return res.success({ msg: this.stringService.monitorEdit, data: editedMonitor, diff --git a/server/service/JobQueue/JobQueue.js b/server/service/JobQueue/JobQueue.js index 9349eba7e..ed662e322 100644 --- a/server/service/JobQueue/JobQueue.js +++ b/server/service/JobQueue/JobQueue.js @@ -188,6 +188,11 @@ class JobQueue { } } + async updateJob(monitor) { + await this.deleteJob(monitor); + await this.addJob(monitor._id, monitor); + } + async getJobs() { try { let stats = {}; diff --git a/server/service/PulseQueue/PulseQueue.js b/server/service/PulseQueue/PulseQueue.js index 63e363b71..25dcbd4d9 100644 --- a/server/service/PulseQueue/PulseQueue.js +++ b/server/service/PulseQueue/PulseQueue.js @@ -62,10 +62,9 @@ class PulseQueue { service: SERVICE_NAME, method: "deleteJob", }); - const result = await this.pulse.cancel({ + await this.pulse.cancel({ "data.monitor._id": monitor._id, }); - console.log(result); }; pauseJob = async (monitor) => { @@ -100,6 +99,22 @@ class PulseQueue { }); }; + updateJob = async (monitor) => { + const jobs = await this.pulse.jobs({ + "data.monitor._id": monitor._id, + }); + + const job = jobs[0]; + if (!job) { + throw new Error("Job not found"); + } + + const intervalInSeconds = monitor.interval / 1000; + job.repeatEvery(`${intervalInSeconds} seconds`); + job.attrs.data.monitor = monitor; + await job.save(); + }; + shutdown = async () => { this.logger.info({ message: "Shutting down JobQueue",