From 4e35aa7f827cae308455b726ef4bb0514206cf73 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Sat, 26 Mar 2022 18:46:20 -0500 Subject: [PATCH] Make JobReport::reportReadBranches thread safe CRAB jobs have been failing to parse the job report because of this race condition. --- FWCore/MessageLogger/interface/JobReport.h | 2 +- FWCore/MessageLogger/src/JobReport.cc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/FWCore/MessageLogger/interface/JobReport.h b/FWCore/MessageLogger/interface/JobReport.h index aa0ab8308429a..2effaf489f5e6 100644 --- a/FWCore/MessageLogger/interface/JobReport.h +++ b/FWCore/MessageLogger/interface/JobReport.h @@ -255,7 +255,7 @@ namespace edm { std::map readBranches_; std::map readBranchesSecFile_; tbb::concurrent_unordered_map readBranchesSecSource_; - bool printedReadBranches_; + std::atomic printedReadBranches_; std::vector::size_type lastOpenedPrimaryInputFile_; edm::propagate_const ost_; }; diff --git a/FWCore/MessageLogger/src/JobReport.cc b/FWCore/MessageLogger/src/JobReport.cc index 78e5537d22303..bfdcdeada0a9d 100644 --- a/FWCore/MessageLogger/src/JobReport.cc +++ b/FWCore/MessageLogger/src/JobReport.cc @@ -567,9 +567,9 @@ namespace edm { } void JobReport::reportReadBranches() { - if (impl_->printedReadBranches_) + bool expected = false; + if (not impl_->printedReadBranches_.compare_exchange_strong(expected, true)) return; - impl_->printedReadBranches_ = true; if (impl_->ost_) { std::ostream& ost = *(impl_->ost_); ost << "\n";