From 6ba70923b9c689dacbb3a55a06336bf5002f224c Mon Sep 17 00:00:00 2001 From: Jason Rhinelander Date: Sun, 29 Mar 2020 15:43:17 -0300 Subject: [PATCH] Add job queue check on total workers size Without this there could be a race condition where a job could create a new worker during shutdown, and end up causing an assert failure. --- lokimq/jobs.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lokimq/jobs.cpp b/lokimq/jobs.cpp index 981db43..45e1f43 100644 --- a/lokimq/jobs.cpp +++ b/lokimq/jobs.cpp @@ -28,8 +28,8 @@ void LokiMQ::proxy_schedule_reply_job(std::function f) { } void LokiMQ::proxy_run_batch_jobs(std::queue& jobs, const int reserved, int& active, bool reply) { - while (!jobs.empty() && - (active < reserved || static_cast(workers.size() - idle_workers.size()) < general_workers)) { + while (!jobs.empty() && static_cast(workers.size()) < max_workers && + (active < reserved || active_workers() < general_workers)) { proxy_run_worker(get_idle_worker().load(std::move(jobs.front()), reply)); jobs.pop(); active++;