From 2130764ab0327d99540f0371dc1991047f5adf60 Mon Sep 17 00:00:00 2001 From: Piotr Konopka Date: Fri, 9 Jan 2026 12:23:01 +0100 Subject: [PATCH] QC-1320 Suppress DomainInfoHeader traffic in remote QC workflows I observed that DomainInfoHeader (DIH) is propagated throughout the whole topology for every message received by the proxy. There is no point in that, because Merger outputs are based in a different time domain and also because all downstream QC data processors consume data immediatelly, thus there is no risk of accumulating inputs. The label which disables DIH propagation is added to: - remote input proxy for local QC tasks to cut the unneccessary traffic as early as possible in remote QC workflows - Mergers, to see a similar behaviour when testing QC with `--full-chain` option (it adds Mergers, but not proxies) The label is *not* added for remote proxies of remote tasks, because it *does* make sense to propagate DIH for data samples, which might have to be synchronized as QC task inputs. This being said, I am not sure if the synchronization works in this case anyway, given that input proxies assign new timesliceIDs to messages... --- Framework/src/InfrastructureGenerator.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Framework/src/InfrastructureGenerator.cxx b/Framework/src/InfrastructureGenerator.cxx index 1c94970d29..31020308b8 100644 --- a/Framework/src/InfrastructureGenerator.cxx +++ b/Framework/src/InfrastructureGenerator.cxx @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -568,6 +569,7 @@ void InfrastructureGenerator::generateLocalTaskRemoteProxy(framework::WorkflowSp if (!taskSpec.critical) { proxy.labels.emplace_back(framework::DataProcessorLabel{ "expendable" }); } + proxy.labels.emplace_back(framework::suppressDomainInfoLabel); // QC-1320 // if not in RUNNING, we should drop all the incoming messages, we set the corresponding proxy option. enableDraining(proxy.options); if (getenv("O2_QC_KILL_PROXIES") != nullptr) { @@ -607,6 +609,7 @@ void InfrastructureGenerator::generateMergers(framework::WorkflowSpec& workflow, mergerConfig.monitoringUrl = std::move(monitoringUrl); mergerConfig.detectorName = detectorName; mergerConfig.labels.push_back({ "resilient" }); + mergerConfig.labels.push_back(framework::suppressDomainInfoLabel); // QC-1320 mergerConfig.publishMovingWindow = { enableMovingWindows ? PublishMovingWindow::Yes : PublishMovingWindow::No }; mergerConfig.parallelismType = { (mergerConfig.inputObjectTimespan.value == InputObjectsTimespan::LastDifference) ? ParallelismType::RoundRobin : ParallelismType::SplitInputs }; mergersBuilder.setConfig(mergerConfig);