@@ -601,13 +601,41 @@ DataProcessorSpec adaptAnalysisTask(ConfigContext const& ctx, Args&&... args)
601601
602602 auto algo = AlgorithmSpec::InitCallback{
603603 [task = task, expressionInfos, inputInfos, newOrigin, newOriginStr](InitContext& ic) mutable {
604+ homogeneous_apply_refs_sized<numElements>([&ic](auto && element) { return analysis_task_parsers::prepareOption (ic, element); }, *task.get ());
605+ homogeneous_apply_refs_sized<numElements>([&ic](auto && element) { return analysis_task_parsers::prepareService (ic, element); }, *task.get ());
606+
604607 Cache bindingsKeys;
605608 Cache bindingsKeysUnsorted;
606609 // add preslice declarations to slicing cache definition
607- homogeneous_apply_refs_sized<numElements>([&bindingsKeys, &bindingsKeysUnsorted](auto & element) { return analysis_task_parsers::registerCache (element, bindingsKeys, bindingsKeysUnsorted); }, *task.get ());
610+ homogeneous_apply_refs_sized<numElements>(
611+ [&bindingsKeys, &bindingsKeysUnsorted](auto & element) {
612+ return analysis_task_parsers::registerCache (element, bindingsKeys, bindingsKeysUnsorted);
613+ },
614+ *task.get ());
608615
609- homogeneous_apply_refs_sized<numElements>([&ic](auto && element) { return analysis_task_parsers::prepareOption (ic, element); }, *task.get ());
610- homogeneous_apply_refs_sized<numElements>([&ic](auto && element) { return analysis_task_parsers::prepareService (ic, element); }, *task.get ());
616+ // / parse process functions to enable requested grouping caches - note that at this state process configurables have their final values
617+ if constexpr (requires { &T::process; }) {
618+ AnalysisDataProcessorBuilder::cacheFromArgs (&T::process, true , bindingsKeys, bindingsKeysUnsorted);
619+ }
620+ homogeneous_apply_refs_sized<numElements>(
621+ [&bindingsKeys, &bindingsKeysUnsorted](auto & x) {
622+ return AnalysisDataProcessorBuilder::requestCacheFromArgs (x, bindingsKeys, bindingsKeysUnsorted);
623+ },
624+ *task.get ());
625+
626+ // / replace origin in slicing caches
627+ std::ranges::transform (bindingsKeys, bindingsKeys.begin (), [&newOrigin](Entry& entry) {
628+ if ((entry.matcher .origin == header::DataOrigin{" AOD" }) && (newOrigin != header::DataOrigin{" AOD" })) {
629+ entry.matcher = replaceOrigin (entry.matcher , newOrigin);
630+ }
631+ return entry;
632+ });
633+ std::ranges::transform (bindingsKeysUnsorted, bindingsKeysUnsorted.begin (), [&newOrigin](Entry& entry) {
634+ if ((entry.matcher .origin == header::DataOrigin{" AOD" }) && (newOrigin != header::DataOrigin{" AOD" })) {
635+ entry.matcher = replaceOrigin (entry.matcher , newOrigin);
636+ }
637+ return entry;
638+ });
611639
612640 auto & callbacks = ic.services ().get <CallbackService>();
613641 auto eoscb = [task](EndOfStreamContext& eosContext) {
@@ -636,30 +664,6 @@ DataProcessorSpec adaptAnalysisTask(ConfigContext const& ctx, Args&&... args)
636664 },
637665 *task.get ());
638666
639- // / parse process functions to enable requested grouping caches - note that at this state process configurables have their final values
640- if constexpr (requires { &T::process; }) {
641- AnalysisDataProcessorBuilder::cacheFromArgs (&T::process, true , bindingsKeys, bindingsKeysUnsorted);
642- }
643- homogeneous_apply_refs_sized<numElements>(
644- [&bindingsKeys, &bindingsKeysUnsorted](auto & x) {
645- return AnalysisDataProcessorBuilder::requestCacheFromArgs (x, bindingsKeys, bindingsKeysUnsorted);
646- },
647- *task.get ());
648-
649- // / replace origin in slicing caches
650- std::ranges::transform (bindingsKeys, bindingsKeys.begin (), [&newOrigin](Entry& entry) {
651- if ((entry.matcher .origin == header::DataOrigin{" AOD" }) && (newOrigin != header::DataOrigin{" AOD" })) {
652- entry.matcher = replaceOrigin (entry.matcher , newOrigin);
653- }
654- return entry;
655- });
656- std::ranges::transform (bindingsKeysUnsorted, bindingsKeysUnsorted.begin (), [&newOrigin](Entry& entry) {
657- if ((entry.matcher .origin == header::DataOrigin{" AOD" }) && (newOrigin != header::DataOrigin{" AOD" })) {
658- entry.matcher = replaceOrigin (entry.matcher , newOrigin);
659- }
660- return entry;
661- });
662-
663667 ic.services ().get <ArrowTableSlicingCacheDef>().setCaches (std::move (bindingsKeys));
664668 ic.services ().get <ArrowTableSlicingCacheDef>().setCachesUnsorted (std::move (bindingsKeysUnsorted));
665669 ic.services ().get <ArrowTableSlicingCacheDef>().setOrigin (newOrigin);
0 commit comments