From 1d85d6bdb10fb04a2025fe1fd44b4f146d11a11a Mon Sep 17 00:00:00 2001 From: Piotr Konopka Date: Mon, 21 Jul 2025 16:43:35 +0200 Subject: [PATCH] Fix wrong warnings about bad flags assigned to good qualities Due to the order of processing in WorstOfAllAggregator, we could get cases when a bad Flag (coming from Bad quality) would be assigned to Good quality, while the quality itself would be replaced just after. This commit reverses the order, which will silence the wrong warning. The same code was also reused TrendCheck, thus I am fixing it also there. --- Framework/src/AggregatorRunner.cxx | 2 +- Modules/Common/src/TrendCheck.cxx | 6 +++--- Modules/Common/src/WorstOfAllAggregator.cxx | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Framework/src/AggregatorRunner.cxx b/Framework/src/AggregatorRunner.cxx index 4ce15a2aa0..2775e96a18 100644 --- a/Framework/src/AggregatorRunner.cxx +++ b/Framework/src/AggregatorRunner.cxx @@ -174,7 +174,7 @@ AggregatorRunner::QualityObjectsWithAggregatorNameVector AggregatorRunner::aggre ILOG(Info, Devel) << "Processing aggregator: " << aggregatorName << ENDM; if (mUpdatePolicyManager.isReady(aggregatorName)) { - ILOG(Info, Devel) << " Quality Objects for the aggregator '" << aggregatorName << "' are ready, aggregating" << ENDM; + ILOG(Info, Devel) << " Quality Objects for the aggregator '" << aggregatorName << "' are ready, aggregating" << ENDM; auto newQOs = aggregator->aggregate(mQualityObjects, *mActivity); // we give the whole list mTotalNumberObjectsProduced += newQOs.size(); mTotalNumberAggregatorExecuted++; diff --git a/Modules/Common/src/TrendCheck.cxx b/Modules/Common/src/TrendCheck.cxx index 0cf1e6c242..d3b208aa81 100644 --- a/Modules/Common/src/TrendCheck.cxx +++ b/Modules/Common/src/TrendCheck.cxx @@ -345,12 +345,12 @@ Quality TrendCheck::check(std::map>* Quality result = mQualities.empty() ? Quality::Null : Quality::Good; for (auto& [key, quality] : mQualities) { (void)key; - for (const auto& flag : quality.getFlags()) { - result.addFlag(flag.first, flag.second); - } if (quality.isWorseThan(result)) { result.set(quality); } + for (const auto& flag : quality.getFlags()) { + result.addFlag(flag.first, flag.second); + } } return result; diff --git a/Modules/Common/src/WorstOfAllAggregator.cxx b/Modules/Common/src/WorstOfAllAggregator.cxx index e97392a11f..d8585c3a33 100644 --- a/Modules/Common/src/WorstOfAllAggregator.cxx +++ b/Modules/Common/src/WorstOfAllAggregator.cxx @@ -41,12 +41,12 @@ std::map WorstOfAllAggregator::aggregate(QualityObjectsMap Quality current = Quality::Good; for (const auto& [qoName, qo] : qoMap) { (void)qoName; - for (const auto& flag : qo->getFlags()) { - current.addFlag(flag.first, flag.second); - } if (qo->getQuality().isWorseThan(current)) { current.set(qo->getQuality()); } + for (const auto& flag : qo->getFlags()) { + current.addFlag(flag.first, flag.second); + } } ILOG(Info, Devel) << "Aggregated Quality: " << current << ENDM;