From 608f067fa68047cdb1cbe9cb9dcf5741bcb43f6b Mon Sep 17 00:00:00 2001 From: Alaa Eddine Elamri Date: Fri, 28 Oct 2022 15:54:16 +0200 Subject: use compare exchange before changing status --- core/src/lib/jcr.cc | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/core/src/lib/jcr.cc b/core/src/lib/jcr.cc index 71447eaa7..cd983b894 100644 --- a/core/src/lib/jcr.cc +++ b/core/src/lib/jcr.cc @@ -759,13 +759,9 @@ void JobControlRecord::setJobStarted() void JobControlRecord::setJobStatusWithPriorityCheck(int newJobStatus) { int priority; - int old_priority = 0; - int oldJobStatus = ' '; + int oldJobStatus = JobStatus; + int old_priority = GetStatusPriority(oldJobStatus); - if (JobStatus) { - oldJobStatus = JobStatus; - old_priority = GetStatusPriority(oldJobStatus); - } priority = GetStatusPriority(newJobStatus); Dmsg2(800, "setJobStatus(%s, %c)\n", Job, newJobStatus); @@ -789,7 +785,7 @@ void JobControlRecord::setJobStatusWithPriorityCheck(int newJobStatus) if (priority > old_priority || (priority == 0 && old_priority == 0)) { Dmsg4(800, "Set new stat. old: %c,%d new: %c,%d\n", oldJobStatus, old_priority, newJobStatus, priority); - JobStatus = newJobStatus; /* replace with new status */ + JobStatus.compare_exchange_strong(oldJobStatus, newJobStatus); } if (oldJobStatus != JobStatus) { -- cgit v1.2.3