@@ -591,13 +591,41 @@ DataProcessorSpec adaptAnalysisTask(ConfigContext const& ctx, Args&&... args)
591591 auto algo = AlgorithmSpec::InitCallback
592592 {
593593 [task = task, expressionInfos, inputInfos, newOrigin, newOriginStr](InitContext& ic) mutable {
594+ homogeneous_apply_refs_sized<numElements>([&ic](auto && element) { return analysis_task_parsers::prepareOption (ic, element); }, *task.get ());
595+ homogeneous_apply_refs_sized<numElements>([&ic](auto && element) { return analysis_task_parsers::prepareService (ic, element); }, *task.get ());
596+
594597 Cache bindingsKeys;
595598 Cache bindingsKeysUnsorted;
596599 // add preslice declarations to slicing cache definition
597- homogeneous_apply_refs_sized<numElements>([&bindingsKeys, &bindingsKeysUnsorted](auto & element) { return analysis_task_parsers::registerCache (element, bindingsKeys, bindingsKeysUnsorted); }, *task.get ());
600+ homogeneous_apply_refs_sized<numElements>(
601+ [&bindingsKeys, &bindingsKeysUnsorted](auto & element) {
602+ return analysis_task_parsers::registerCache (element, bindingsKeys, bindingsKeysUnsorted);
603+ },
604+ *task.get ());
598605
599- homogeneous_apply_refs_sized<numElements>([&ic](auto && element) { return analysis_task_parsers::prepareOption (ic, element); }, *task.get ());
600- homogeneous_apply_refs_sized<numElements>([&ic](auto && element) { return analysis_task_parsers::prepareService (ic, element); }, *task.get ());
606+ // / parse process functions to enable requested grouping caches - note that at this state process configurables have their final values
607+ if constexpr (requires { &T::process; }) {
608+ AnalysisDataProcessorBuilder::cacheFromArgs (&T::process, true , bindingsKeys, bindingsKeysUnsorted);
609+ }
610+ homogeneous_apply_refs_sized<numElements>(
611+ [&bindingsKeys, &bindingsKeysUnsorted](auto & x) {
612+ return AnalysisDataProcessorBuilder::requestCacheFromArgs (x, bindingsKeys, bindingsKeysUnsorted);
613+ },
614+ *task.get ());
615+
616+ // / replace origin in slicing caches
617+ std::ranges::transform (bindingsKeys, bindingsKeys.begin (), [&newOrigin](Entry& entry) {
618+ if ((entry.matcher .origin == header::DataOrigin{" AOD" }) && (newOrigin != header::DataOrigin{" AOD" })) {
619+ entry.matcher = replaceOrigin (entry.matcher , newOrigin);
620+ }
621+ return entry;
622+ });
623+ std::ranges::transform (bindingsKeysUnsorted, bindingsKeysUnsorted.begin (), [&newOrigin](Entry& entry) {
624+ if ((entry.matcher .origin == header::DataOrigin{" AOD" }) && (newOrigin != header::DataOrigin{" AOD" })) {
625+ entry.matcher = replaceOrigin (entry.matcher , newOrigin);
626+ }
627+ return entry;
628+ });
601629
602630 auto & callbacks = ic.services ().get <CallbackService>();
603631 auto eoscb = [task](EndOfStreamContext& eosContext) {
@@ -626,30 +654,6 @@ DataProcessorSpec adaptAnalysisTask(ConfigContext const& ctx, Args&&... args)
626654 },
627655 *task.get ());
628656
629- // / parse process functions to enable requested grouping caches - note that at this state process configurables have their final values
630- if constexpr (requires { &T::process; }) {
631- AnalysisDataProcessorBuilder::cacheFromArgs (&T::process, true , bindingsKeys, bindingsKeysUnsorted);
632- }
633- homogeneous_apply_refs_sized<numElements>(
634- [&bindingsKeys, &bindingsKeysUnsorted](auto & x) {
635- return AnalysisDataProcessorBuilder::requestCacheFromArgs (x, bindingsKeys, bindingsKeysUnsorted);
636- },
637- *task.get ());
638-
639- // / replace origin in slicing caches
640- std::ranges::transform (bindingsKeys, bindingsKeys.begin (), [&newOrigin](Entry& entry) {
641- if ((entry.matcher .origin == header::DataOrigin{" AOD" }) && (newOrigin != header::DataOrigin{" AOD" })) {
642- entry.matcher = replaceOrigin (entry.matcher , newOrigin);
643- }
644- return entry;
645- });
646- std::ranges::transform (bindingsKeysUnsorted, bindingsKeysUnsorted.begin (), [&newOrigin](Entry& entry) {
647- if ((entry.matcher .origin == header::DataOrigin{" AOD" }) && (newOrigin != header::DataOrigin{" AOD" })) {
648- entry.matcher = replaceOrigin (entry.matcher , newOrigin);
649- }
650- return entry;
651- });
652-
653657 ic.services ().get <ArrowTableSlicingCacheDef>().setCaches (std::move (bindingsKeys));
654658 ic.services ().get <ArrowTableSlicingCacheDef>().setCachesUnsorted (std::move (bindingsKeysUnsorted));
655659 ic.services ().get <ArrowTableSlicingCacheDef>().setOrigin (newOrigin);
0 commit comments