From b7122c1a8db6b72db5a92672b959cadca83d55b8 Mon Sep 17 00:00:00 2001 From: Anton Alkin Date: Fri, 8 May 2026 11:34:54 +0200 Subject: [PATCH] DPL: ensure dummy sink is added with correct rate limiting configuration * If there is a TFN/TFF source, sink has to catch these messages to be at the topology end * If the TFN/TFF source is aod-producer, the rate limiting config should be with out-of-band channel instead of scheduler --- Framework/Core/src/WorkflowHelpers.cxx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Framework/Core/src/WorkflowHelpers.cxx b/Framework/Core/src/WorkflowHelpers.cxx index 5f1c1eaee5544..9b80ef14d7621 100644 --- a/Framework/Core/src/WorkflowHelpers.cxx +++ b/Framework/Core/src/WorkflowHelpers.cxx @@ -627,12 +627,15 @@ void WorkflowHelpers::injectServiceDevices(WorkflowSpec& workflow, ConfigContext // Use the new dummy sink when the AOD reader is there O2_SIGNPOST_ID_GENERATE(sid, workflow_helpers); if (tfnsource != workflow.end()) { - O2_SIGNPOST_EVENT_EMIT(workflow_helpers, sid, "injectServiceDevices", "Injecting scheduled dummy sink"); - // if there is a tfnsource, make sure the sink gets TFN/TFF DataSpecUtils::updateInputList(ignored, InputSpec{"tfn", "TFN", "TFNumber", 0, Lifetime::Sporadic}); DataSpecUtils::updateInputList(ignored, InputSpec{"tff", "TFF", "TFFilename", 0, Lifetime::Sporadic}); + } + + if (tfnsource != workflow.end() && !tfnsource->name.starts_with("aod-producer-workflow")) { // any tfnsource except the aod-producer should use scheduled sink + O2_SIGNPOST_EVENT_EMIT(workflow_helpers, sid, "injectServiceDevices", "Injecting scheduled dummy sink"); + // if there is a tfnsource, make sure the sink gets TFN/TFF extraSpecs.push_back(CommonDataProcessors::getScheduledDummySink(ignored)); - } else { + } else { // if there is no tfn source or if that source is aod-producer-workflow, out-of-band channel is used to propagate the number of consumed timeframes O2_SIGNPOST_EVENT_EMIT(workflow_helpers, sid, "injectServiceDevices", "Injecting rate limited dummy sink"); std::string rateLimitingChannelConfigOutput; if (rateLimitingIPCID != -1) {