@@ -1203,13 +1203,16 @@ namespace edm {
12031203 return ;
12041204 }
12051205
1206- status->setRunPrincipal (readRun ());
1207-
1208- RunPrincipal& runPrincipal = *status->runPrincipal ();
12091206 {
1210- SendSourceTerminationSignalIfException sentry (actReg_.get ());
1211- input_->doBeginRun (runPrincipal, &processContext_);
1212- sentry.completedSuccessfully ();
1207+ std::lock_guard<std::recursive_mutex> guard (*(sourceMutex_.get ()));
1208+ status->setRunPrincipal (readRun ());
1209+
1210+ RunPrincipal& runPrincipal = *status->runPrincipal ();
1211+ {
1212+ SendSourceTerminationSignalIfException sentry (actReg_.get ());
1213+ input_->doBeginRun (runPrincipal, &processContext_);
1214+ sentry.completedSuccessfully ();
1215+ }
12131216 }
12141217
12151218 EventSetupImpl const & es = status->eventSetupImpl (esp_->subProcessIndex ());
@@ -1638,15 +1641,18 @@ namespace edm {
16381641 return ;
16391642 }
16401643
1641- status->setLumiPrincipal (readLuminosityBlock (iRunStatus->runPrincipal ()));
1642-
1643- LuminosityBlockPrincipal& lumiPrincipal = *status->lumiPrincipal ();
16441644 {
1645- SendSourceTerminationSignalIfException sentry (actReg_.get ());
1646- input_->doBeginLumi (lumiPrincipal, &processContext_);
1647- sentry.completedSuccessfully ();
1645+ std::lock_guard<std::recursive_mutex> guard (*(sourceMutex_.get ()));
1646+ status->setLumiPrincipal (readLuminosityBlock (iRunStatus->runPrincipal ()));
1647+
1648+ LuminosityBlockPrincipal& lumiPrincipal = *status->lumiPrincipal ();
1649+ {
1650+ SendSourceTerminationSignalIfException sentry (actReg_.get ());
1651+ input_->doBeginLumi (lumiPrincipal, &processContext_);
1652+ sentry.completedSuccessfully ();
1653+ }
16481654 }
1649-
1655+ LuminosityBlockPrincipal& lumiPrincipal = *status-> lumiPrincipal ();
16501656 Service<RandomNumberGenerator> rng;
16511657 if (rng.isAvailable ()) {
16521658 LuminosityBlock lb (lumiPrincipal, ModuleDescription (), nullptr , false );
0 commit comments