From 1e8ad51df330cca9bdd451905b364f287e23aeb1 Mon Sep 17 00:00:00 2001 From: James Harper Date: Wed, 20 May 2009 00:14:13 +0000 Subject: [PATCH] Fix race in director job start which was allowing the number of concurrent jobs to exceed the maximum git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8848 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/dird/jobq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bacula/src/dird/jobq.c b/bacula/src/dird/jobq.c index d08d6bcde1..8e93945ac9 100644 --- a/bacula/src/dird/jobq.c +++ b/bacula/src/dird/jobq.c @@ -358,8 +358,10 @@ static int start_server(jobq_t *jq) Dmsg0(2300, "Create worker thread\n"); /* No idle threads so create a new one */ set_thread_concurrency(jq->max_workers + 1); + jq->num_workers++; if ((stat = pthread_create(&id, &jq->attr, jobq_server, (void *)jq)) != 0) { berrno be; + jq->num_workers--; Jmsg1(NULL, M_ERROR, 0, _("pthread_create: ERR=%s\n"), be.bstrerror(stat)); return stat; } @@ -386,7 +388,6 @@ void *jobq_server(void *arg) set_jcr_in_tsd(INVALID_JCR); Dmsg0(2300, "Start jobq_server\n"); P(jq->mutex); - jq->num_workers++; for (;;) { struct timeval tv; -- 2.39.5