Skip to content

Commit 52b4e8f

Browse files
committed
Move module finalization to ModuleRegistry
1 parent 6c93fa0 commit 52b4e8f

File tree

5 files changed

+46
-25
lines changed

5 files changed

+46
-25
lines changed

FWCore/Framework/interface/ModuleRegistry.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,11 @@ namespace edm {
104104
}
105105
}
106106

107+
void finishModulesInitialization(ProductRegistry const& iRegistry,
108+
eventsetup::ESRecordsToProductResolverIndices const& iESIndices,
109+
ProcessBlockHelperBase const& processBlockHelperBase,
110+
std::string const& processName);
111+
107112
private:
108113
std::map<std::string, edm::propagate_const<std::shared_ptr<maker::ModuleHolder>>> labelToModule_;
109114
ModuleTypeResolverMaker const* typeResolverMaker_;

FWCore/Framework/src/ModuleRegistry.cc

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
// user include files
1616
#include "FWCore/Framework/interface/ModuleRegistry.h"
1717
#include "FWCore/Framework/src/ModuleHolderFactory.h"
18+
#include "DataFormats/Provenance/interface/ProductResolverIndexHelper.h"
1819

1920
namespace edm {
2021
std::shared_ptr<maker::ModuleHolder> ModuleRegistry::getModule(
@@ -87,4 +88,32 @@ namespace edm {
8788
throw;
8889
}
8990
}
91+
92+
void ModuleRegistry::finishModulesInitialization(ProductRegistry const& iRegistry,
93+
eventsetup::ESRecordsToProductResolverIndices const& iESIndices,
94+
ProcessBlockHelperBase const& processBlockHelperBase,
95+
std::string const& processName) {
96+
auto const processBlockLookup = iRegistry.productLookup(InProcess);
97+
auto const runLookup = iRegistry.productLookup(InRun);
98+
auto const lumiLookup = iRegistry.productLookup(InLumi);
99+
auto const eventLookup = iRegistry.productLookup(InEvent);
100+
101+
auto processBlockModuleToIndicies = processBlockLookup->indiciesForModulesInProcess(processName);
102+
auto runModuleToIndicies = runLookup->indiciesForModulesInProcess(processName);
103+
auto lumiModuleToIndicies = lumiLookup->indiciesForModulesInProcess(processName);
104+
auto eventModuleToIndicies = eventLookup->indiciesForModulesInProcess(processName);
105+
106+
forAllModuleHolders([&](auto& iHolder) {
107+
iHolder->updateLookup(InProcess, *processBlockLookup);
108+
iHolder->updateLookup(InRun, *runLookup);
109+
iHolder->updateLookup(InLumi, *lumiLookup);
110+
iHolder->updateLookup(InEvent, *eventLookup);
111+
iHolder->updateLookup(iESIndices);
112+
iHolder->resolvePutIndicies(InProcess, processBlockModuleToIndicies);
113+
iHolder->resolvePutIndicies(InRun, runModuleToIndicies);
114+
iHolder->resolvePutIndicies(InLumi, lumiModuleToIndicies);
115+
iHolder->resolvePutIndicies(InEvent, eventModuleToIndicies);
116+
iHolder->selectInputProcessBlocks(iRegistry, processBlockHelperBase);
117+
});
118+
}
90119
} // namespace edm

FWCore/Framework/src/Schedule.cc

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,30 +1154,9 @@ namespace edm {
11541154
eventsetup::ESRecordsToProductResolverIndices const& iESIndices,
11551155
ProcessBlockHelperBase const& processBlockHelperBase,
11561156
ProcessContext const& processContext) {
1157-
auto const processBlockLookup = iRegistry.productLookup(InProcess);
1158-
auto const runLookup = iRegistry.productLookup(InRun);
1159-
auto const lumiLookup = iRegistry.productLookup(InLumi);
1160-
auto const eventLookup = iRegistry.productLookup(InEvent);
11611157
auto const& processName = processContext.processConfiguration()->processName();
11621158

1163-
auto processBlockModuleToIndicies = processBlockLookup->indiciesForModulesInProcess(processName);
1164-
auto runModuleToIndicies = runLookup->indiciesForModulesInProcess(processName);
1165-
auto lumiModuleToIndicies = lumiLookup->indiciesForModulesInProcess(processName);
1166-
auto eventModuleToIndicies = eventLookup->indiciesForModulesInProcess(processName);
1167-
1168-
moduleRegistry_->forAllModuleHolders([&](auto& iHolder) {
1169-
iHolder->updateLookup(InProcess, *processBlockLookup);
1170-
iHolder->updateLookup(InRun, *runLookup);
1171-
iHolder->updateLookup(InLumi, *lumiLookup);
1172-
iHolder->updateLookup(InEvent, *eventLookup);
1173-
iHolder->updateLookup(iESIndices);
1174-
iHolder->resolvePutIndicies(InProcess, processBlockModuleToIndicies);
1175-
iHolder->resolvePutIndicies(InRun, runModuleToIndicies);
1176-
iHolder->resolvePutIndicies(InLumi, lumiModuleToIndicies);
1177-
iHolder->resolvePutIndicies(InEvent, eventModuleToIndicies);
1178-
iHolder->selectInputProcessBlocks(iRegistry, processBlockHelperBase);
1179-
});
1180-
1159+
moduleRegistry_->finishModulesInitialization(iRegistry, iESIndices, processBlockHelperBase, processName);
11811160
globalSchedule_->beginJob(processContext);
11821161
}
11831162

Mixing/Base/src/SecondaryEventProvider.cc

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
#include "FWCore/Framework/interface/ExceptionHelpers.h"
66
#include "FWCore/Framework/interface/PreallocationConfiguration.h"
77
#include "FWCore/Framework/interface/TransitionInfoTypes.h"
8+
#include "FWCore/Framework/interface/SignallingProductRegistryFiller.h"
9+
#include "FWCore/Framework/interface/ModuleRegistry.h"
810
#include "FWCore/ParameterSet/interface/ParameterSet.h"
911
#include "FWCore/Utilities/interface/StreamID.h"
10-
#include "FWCore/Framework/interface/SignallingProductRegistryFiller.h"
12+
#include "FWCore/ServiceRegistry/interface/ProcessContext.h"
1113
#include "oneapi/tbb/task_arena.h"
1214

1315
#include <mutex>
@@ -55,8 +57,9 @@ namespace edm {
5557
SignallingProductRegistryFiller& preg,
5658
std::shared_ptr<ProcessConfiguration> processConfiguration)
5759
: exceptionToActionTable_(new ExceptionToActionTable),
60+
moduleRegistry_(std::make_shared<ModuleRegistry>(nullptr)),
5861
// no type resolver for modules in SecondaryEventProvider for now
59-
workerManager_(std::make_shared<ActivityRegistry>(), *exceptionToActionTable_, nullptr) {
62+
workerManager_(moduleRegistry_, std::make_shared<ActivityRegistry>(), *exceptionToActionTable_) {
6063
std::vector<std::string> shouldBeUsedLabels;
6164
std::set<std::string> unscheduledLabels;
6265
const PreallocationConfiguration preallocConfig;
@@ -74,7 +77,11 @@ namespace edm {
7477
eventsetup::ESRecordsToProductResolverIndices const& iIndices,
7578
GlobalContext const& globalContext) {
7679
ProcessBlockHelper dummyProcessBlockHelper;
77-
workerManager_.beginJob(iRegistry, iIndices, dummyProcessBlockHelper, globalContext);
80+
moduleRegistry_->finishModulesInitialization(iRegistry,
81+
iIndices,
82+
dummyProcessBlockHelper,
83+
globalContext.processContext()->processConfiguration()->processName());
84+
workerManager_.beginJob(globalContext);
7885
}
7986

8087
//NOTE: When the Stream interfaces are propagated to the modules, this code must be updated

Mixing/Base/src/SecondaryEventProvider.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ namespace edm {
5050

5151
private:
5252
std::unique_ptr<ExceptionToActionTable> exceptionToActionTable_;
53+
std::shared_ptr<ModuleRegistry> moduleRegistry_;
5354
WorkerManager workerManager_;
5455
};
5556
} // namespace edm

0 commit comments

Comments
 (0)