diff options
author | Alaa Eddine Elamri <alaeddine.elamri@bareos.com> | 2022-10-28 16:54:16 +0300 |
---|---|---|
committer | Andreas Rogge <andreas.rogge@bareos.com> | 2022-11-07 19:16:30 +0300 |
commit | 608f067fa68047cdb1cbe9cb9dcf5741bcb43f6b (patch) | |
tree | 327dbcfb0c2fda7b2d6826b993e0c6b2d56020d1 | |
parent | c94a9a9ff09cc7c398e3621f0314573c9fc44ef6 (diff) |
use compare exchange before changing status
-rw-r--r-- | core/src/lib/jcr.cc | 10 |
1 files 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) { |