From 27c49ad338d4327d9f8cbad7099cd3f7860378f7 Mon Sep 17 00:00:00 2001 From: "W. David Dagenhart" Date: Fri, 26 Apr 2024 22:15:52 +0200 Subject: [PATCH] Improve behavior after exception in begin/end run transitions --- FWCore/Framework/interface/EventProcessor.h | 5 +- FWCore/Framework/interface/GlobalSchedule.h | 9 +- FWCore/Framework/interface/Path.h | 20 +- FWCore/Framework/interface/StreamSchedule.h | 164 +++++------- .../interface/UnscheduledCallProducer.h | 45 +--- FWCore/Framework/interface/WorkerInPath.h | 20 +- FWCore/Framework/interface/WorkerManager.h | 46 ++-- FWCore/Framework/interface/maker/Worker.h | 32 ++- FWCore/Framework/src/EventProcessor.cc | 54 ++-- FWCore/Framework/src/Path.cc | 10 +- FWCore/Framework/src/Schedule.cc | 8 +- FWCore/Framework/src/StreamSchedule.cc | 123 ++++++--- FWCore/Framework/src/WorkerManager.cc | 8 +- .../Framework/test/global_filter_t.cppunit.cc | 7 + .../test/global_producer_t.cppunit.cc | 6 + .../test/limited_filter_t.cppunit.cc | 6 + .../test/limited_producer_t.cppunit.cc | 6 + .../Framework/test/stream_filter_t.cppunit.cc | 6 + .../test/stream_producer_t.cppunit.cc | 6 + .../test_deepCall_unscheduled.log | 8 - .../test_onPath_unscheduled.log | 24 +- .../plugins/ExceptionThrowingProducer.cc | 221 +++++++++++++++- FWCore/Integration/plugins/TestServiceOne.cc | 227 ++++++++++++++-- FWCore/Integration/plugins/TestServiceOne.h | 72 ++++- FWCore/Integration/plugins/TestServiceTwo.cc | 227 ++++++++++++++-- FWCore/Integration/plugins/TestServiceTwo.h | 72 ++++- FWCore/Integration/test/run_TestGetBy.sh | 5 +- .../testFrameworkExceptionHandling_cfg.py | 18 +- .../test/unit_test_outputs/testGetBy1.log | 56 ++-- .../test/unit_test_outputs/testGetBy2.log | 24 +- .../testSubProcess.grep2.txt | 248 +++++++----------- .../interface/ServiceRegistryfwd.h | 3 + Mixing/Base/src/SecondaryEventProvider.cc | 1 + 33 files changed, 1230 insertions(+), 557 deletions(-) diff --git a/FWCore/Framework/interface/EventProcessor.h b/FWCore/Framework/interface/EventProcessor.h index 96cec3267ac13..cb54d52085dd0 100644 --- a/FWCore/Framework/interface/EventProcessor.h +++ b/FWCore/Framework/interface/EventProcessor.h @@ -212,10 +212,7 @@ namespace edm { InputSource::ItemType processRuns(); void beginRunAsync(IOVSyncValue const&, WaitingTaskHolder); - void streamBeginRunAsync(unsigned int iStream, - std::shared_ptr, - bool precedingTasksSucceeded, - WaitingTaskHolder); + void streamBeginRunAsync(unsigned int iStream, std::shared_ptr, WaitingTaskHolder) noexcept; void releaseBeginRunResources(unsigned int iStream); void endRunAsync(std::shared_ptr, WaitingTaskHolder); void handleEndRunExceptions(std::exception_ptr, WaitingTaskHolder const&); diff --git a/FWCore/Framework/interface/GlobalSchedule.h b/FWCore/Framework/interface/GlobalSchedule.h index 09f3db6d57cfd..f87b1f03789cb 100644 --- a/FWCore/Framework/interface/GlobalSchedule.h +++ b/FWCore/Framework/interface/GlobalSchedule.h @@ -1,9 +1,6 @@ #ifndef FWCore_Framework_GlobalSchedule_h #define FWCore_Framework_GlobalSchedule_h -/* -*/ - #include "DataFormats/Provenance/interface/ModuleDescription.h" #include "FWCore/Common/interface/FWCoreCommonFwd.h" #include "FWCore/Framework/interface/EventPrincipal.h" @@ -103,6 +100,9 @@ namespace edm { AllWorkers const& allWorkers() const { return workerManagers_[0].allWorkers(); } private: + /// returns the action table + ExceptionToActionTable const& actionTable() const { return workerManagers_[0].actionTable(); } + template void preScheduleSignal(GlobalContext const*, ServiceToken const&); @@ -114,9 +114,6 @@ namespace edm { bool cleaningUpAfterException, std::exception_ptr&); - /// returns the action table - ExceptionToActionTable const& actionTable() const { return workerManagers_[0].actionTable(); } - std::vector workerManagers_; std::shared_ptr actReg_; // We do not use propagate_const because the registry itself is mutable. std::vector> extraWorkers_; diff --git a/FWCore/Framework/interface/Path.h b/FWCore/Framework/interface/Path.h index 639ea82502ccc..6e2e2cbc48d41 100644 --- a/FWCore/Framework/interface/Path.h +++ b/FWCore/Framework/interface/Path.h @@ -59,14 +59,7 @@ namespace edm { Path& operator=(Path const&) = delete; - template - void runAllModulesAsync(WaitingTaskHolder, - typename T::TransitionInfoType const&, - ServiceToken const&, - StreamID const&, - typename T::Context const*); - - void processOneOccurrenceAsync( + void processEventUsingPathAsync( WaitingTaskHolder, EventTransitionInfo const&, ServiceToken const&, StreamID const&, StreamContext const*); int bitPosition() const { return bitpos_; } @@ -178,17 +171,6 @@ namespace edm { }; } // namespace - template - void Path::runAllModulesAsync(WaitingTaskHolder task, - typename T::TransitionInfoType const& info, - ServiceToken const& token, - StreamID const& streamID, - typename T::Context const* context) { - for (auto& worker : workers_) { - worker.runWorkerAsync(task, info, token, streamID, context); - } - } - } // namespace edm #endif diff --git a/FWCore/Framework/interface/StreamSchedule.h b/FWCore/Framework/interface/StreamSchedule.h index 79c1108e7e46e..4ed8401bd72af 100644 --- a/FWCore/Framework/interface/StreamSchedule.h +++ b/FWCore/Framework/interface/StreamSchedule.h @@ -75,6 +75,7 @@ #include "FWCore/MessageLogger/interface/JobReport.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/ServiceRegistry/interface/Service.h" +#include "FWCore/ServiceRegistry/interface/ServiceRegistryfwd.h" #include "FWCore/ServiceRegistry/interface/StreamContext.h" #include "FWCore/Concurrency/interface/FunctorTask.h" #include "FWCore/Concurrency/interface/WaitingTaskHolder.h" @@ -99,12 +100,10 @@ namespace edm { - class ActivityRegistry; class BranchIDListHelper; class ExceptionCollector; class ExceptionToActionTable; class OutputModuleCommunicator; - class ProcessContext; class UnscheduledCallProducer; class WorkerInPath; class ModuleRegistry; @@ -120,38 +119,6 @@ namespace edm { class TriggerNamesService; } - namespace { - template - class StreamScheduleSignalSentry { - public: - StreamScheduleSignalSentry(ActivityRegistry* a, typename T::Context const* context) - : a_(a), context_(context), allowThrow_(false) { - if (a_) - T::preScheduleSignal(a_, context_); - } - ~StreamScheduleSignalSentry() noexcept(false) { - // Caught exception is rethrown (when allowed) - CMS_SA_ALLOW try { - if (a_) { - T::postScheduleSignal(a_, context_); - } - } catch (...) { - if (allowThrow_) { - throw; - } - } - } - - void allowThrow() { allowThrow_ = true; } - - private: - // We own none of these resources. - ActivityRegistry* a_; // We do not use propagate_const because the registry itself is mutable. - typename T::Context const* context_; - bool allowThrow_; - }; - } // namespace - class StreamSchedule { public: typedef std::vector vstring; @@ -254,9 +221,13 @@ namespace edm { edm::ProductRegistry const& preg); /// returns the collection of pointers to workers - AllWorkers const& allWorkers() const { return workerManager_.allWorkers(); } + AllWorkers const& allWorkersBeginEnd() const { return workerManagerBeginEnd_.allWorkers(); } + AllWorkers const& allWorkersRuns() const { return workerManagerRuns_.allWorkers(); } + AllWorkers const& allWorkersLumisAndEvents() const { return workerManagerLumisAndEvents_.allWorkers(); } - AllWorkers const& unscheduledWorkers() const { return workerManager_.unscheduledWorkers(); } + AllWorkers const& unscheduledWorkersLumisAndEvents() const { + return workerManagerLumisAndEvents_.unscheduledWorkers(); + } unsigned int numberOfUnscheduledModules() const { return number_of_unscheduled_modules_; } StreamContext const& context() const { return streamContext_; } @@ -269,28 +240,8 @@ namespace edm { }; private: - //Sentry class to only send a signal if an - // exception occurs. An exception is identified - // by the destructor being called without first - // calling completedSuccessfully(). - class SendTerminationSignalIfException { - public: - SendTerminationSignalIfException(edm::ActivityRegistry* iReg, edm::StreamContext const* iContext) - : reg_(iReg), context_(iContext) {} - ~SendTerminationSignalIfException() { - if (reg_) { - reg_->preStreamEarlyTerminationSignal_(*context_, TerminationOrigin::ExceptionFromThisContext); - } - } - void completedSuccessfully() { reg_ = nullptr; } - - private: - edm::ActivityRegistry* reg_; // We do not use propagate_const because the registry itself is mutable. - StreamContext const* context_; - }; - /// returns the action table - ExceptionToActionTable const& actionTable() const { return workerManager_.actionTable(); } + ExceptionToActionTable const& actionTable() const { return workerManagerLumisAndEvents_.actionTable(); } void resetAll(); @@ -351,7 +302,20 @@ namespace edm { std::vector>>& endPathStatusInserters, ExceptionToActionTable const& actions); - WorkerManager workerManager_; + template + void preScheduleSignal(StreamContext const*) const; + + template + void postScheduleSignal(StreamContext const*, ServiceWeakToken const&, std::exception_ptr&) const noexcept; + + void handleException(StreamContext const&, + ServiceWeakToken const&, + bool cleaningUpAfterException, + std::exception_ptr&) const noexcept; + + WorkerManager workerManagerBeginEnd_; + WorkerManager workerManagerRuns_; + WorkerManager workerManagerLumisAndEvents_; std::shared_ptr actReg_; // We do not use propagate_const because the registry itself is mutable. edm::propagate_const results_; @@ -409,37 +373,9 @@ namespace edm { std::exception_ptr excpt; if (iPtr) { excpt = *iPtr; - //add context information to the exception and print message - try { - convertException::wrap([&]() { std::rethrow_exception(excpt); }); - } catch (cms::Exception& ex) { - //TODO: should add the transition type info - std::ostringstream ost; - if (ex.context().empty()) { - ost << "Processing " << T::transitionName() << " " << id; - } - ServiceRegistry::Operate op(weakToken.lock()); - addContextAndPrintException(ost.str().c_str(), ex, cleaningUpAfterException); - excpt = std::current_exception(); - } - - // We are already handling an earlier exception, so ignore it - // if this signal results in another exception being thrown. - CMS_SA_ALLOW try { - ServiceRegistry::Operate op(weakToken.lock()); - actReg_->preStreamEarlyTerminationSignal_(streamContext_, TerminationOrigin::ExceptionFromThisContext); - } catch (...) { - } - } - // Caught exception is propagated via WaitingTaskHolder - CMS_SA_ALLOW try { - ServiceRegistry::Operate op(weakToken.lock()); - T::postScheduleSignal(actReg_.get(), &streamContext_); - } catch (...) { - if (not excpt) { - excpt = std::current_exception(); - } + handleException(streamContext_, weakToken, cleaningUpAfterException, excpt); } + postScheduleSignal(&streamContext_, weakToken, excpt); iHolder.doneWaiting(excpt); }); @@ -448,24 +384,19 @@ namespace edm { auto token = weakToken.lock(); ServiceRegistry::Operate op(token); // Caught exception is propagated via WaitingTaskHolder + WorkerManager* workerManager = &workerManagerRuns_; + if (T::branchType_ == InLumi) { + workerManager = &workerManagerLumisAndEvents_; + } CMS_SA_ALLOW try { - T::preScheduleSignal(actReg_.get(), &streamContext_); - - workerManager_.resetAll(); + preScheduleSignal(&streamContext_); + workerManager->resetAll(); } catch (...) { h.doneWaiting(std::current_exception()); return; } - for (auto& p : end_paths_) { - p.runAllModulesAsync(h, info, token, streamID_, &streamContext_); - } - - for (auto& p : trig_paths_) { - p.runAllModulesAsync(h, info, token, streamID_, &streamContext_); - } - - workerManager_.processOneOccurrenceAsync(h, info, token, streamID_, &streamContext_, &streamContext_); + workerManager->processOneOccurrenceAsync(h, info, token, streamID_, &streamContext_, &streamContext_); }); if (streamID_.value() == 0) { @@ -484,6 +415,39 @@ namespace edm { }); } } + + template + void StreamSchedule::preScheduleSignal(StreamContext const* streamContext) const { + try { + convertException::wrap([this, streamContext]() { T::preScheduleSignal(actReg_.get(), streamContext); }); + } catch (cms::Exception& ex) { + std::ostringstream ost; + ex.addContext("Handling pre signal, likely in a service function"); + exceptionContext(ost, *streamContext); + ex.addContext(ost.str()); + throw; + } + } + + template + void StreamSchedule::postScheduleSignal(StreamContext const* streamContext, + ServiceWeakToken const& weakToken, + std::exception_ptr& excpt) const noexcept { + try { + convertException::wrap([this, &weakToken, streamContext]() { + ServiceRegistry::Operate op(weakToken.lock()); + T::postScheduleSignal(actReg_.get(), streamContext); + }); + } catch (cms::Exception& ex) { + if (not excpt) { + std::ostringstream ost; + ex.addContext("Handling post signal, likely in a service function"); + exceptionContext(ost, *streamContext); + ex.addContext(ost.str()); + excpt = std::current_exception(); + } + } + } } // namespace edm #endif diff --git a/FWCore/Framework/interface/UnscheduledCallProducer.h b/FWCore/Framework/interface/UnscheduledCallProducer.h index e6fe14fa58088..7166e8050ef55 100644 --- a/FWCore/Framework/interface/UnscheduledCallProducer.h +++ b/FWCore/Framework/interface/UnscheduledCallProducer.h @@ -15,25 +15,22 @@ */ -#include "FWCore/Framework/interface/BranchActionType.h" -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/OccurrenceTraits.h" +#include "FWCore/Concurrency/interface/WaitingTaskHolder.h" #include "FWCore/Framework/interface/maker/Worker.h" #include "FWCore/Framework/interface/UnscheduledAuxiliary.h" -#include "FWCore/Concurrency/interface/WaitingTaskHolder.h" -#include "FWCore/ServiceRegistry/interface/ParentContext.h" #include "FWCore/ServiceRegistry/interface/ActivityRegistry.h" +#include "FWCore/ServiceRegistry/interface/ServiceRegistryfwd.h" +#include "FWCore/Utilities/interface/Signal.h" +#include "FWCore/Utilities/interface/StreamID.h" -#include -#include -#include -#include +#include #include +#include +#include namespace edm { class EventTransitionInfo; - class ModuleCallingContext; class UnscheduledCallProducer { public: @@ -67,28 +64,6 @@ namespace edm { const_iterator end() const { return unscheduledWorkers_.end(); } worker_container const& workers() const { return unscheduledWorkers_; } - template - void runNowAsync(WaitingTaskHolder task, - typename T::TransitionInfoType const& info, - ServiceToken const& token, - StreamID streamID, - typename T::Context const* topContext, - U const* context) const noexcept { - //do nothing for event since we will run when requested - if (!T::isEvent_) { - for (auto worker : unscheduledWorkers_) { - ParentContext parentContext(context); - - // We do not need to run prefetching here because this only handles - // stream transitions for runs and lumis. There are no products put - // into the runs or lumis in stream transitions, so there can be - // no data dependencies which require prefetching. Prefetching is - // needed for global transitions, but they are run elsewhere. - worker->doWorkNoPrefetchingAsync(task, info, token, streamID, parentContext, topContext); - } - } - } - template void runAccumulatorsAsync(WaitingTaskHolder task, typename T::TransitionInfoType const& info, @@ -102,12 +77,6 @@ namespace edm { } private: - template - void addContextToException(cms::Exception& ex, Worker const* worker, ID const& id) const { - std::ostringstream ost; - ost << "Processing " << T::transitionName() << " " << id; - ex.addContext(ost.str()); - } worker_container unscheduledWorkers_; worker_container accumulatorWorkers_; UnscheduledAuxiliary aux_; diff --git a/FWCore/Framework/interface/WorkerInPath.h b/FWCore/Framework/interface/WorkerInPath.h index 114f11dd1e7c7..247feb954d3a4 100644 --- a/FWCore/Framework/interface/WorkerInPath.h +++ b/FWCore/Framework/interface/WorkerInPath.h @@ -112,23 +112,11 @@ namespace edm { ServiceToken const& token, StreamID streamID, typename T::Context const* context) noexcept { - if constexpr (T::isEvent_) { - ++timesVisited_; - } + static_assert(T::isEvent_); - if constexpr (T::isEvent_) { - ParentContext parentContext(&placeInPathContext_); - worker_->doWorkAsync(std::move(iTask), info, token, streamID, parentContext, context); - } else { - ParentContext parentContext(context); - - // We do not need to run prefetching here because this only handles - // stream transitions for runs and lumis. There are no products put - // into the runs or lumis in stream transitions, so there can be - // no data dependencies which require prefetching. Prefetching is - // needed for global transitions, but they are run elsewhere. - worker_->doWorkNoPrefetchingAsync(std::move(iTask), info, token, streamID, parentContext, context); - } + ++timesVisited_; + ParentContext parentContext(&placeInPathContext_); + worker_->doWorkAsync(std::move(iTask), info, token, streamID, parentContext, context); } } // namespace edm diff --git a/FWCore/Framework/interface/WorkerManager.h b/FWCore/Framework/interface/WorkerManager.h index 2f18aee4567a1..1462902ceace2 100644 --- a/FWCore/Framework/interface/WorkerManager.h +++ b/FWCore/Framework/interface/WorkerManager.h @@ -1,39 +1,31 @@ #ifndef FWCore_Framework_WorkerManager_h #define FWCore_Framework_WorkerManager_h -/* - -*/ - #include "FWCore/Common/interface/FWCoreCommonFwd.h" -#include "FWCore/Framework/interface/ExceptionHelpers.h" #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/UnscheduledCallProducer.h" -#include "FWCore/Framework/interface/maker/Worker.h" #include "FWCore/Framework/interface/WorkerRegistry.h" -#include "FWCore/ServiceRegistry/interface/ServiceRegistry.h" +#include "FWCore/ServiceRegistry/interface/ServiceRegistryfwd.h" #include "FWCore/Concurrency/interface/WaitingTaskHolder.h" -#include "FWCore/Utilities/interface/ConvertException.h" -#include "FWCore/Utilities/interface/Exception.h" -#include "FWCore/Utilities/interface/get_underlying_safe.h" +#include "FWCore/Utilities/interface/StreamID.h" #include - #include #include +#include #include namespace edm { - class EventTransitionInfo; class ExceptionCollector; - class StreamID; - class StreamContext; + class ExceptionToActionTable; class ModuleRegistry; class ModuleTypeResolverMaker; class PreallocationConfiguration; + class Worker; namespace eventsetup { class ESRecordsToProductResolverIndices; } + class WorkerManager { public: typedef std::vector AllWorkers; @@ -63,7 +55,7 @@ namespace edm { ServiceToken const&, StreamID, typename T::Context const* topContext, - U const* context); + U const* context) noexcept; template void processAccumulatorsAsync(WaitingTaskHolder, @@ -114,9 +106,27 @@ namespace edm { ServiceToken const& token, StreamID streamID, typename T::Context const* topContext, - U const* context) { - //make sure the unscheduled items see this run or lumi transition - unscheduled_.runNowAsync(std::move(task), info, token, streamID, topContext, context); + U const* context) noexcept { + static_assert(!T::isEvent_); + + // Spawn them in reverse order. At least in the single threaded case that makes + // them run in forward order (and more likely to with multiple threads). + for (auto it = allWorkers_.rbegin(), itEnd = allWorkers_.rend(); it != itEnd; ++it) { + Worker* worker = *it; + + ParentContext parentContext(context); + + // We do not need to run prefetching here because this only handles + // stream begin/end transitions for runs and lumis. There are no products + // put into the runs or lumis in stream transitions, so there can be + // no data dependencies which require prefetching. Prefetching is + // needed for global transitions, but they are run elsewhere. + // (One exception, the SecondaryEventProvider (used for mixing) sends + // global begin/end run/lumi transitions through here. They shouldn't + // need prefetching either and for some years nothing has been using + // that part of the code anyway...) + worker->doWorkNoPrefetchingAsync(task, info, token, streamID, parentContext, topContext); + } } template diff --git a/FWCore/Framework/interface/maker/Worker.h b/FWCore/Framework/interface/maker/Worker.h index a54b4f7bf0f1e..9f438164e1f69 100644 --- a/FWCore/Framework/interface/maker/Worker.h +++ b/FWCore/Framework/interface/maker/Worker.h @@ -732,6 +732,7 @@ namespace edm { auto returnValue = iWorker->implDoBegin(info, mcc); // If postModuleSignal() throws, the exception will propagate to the framework cpp.postModuleSignal(); + iWorker->beginSucceeded_ = true; return returnValue; } static void esPrefetchAsync(Worker* worker, @@ -760,6 +761,7 @@ namespace edm { cpp.preModuleSignal(); auto returnValue = iWorker->implDoStreamBegin(id, info, mcc); cpp.postModuleSignal(); + iWorker->beginSucceeded_ = true; return returnValue; } static void esPrefetchAsync(Worker* worker, @@ -784,11 +786,16 @@ namespace edm { ActivityRegistry* actReg, ModuleCallingContext const* mcc, Arg::Context const* context) { - ModuleSignalSentry cpp(actReg, context, mcc); - cpp.preModuleSignal(); - auto returnValue = iWorker->implDoEnd(info, mcc); - cpp.postModuleSignal(); - return returnValue; + if (iWorker->beginSucceeded_) { + iWorker->beginSucceeded_ = false; + + ModuleSignalSentry cpp(actReg, context, mcc); + cpp.preModuleSignal(); + auto returnValue = iWorker->implDoEnd(info, mcc); + cpp.postModuleSignal(); + return returnValue; + } + return true; } static void esPrefetchAsync(Worker* worker, WaitingTaskHolder waitingTask, @@ -812,11 +819,16 @@ namespace edm { ActivityRegistry* actReg, ModuleCallingContext const* mcc, Arg::Context const* context) { - ModuleSignalSentry cpp(actReg, context, mcc); - cpp.preModuleSignal(); - auto returnValue = iWorker->implDoStreamEnd(id, info, mcc); - cpp.postModuleSignal(); - return returnValue; + if (iWorker->beginSucceeded_) { + iWorker->beginSucceeded_ = false; + + ModuleSignalSentry cpp(actReg, context, mcc); + cpp.preModuleSignal(); + auto returnValue = iWorker->implDoStreamEnd(id, info, mcc); + cpp.postModuleSignal(); + return returnValue; + } + return true; } static void esPrefetchAsync(Worker* worker, WaitingTaskHolder waitingTask, diff --git a/FWCore/Framework/src/EventProcessor.cc b/FWCore/Framework/src/EventProcessor.cc index 0b4e1b93895f6..40e24b05f4ab2 100644 --- a/FWCore/Framework/src/EventProcessor.cc +++ b/FWCore/Framework/src/EventProcessor.cc @@ -1305,11 +1305,6 @@ namespace edm { using Traits = OccurrenceTraits; beginGlobalTransitionAsync( nextTask, *schedule_, transitionInfo, serviceToken_, subProcesses_); - }) | then([status](auto nextTask) mutable { - if (status->stopBeforeProcessingRun()) { - return; - } - status->globalBeginDidSucceed(); }) | ifThen(looper_, [this, status, &es](auto nextTask) { if (status->stopBeforeProcessingRun()) { return; @@ -1323,11 +1318,11 @@ namespace edm { ServiceRegistry::Operate operateLooper(serviceToken_); looper_->doBeginRun(*status->runPrincipal(), es, &processContext_); }) | then([this, status](std::exception_ptr const* iException, auto holder) mutable { - bool precedingTasksSucceeded = true; if (iException) { - precedingTasksSucceeded = false; WaitingTaskHolder copyHolder(holder); copyHolder.doneWaiting(*iException); + } else { + status->globalBeginDidSucceed(); } if (status->stopBeforeProcessingRun()) { @@ -1365,27 +1360,23 @@ namespace edm { PauseQueueSentry pauseQueueSentry(streamQueuesInserter_); CMS_SA_ALLOW try { - streamQueuesInserter_.push( - *holder.group(), [this, status, precedingTasksSucceeded, holder]() mutable { - for (unsigned int i = 0; i < preallocations_.numberOfStreams(); ++i) { - CMS_SA_ALLOW try { - streamQueues_[i].push( - *holder.group(), - [this, i, status, precedingTasksSucceeded, holder]() mutable { - streamBeginRunAsync( - i, std::move(status), precedingTasksSucceeded, std::move(holder)); - }); - } catch (...) { - if (status->streamFinishedBeginRun()) { - WaitingTaskHolder copyHolder(holder); - copyHolder.doneWaiting(std::current_exception()); - status->resetBeginResources(); - queueWhichWaitsForIOVsToFinish_.resume(); - exceptionRunStatus_ = status; - } - } + streamQueuesInserter_.push(*holder.group(), [this, status, holder]() mutable { + for (unsigned int i = 0; i < preallocations_.numberOfStreams(); ++i) { + CMS_SA_ALLOW try { + streamQueues_[i].push(*holder.group(), [this, i, status, holder]() mutable { + streamBeginRunAsync(i, std::move(status), std::move(holder)); + }); + } catch (...) { + if (status->streamFinishedBeginRun()) { + WaitingTaskHolder copyHolder(holder); + copyHolder.doneWaiting(std::current_exception()); + status->resetBeginResources(); + queueWhichWaitsForIOVsToFinish_.resume(); + exceptionRunStatus_ = status; } - }); + } + } + }); } catch (...) { WaitingTaskHolder copyHolder(holder); copyHolder.doneWaiting(std::current_exception()); @@ -1419,8 +1410,7 @@ namespace edm { void EventProcessor::streamBeginRunAsync(unsigned int iStream, std::shared_ptr status, - bool precedingTasksSucceeded, - WaitingTaskHolder iHolder) { + WaitingTaskHolder iHolder) noexcept { // These shouldn't throw streamQueues_[iStream].pause(); ++streamRunActive_; @@ -1428,9 +1418,9 @@ namespace edm { CMS_SA_ALLOW try { using namespace edm::waiting_task::chain; - chain::first([this, iStream, precedingTasksSucceeded](auto nextTask) { - if (precedingTasksSucceeded) { - RunProcessingStatus& rs = *streamRunStatus_[iStream]; + chain::first([this, iStream](auto nextTask) { + RunProcessingStatus& rs = *streamRunStatus_[iStream]; + if (rs.didGlobalBeginSucceed()) { RunTransitionInfo transitionInfo( *rs.runPrincipal(), rs.eventSetupImpl(esp_->subProcessIndex()), &rs.eventSetupImpls()); using Traits = OccurrenceTraits; diff --git a/FWCore/Framework/src/Path.cc b/FWCore/Framework/src/Path.cc index 31726e0055a2b..ca4a6b427336d 100644 --- a/FWCore/Framework/src/Path.cc +++ b/FWCore/Framework/src/Path.cc @@ -200,11 +200,11 @@ namespace edm { pathStatusInserterWorker_ = pathStatusInserterWorker; } - void Path::processOneOccurrenceAsync(WaitingTaskHolder iTask, - EventTransitionInfo const& iInfo, - ServiceToken const& iToken, - StreamID const& iStreamID, - StreamContext const* iStreamContext) { + void Path::processEventUsingPathAsync(WaitingTaskHolder iTask, + EventTransitionInfo const& iInfo, + ServiceToken const& iToken, + StreamID const& iStreamID, + StreamContext const* iStreamContext) { waitingTasks_.reset(); modulesToRun_ = workers_.size(); ++timesRun_; diff --git a/FWCore/Framework/src/Schedule.cc b/FWCore/Framework/src/Schedule.cc index da81825479246..d2f84f203e196 100644 --- a/FWCore/Framework/src/Schedule.cc +++ b/FWCore/Framework/src/Schedule.cc @@ -543,8 +543,8 @@ namespace edm { // unknown to the ModuleRegistry const std::string kTriggerResults("TriggerResults"); std::vector modulesToUse; - modulesToUse.reserve(streamSchedules_[0]->allWorkers().size()); - for (auto const& worker : streamSchedules_[0]->allWorkers()) { + modulesToUse.reserve(streamSchedules_[0]->allWorkersLumisAndEvents().size()); + for (auto const& worker : streamSchedules_[0]->allWorkersLumisAndEvents()) { if (worker->description()->moduleLabel() != kTriggerResults) { modulesToUse.push_back(worker->description()->moduleLabel()); } @@ -608,7 +608,7 @@ namespace edm { // At this point all BranchDescriptions are created. Mark now the // ones of unscheduled workers to be on-demand. { - auto const& unsched = streamSchedules_[0]->unscheduledWorkers(); + auto const& unsched = streamSchedules_[0]->unscheduledWorkersLumisAndEvents(); if (not unsched.empty()) { std::set unscheduledModules; std::transform(unsched.begin(), @@ -643,7 +643,7 @@ namespace edm { branchIDListHelper.updateFromRegistry(preg); - for (auto const& worker : streamSchedules_[0]->allWorkers()) { + for (auto const& worker : streamSchedules_[0]->allWorkersLumisAndEvents()) { worker->registerThinnedAssociations(preg, thinnedAssociationsHelper); } diff --git a/FWCore/Framework/src/StreamSchedule.cc b/FWCore/Framework/src/StreamSchedule.cc index d1a4d1df2a393..36c4efc143243 100644 --- a/FWCore/Framework/src/StreamSchedule.cc +++ b/FWCore/Framework/src/StreamSchedule.cc @@ -244,7 +244,7 @@ namespace edm { ProductRegistry& preg, PreallocationConfiguration const* prealloc, std::shared_ptr processConfiguration, - WorkerManager& workerManager, + WorkerManager& workerManagerLumisAndEvents, std::vector const& trigPathNames) { std::unordered_set allConditionalMods; for (auto const& pathName : trigPathNames) { @@ -261,7 +261,7 @@ namespace edm { for (auto const& cond : allConditionalMods) { //force the creation of the conditional modules so alias check can work - (void)getWorker(cond, proc_pset, workerManager, preg, prealloc, processConfiguration); + (void)getWorker(cond, proc_pset, workerManagerLumisAndEvents, preg, prealloc, processConfiguration); } fillAliasMap(proc_pset, allConditionalMods); @@ -360,7 +360,9 @@ namespace edm { std::shared_ptr processConfiguration, StreamID streamID, ProcessContext const* processContext) - : workerManager_(modReg, areg, actions), + : workerManagerBeginEnd_(modReg, areg, actions), + workerManagerRuns_(modReg, areg, actions), + workerManagerLumisAndEvents_(modReg, areg, actions), actReg_(areg), results_(new HLTGlobalStatus(tns.getTrigPaths().size())), results_inserter_(), @@ -376,7 +378,7 @@ namespace edm { std::vector const& endPathNames = tns.getEndPaths(); ConditionalTaskHelper conditionalTaskHelper( - proc_pset, preg, &prealloc, processConfiguration, workerManager_, pathNames); + proc_pset, preg, &prealloc, processConfiguration, workerManagerLumisAndEvents_, pathNames); std::unordered_set conditionalModules; int trig_bitpos = 0; @@ -424,7 +426,7 @@ namespace edm { //See if all modules were used std::set usedWorkerLabels; - for (auto const& worker : allWorkers()) { + for (auto const& worker : allWorkersLumisAndEvents()) { usedWorkerLabels.insert(worker->description()->moduleLabel()); } std::vector modulesInConfig(proc_pset.getParameter>("@all_modules")); @@ -447,7 +449,7 @@ namespace edm { ParameterSet* modulePSet(proc_pset.getPSetForUpdate(label, isTracked)); assert(isTracked); assert(modulePSet != nullptr); - workerManager_.addToUnscheduledWorkers( + workerManagerLumisAndEvents_.addToUnscheduledWorkers( *modulePSet, preg, &prealloc, processConfiguration, label, unscheduledLabels, shouldBeUsedLabels); } if (!shouldBeUsedLabels.empty()) { @@ -488,6 +490,27 @@ namespace edm { } } } + + for (auto const& worker : allWorkersLumisAndEvents()) { + std::string const& moduleLabel = worker->description()->moduleLabel(); + + // The new worker pointers will be null for the TriggerResultsInserter, PathStatusInserter, and + // EndPathStatusInserter because there are no ParameterSets for those in the configuration. + // We could add special code to create workers for those, but instead we skip them because they + // do not have beginStream, endStream, or run/lumi begin/end stream transition functions. + + Worker* workerBeginEnd = + getWorker(moduleLabel, proc_pset, workerManagerBeginEnd_, preg, &prealloc, processConfiguration); + if (workerBeginEnd) { + workerManagerBeginEnd_.addToAllWorkers(workerBeginEnd); + } + + Worker* workerRuns = getWorker(moduleLabel, proc_pset, workerManagerRuns_, preg, &prealloc, processConfiguration); + if (workerRuns) { + workerManagerRuns_.addToAllWorkers(workerRuns); + } + } + } // StreamSchedule::StreamSchedule void StreamSchedule::initializeEarlyDelete(ModuleRegistry& modReg, @@ -530,7 +553,7 @@ namespace edm { } std::unordered_set modulesToExclude(modulesToSkip.begin(), modulesToSkip.end()); - for (auto w : allWorkers()) { + for (auto w : allWorkersLumisAndEvents()) { if (modulesToExclude.end() != modulesToExclude.find(w->description()->moduleLabel())) { continue; } @@ -757,8 +780,8 @@ namespace edm { } } if (productFromConditionalModule) { - auto condWorker = - getWorker(productModuleLabel, proc_pset, workerManager_, preg, prealloc, processConfiguration); + auto condWorker = getWorker( + productModuleLabel, proc_pset, workerManagerLumisAndEvents_, preg, prealloc, processConfiguration); assert(condWorker); conditionalModules.erase(itFound); @@ -835,7 +858,8 @@ namespace edm { moduleLabel.erase(0, 1); } - Worker* worker = getWorker(moduleLabel, proc_pset, workerManager_, preg, prealloc, processConfiguration); + Worker* worker = + getWorker(moduleLabel, proc_pset, workerManagerLumisAndEvents_, preg, prealloc, processConfiguration); if (worker == nullptr) { std::string pathType("endpath"); if (!search_all(endPathNames, pathName)) { @@ -958,33 +982,45 @@ namespace edm { } } - void StreamSchedule::beginStream() { workerManager_.beginStream(streamID_, streamContext_); } + void StreamSchedule::beginStream() { workerManagerBeginEnd_.beginStream(streamID_, streamContext_); } - void StreamSchedule::endStream() { workerManager_.endStream(streamID_, streamContext_); } + void StreamSchedule::endStream() { workerManagerBeginEnd_.endStream(streamID_, streamContext_); } void StreamSchedule::replaceModule(maker::ModuleHolder* iMod, std::string const& iLabel) { - Worker* found = nullptr; - for (auto const& worker : allWorkers()) { + for (auto const& worker : allWorkersBeginEnd()) { if (worker->description()->moduleLabel() == iLabel) { - found = worker; + iMod->replaceModuleFor(worker); + worker->beginStream(streamID_, streamContext_); break; } } - if (nullptr == found) { - return; + + for (auto const& worker : allWorkersRuns()) { + if (worker->description()->moduleLabel() == iLabel) { + iMod->replaceModuleFor(worker); + break; + } } - iMod->replaceModuleFor(found); - found->beginStream(streamID_, streamContext_); + for (auto const& worker : allWorkersLumisAndEvents()) { + if (worker->description()->moduleLabel() == iLabel) { + iMod->replaceModuleFor(worker); + break; + } + } } - void StreamSchedule::deleteModule(std::string const& iLabel) { workerManager_.deleteModuleIfExists(iLabel); } + void StreamSchedule::deleteModule(std::string const& iLabel) { + workerManagerBeginEnd_.deleteModuleIfExists(iLabel); + workerManagerRuns_.deleteModuleIfExists(iLabel); + workerManagerLumisAndEvents_.deleteModuleIfExists(iLabel); + } std::vector StreamSchedule::getAllModuleDescriptions() const { std::vector result; - result.reserve(allWorkers().size()); + result.reserve(allWorkersLumisAndEvents().size()); - for (auto const& worker : allWorkers()) { + for (auto const& worker : allWorkersLumisAndEvents()) { ModuleDescription const* p = worker->description(); result.push_back(p); } @@ -1012,8 +1048,8 @@ namespace edm { // Data dependencies need to be set up before marking empty // (End)Paths complete in case something consumes the status of // the empty (EndPath) - workerManager_.setupResolvers(ep); - workerManager_.setupOnDemandSystem(info); + workerManagerLumisAndEvents_.setupResolvers(ep); + workerManagerLumisAndEvents_.setupOnDemandSystem(info); HLTPathStatus hltPathStatus(hlt::Pass, 0); for (int empty_trig_path : empty_trig_paths_) { @@ -1085,15 +1121,15 @@ namespace edm { //start end paths first so on single threaded the paths will run first WaitingTaskHolder hAllPathsDone(*iTask.group(), allPathsDone); for (auto it = end_paths_.rbegin(), itEnd = end_paths_.rend(); it != itEnd; ++it) { - it->processOneOccurrenceAsync(hAllPathsDone, info, serviceToken, streamID_, &streamContext_); + it->processEventUsingPathAsync(hAllPathsDone, info, serviceToken, streamID_, &streamContext_); } for (auto it = trig_paths_.rbegin(), itEnd = trig_paths_.rend(); it != itEnd; ++it) { - it->processOneOccurrenceAsync(taskHolder, info, serviceToken, streamID_, &streamContext_); + it->processEventUsingPathAsync(taskHolder, info, serviceToken, streamID_, &streamContext_); } ParentContext parentContext(&streamContext_); - workerManager_.processAccumulatorsAsync>( + workerManagerLumisAndEvents_.processAccumulatorsAsync>( hAllPathsDone, info, serviceToken, streamID_, parentContext, &streamContext_); } catch (...) { iTask.doneWaiting(std::current_exception()); @@ -1318,7 +1354,7 @@ namespace edm { fill_summary(trig_paths_, rep.trigPathSummaries, &fillPathSummary); fill_summary(end_paths_, rep.endPathSummaries, &fillPathSummary); - fill_summary(allWorkers(), rep.workerSummaries, &fillWorkerSummary); + fill_summary(allWorkersLumisAndEvents(), rep.workerSummaries, &fillWorkerSummary); } void StreamSchedule::clearCounters() { @@ -1326,12 +1362,12 @@ namespace edm { total_events_ = total_passed_ = 0; for_all(trig_paths_, std::bind(&Path::clearCounters, _1)); for_all(end_paths_, std::bind(&Path::clearCounters, _1)); - for_all(allWorkers(), std::bind(&Worker::clearCounters, _1)); + for_all(allWorkersLumisAndEvents(), std::bind(&Worker::clearCounters, _1)); } void StreamSchedule::resetAll() { results_->reset(); } - void StreamSchedule::addToAllWorkers(Worker* w) { workerManager_.addToAllWorkers(w); } + void StreamSchedule::addToAllWorkers(Worker* w) { workerManagerLumisAndEvents_.addToAllWorkers(w); } void StreamSchedule::resetEarlyDelete() { //must be sure we have cleared the count first @@ -1397,4 +1433,31 @@ namespace edm { ++bitpos; } } + + void StreamSchedule::handleException(StreamContext const& streamContext, + ServiceWeakToken const& weakToken, + bool cleaningUpAfterException, + std::exception_ptr& excpt) const noexcept { + //add context information to the exception and print message + try { + convertException::wrap([&excpt]() { std::rethrow_exception(excpt); }); + } catch (cms::Exception& ex) { + std::ostringstream ost; + // In most cases the exception will already have context at this point, + // but add some context here in those rare cases where it does not. + if (ex.context().empty()) { + exceptionContext(ost, streamContext); + } + ServiceRegistry::Operate op(weakToken.lock()); + addContextAndPrintException(ost.str().c_str(), ex, cleaningUpAfterException); + excpt = std::current_exception(); + } + // We are already handling an earlier exception, so ignore it + // if this signal results in another exception being thrown. + CMS_SA_ALLOW try { + ServiceRegistry::Operate op(weakToken.lock()); + actReg_->preStreamEarlyTerminationSignal_(streamContext, TerminationOrigin::ExceptionFromThisContext); + } catch (...) { + } + } } // namespace edm diff --git a/FWCore/Framework/src/WorkerManager.cc b/FWCore/Framework/src/WorkerManager.cc index 5f65420eee138..461886b17bab2 100644 --- a/FWCore/Framework/src/WorkerManager.cc +++ b/FWCore/Framework/src/WorkerManager.cc @@ -2,11 +2,15 @@ #include "UnscheduledConfigurator.h" #include "DataFormats/Provenance/interface/ProductRegistry.h" +#include "DataFormats/Provenance/interface/ProductResolverIndexHelper.h" +#include "FWCore/Framework/interface/maker/Worker.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/ServiceRegistry/interface/ActivityRegistry.h" #include "FWCore/Utilities/interface/Algorithms.h" +#include "FWCore/Utilities/interface/ConvertException.h" +#include "FWCore/Utilities/interface/Exception.h" #include "FWCore/Utilities/interface/ExceptionCollector.h" -#include "DataFormats/Provenance/interface/ProductResolverIndexHelper.h" + +#include static const std::string kFilterType("EDFilter"); static const std::string kProducerType("EDProducer"); diff --git a/FWCore/Framework/test/global_filter_t.cppunit.cc b/FWCore/Framework/test/global_filter_t.cppunit.cc index a92eed50adecf..9e92a7f9f8cb3 100644 --- a/FWCore/Framework/test/global_filter_t.cppunit.cc +++ b/FWCore/Framework/test/global_filter_t.cppunit.cc @@ -543,6 +543,8 @@ void testGlobalFilter::testTransitions(std::shared_ptr iMod, Expectations con edm::WorkerT wOther{iMod, m_desc, nullptr}; edm::WorkerT wGlobalLumi{iMod, m_desc, nullptr}; edm::WorkerT wStreamLumi{iMod, m_desc, nullptr}; + edm::WorkerT wGlobalRun{iMod, m_desc, nullptr}; + edm::WorkerT wStreamRun{iMod, m_desc, nullptr}; for (auto& keyVal : m_transToFunc) { edm::Worker* worker = &wOther; if (keyVal.first == Trans::kStreamBeginLuminosityBlock || keyVal.first == Trans::kStreamEndLuminosityBlock) { @@ -550,7 +552,12 @@ void testGlobalFilter::testTransitions(std::shared_ptr iMod, Expectations con } else if (keyVal.first == Trans::kGlobalBeginLuminosityBlock || keyVal.first == Trans::kGlobalEndLuminosityBlock) { worker = &wGlobalLumi; + } else if (keyVal.first == Trans::kStreamBeginRun || keyVal.first == Trans::kStreamEndRun) { + worker = &wStreamRun; + } else if (keyVal.first == Trans::kGlobalBeginRun || keyVal.first == Trans::kGlobalEndRun) { + worker = &wGlobalRun; } + testTransition(iMod, worker, keyVal.first, iExpect, keyVal.second); } }); diff --git a/FWCore/Framework/test/global_producer_t.cppunit.cc b/FWCore/Framework/test/global_producer_t.cppunit.cc index 2ed6c5680cbf2..efb8158bc4315 100644 --- a/FWCore/Framework/test/global_producer_t.cppunit.cc +++ b/FWCore/Framework/test/global_producer_t.cppunit.cc @@ -509,6 +509,8 @@ void testGlobalProducer::testTransitions(std::shared_ptr iMod, Expectations c edm::WorkerT wOther{iMod, m_desc, nullptr}; edm::WorkerT wGlobalLumi{iMod, m_desc, nullptr}; edm::WorkerT wStreamLumi{iMod, m_desc, nullptr}; + edm::WorkerT wGlobalRun{iMod, m_desc, nullptr}; + edm::WorkerT wStreamRun{iMod, m_desc, nullptr}; for (auto& keyVal : m_transToFunc) { edm::Worker* worker = &wOther; if (keyVal.first == Trans::kStreamBeginLuminosityBlock || keyVal.first == Trans::kStreamEndLuminosityBlock) { @@ -516,6 +518,10 @@ void testGlobalProducer::testTransitions(std::shared_ptr iMod, Expectations c } else if (keyVal.first == Trans::kGlobalBeginLuminosityBlock || keyVal.first == Trans::kGlobalEndLuminosityBlock) { worker = &wGlobalLumi; + } else if (keyVal.first == Trans::kStreamBeginRun || keyVal.first == Trans::kStreamEndRun) { + worker = &wStreamRun; + } else if (keyVal.first == Trans::kGlobalBeginRun || keyVal.first == Trans::kGlobalEndRun) { + worker = &wGlobalRun; } testTransition(iMod, worker, keyVal.first, iExpect, keyVal.second); } diff --git a/FWCore/Framework/test/limited_filter_t.cppunit.cc b/FWCore/Framework/test/limited_filter_t.cppunit.cc index 2bdf1b7aab141..6df1b73e45204 100644 --- a/FWCore/Framework/test/limited_filter_t.cppunit.cc +++ b/FWCore/Framework/test/limited_filter_t.cppunit.cc @@ -550,12 +550,18 @@ void testLimitedFilter::testTransitions(std::shared_ptr iMod, Expectations co edm::WorkerT wOther{iMod, m_desc, nullptr}; edm::WorkerT wGlobalLumi{iMod, m_desc, nullptr}; edm::WorkerT wStreamLumi{iMod, m_desc, nullptr}; + edm::WorkerT wGlobalRun{iMod, m_desc, nullptr}; + edm::WorkerT wStreamRun{iMod, m_desc, nullptr}; for (auto& keyVal : m_transToFunc) { edm::Worker* worker = &wOther; if (keyVal.first == Trans::kStreamBeginLuminosityBlock || keyVal.first == Trans::kStreamEndLuminosityBlock) { worker = &wStreamLumi; } else if (keyVal.first == Trans::kGlobalBeginLuminosityBlock || keyVal.first == Trans::kGlobalEndLuminosityBlock) { worker = &wGlobalLumi; + } else if (keyVal.first == Trans::kStreamBeginRun || keyVal.first == Trans::kStreamEndRun) { + worker = &wStreamRun; + } else if (keyVal.first == Trans::kGlobalBeginRun || keyVal.first == Trans::kGlobalEndRun) { + worker = &wGlobalRun; } testTransition(iMod, worker, keyVal.first, iExpect, keyVal.second); } diff --git a/FWCore/Framework/test/limited_producer_t.cppunit.cc b/FWCore/Framework/test/limited_producer_t.cppunit.cc index be294560854a7..c882d73340d87 100644 --- a/FWCore/Framework/test/limited_producer_t.cppunit.cc +++ b/FWCore/Framework/test/limited_producer_t.cppunit.cc @@ -515,12 +515,18 @@ void testLimitedProducer::testTransitions(std::shared_ptr iMod, Expectations edm::WorkerT wOther{iMod, m_desc, nullptr}; edm::WorkerT wGlobalLumi{iMod, m_desc, nullptr}; edm::WorkerT wStreamLumi{iMod, m_desc, nullptr}; + edm::WorkerT wGlobalRun{iMod, m_desc, nullptr}; + edm::WorkerT wStreamRun{iMod, m_desc, nullptr}; for (auto& keyVal : m_transToFunc) { edm::Worker* worker = &wOther; if (keyVal.first == Trans::kStreamBeginLuminosityBlock || keyVal.first == Trans::kStreamEndLuminosityBlock) { worker = &wStreamLumi; } else if (keyVal.first == Trans::kGlobalBeginLuminosityBlock || keyVal.first == Trans::kGlobalEndLuminosityBlock) { worker = &wGlobalLumi; + } else if (keyVal.first == Trans::kStreamBeginRun || keyVal.first == Trans::kStreamEndRun) { + worker = &wStreamRun; + } else if (keyVal.first == Trans::kGlobalBeginRun || keyVal.first == Trans::kGlobalEndRun) { + worker = &wGlobalRun; } testTransition(iMod, worker, keyVal.first, iExpect, keyVal.second); } diff --git a/FWCore/Framework/test/stream_filter_t.cppunit.cc b/FWCore/Framework/test/stream_filter_t.cppunit.cc index af6db9462c1a9..6ad7449a1b73d 100644 --- a/FWCore/Framework/test/stream_filter_t.cppunit.cc +++ b/FWCore/Framework/test/stream_filter_t.cppunit.cc @@ -590,12 +590,18 @@ void testStreamFilter::testTransitions(std::shared_ptr iMod, Expectations con edm::WorkerT wOther{iMod, m_desc, nullptr}; edm::WorkerT wGlobalLumi{iMod, m_desc, nullptr}; edm::WorkerT wStreamLumi{iMod, m_desc, nullptr}; + edm::WorkerT wGlobalRun{iMod, m_desc, nullptr}; + edm::WorkerT wStreamRun{iMod, m_desc, nullptr}; for (auto& keyVal : m_transToFunc) { edm::Worker* worker = &wOther; if (keyVal.first == Trans::kStreamBeginLuminosityBlock || keyVal.first == Trans::kStreamEndLuminosityBlock) { worker = &wStreamLumi; } else if (keyVal.first == Trans::kGlobalBeginLuminosityBlock || keyVal.first == Trans::kGlobalEndLuminosityBlock) { worker = &wGlobalLumi; + } else if (keyVal.first == Trans::kStreamBeginRun || keyVal.first == Trans::kStreamEndRun) { + worker = &wStreamRun; + } else if (keyVal.first == Trans::kGlobalBeginRun || keyVal.first == Trans::kGlobalEndRun) { + worker = &wGlobalRun; } testTransition(worker, keyVal.first, iExpect, keyVal.second); } diff --git a/FWCore/Framework/test/stream_producer_t.cppunit.cc b/FWCore/Framework/test/stream_producer_t.cppunit.cc index 76301b23e6da8..c2a3f00eb8d98 100644 --- a/FWCore/Framework/test/stream_producer_t.cppunit.cc +++ b/FWCore/Framework/test/stream_producer_t.cppunit.cc @@ -551,12 +551,18 @@ void testStreamProducer::testTransitions(std::shared_ptr iMod, Expectations c edm::WorkerT wOther{iMod, m_desc, nullptr}; edm::WorkerT wGlobalLumi{iMod, m_desc, nullptr}; edm::WorkerT wStreamLumi{iMod, m_desc, nullptr}; + edm::WorkerT wGlobalRun{iMod, m_desc, nullptr}; + edm::WorkerT wStreamRun{iMod, m_desc, nullptr}; for (auto& keyVal : m_transToFunc) { edm::Worker* worker = &wOther; if (keyVal.first == Trans::kStreamBeginLuminosityBlock || keyVal.first == Trans::kStreamEndLuminosityBlock) { worker = &wStreamLumi; } else if (keyVal.first == Trans::kGlobalBeginLuminosityBlock || keyVal.first == Trans::kGlobalEndLuminosityBlock) { worker = &wGlobalLumi; + } else if (keyVal.first == Trans::kStreamBeginRun || keyVal.first == Trans::kStreamEndRun) { + worker = &wStreamRun; + } else if (keyVal.first == Trans::kGlobalBeginRun || keyVal.first == Trans::kGlobalEndRun) { + worker = &wGlobalRun; } testTransition(worker, keyVal.first, iExpect, keyVal.second); } diff --git a/FWCore/Framework/test/unit_test_outputs/test_deepCall_unscheduled.log b/FWCore/Framework/test/unit_test_outputs/test_deepCall_unscheduled.log index 666665139e80b..1687159d906e0 100644 --- a/FWCore/Framework/test/unit_test_outputs/test_deepCall_unscheduled.log +++ b/FWCore/Framework/test/unit_test_outputs/test_deepCall_unscheduled.log @@ -37,10 +37,6 @@ Module type=IntProducer, Module label=one, Parameter Set ID=dd3aecb8f6531b74585c ++ finished: begin job ++++ starting: begin stream for module: stream = 0 label = 'get' id = 3 ++++ finished: begin stream for module: stream = 0 label = 'get' id = 3 -++++ starting: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ starting: begin stream for module: stream = 0 label = 'p' id = 2 -++++ finished: begin stream for module: stream = 0 label = 'p' id = 2 ++++ starting: begin stream for module: stream = 0 label = 'one' id = 4 StreamContext: StreamID = 0 transition = BeginStream run: 0 lumi: 0 event: 0 @@ -550,10 +546,6 @@ ModuleCallingContext state = Running ++++ finished: write process block ++++ starting: end stream for module: stream = 0 label = 'get' id = 3 ++++ finished: end stream for module: stream = 0 label = 'get' id = 3 -++++ starting: end stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: end stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ starting: end stream for module: stream = 0 label = 'p' id = 2 -++++ finished: end stream for module: stream = 0 label = 'p' id = 2 ++++ starting: end stream for module: stream = 0 label = 'one' id = 4 StreamContext: StreamID = 0 transition = EndStream run: 0 lumi: 0 event: 0 diff --git a/FWCore/Framework/test/unit_test_outputs/test_onPath_unscheduled.log b/FWCore/Framework/test/unit_test_outputs/test_onPath_unscheduled.log index 7313caaa3ae8a..3d5809c5bcc42 100644 --- a/FWCore/Framework/test/unit_test_outputs/test_onPath_unscheduled.log +++ b/FWCore/Framework/test/unit_test_outputs/test_onPath_unscheduled.log @@ -35,10 +35,6 @@ ++++ finished: begin stream for module: stream = 0 label = 'two' id = 5 ++++ starting: begin stream for module: stream = 0 label = 'getTwo' id = 6 ++++ finished: begin stream for module: stream = 0 label = 'getTwo' id = 6 -++++ starting: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ starting: begin stream for module: stream = 0 label = 'p' id = 2 -++++ finished: begin stream for module: stream = 0 label = 'p' id = 2 ++++ starting: begin process block ++++ finished: begin process block ++++ queuing: EventSetup synchronization run: 1 lumi: 0 event: 0 @@ -49,10 +45,10 @@ ++++ starting: global begin run 1 : time = 1000000 ++++ finished: global begin run 1 : time = 1000000 ++++ starting: begin run: stream = 0 run = 1 time = 1000000 -++++++ starting: begin run for module: stream = 0 label = 'two' id = 5 -++++++ finished: begin run for module: stream = 0 label = 'two' id = 5 ++++++ starting: begin run for module: stream = 0 label = 'one' id = 3 ++++++ finished: begin run for module: stream = 0 label = 'one' id = 3 +++++++ starting: begin run for module: stream = 0 label = 'two' id = 5 +++++++ finished: begin run for module: stream = 0 label = 'two' id = 5 ++++ finished: begin run: stream = 0 run = 1 time = 1000000 ++++ queuing: EventSetup synchronization run: 1 lumi: 1 event: 0 ++++ pre: EventSetup synchronizing run: 1 lumi: 1 event: 0 @@ -62,10 +58,10 @@ ++++ starting: global begin lumi: run = 1 lumi = 1 time = 1000000 ++++ finished: global begin lumi: run = 1 lumi = 1 time = 1000000 ++++ starting: begin lumi: stream = 0 run = 1 lumi = 1 time = 1000000 -++++++ starting: begin lumi for module: stream = 0 label = 'two' id = 5 -++++++ finished: begin lumi for module: stream = 0 label = 'two' id = 5 ++++++ starting: begin lumi for module: stream = 0 label = 'one' id = 3 ++++++ finished: begin lumi for module: stream = 0 label = 'one' id = 3 +++++++ starting: begin lumi for module: stream = 0 label = 'two' id = 5 +++++++ finished: begin lumi for module: stream = 0 label = 'two' id = 5 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 1 time = 1000000 ++++ starting: source event ++++ finished: source event @@ -149,20 +145,20 @@ ++++ pre: EventSetup synchronizing run: 1 lumi: 4294967295 event: 18446744073709551615 ++++ post: EventSetup synchronizing run: 1 lumi: 4294967295 event: 18446744073709551615 ++++ starting: end lumi: stream = 0 run = 1 lumi = 1 time = 1000030 -++++++ starting: end lumi for module: stream = 0 label = 'two' id = 5 -++++++ finished: end lumi for module: stream = 0 label = 'two' id = 5 ++++++ starting: end lumi for module: stream = 0 label = 'one' id = 3 ++++++ finished: end lumi for module: stream = 0 label = 'one' id = 3 +++++++ starting: end lumi for module: stream = 0 label = 'two' id = 5 +++++++ finished: end lumi for module: stream = 0 label = 'two' id = 5 ++++ finished: end lumi: stream = 0 run = 1 lumi = 1 time = 1000030 ++++ starting: global end lumi: run = 1 lumi = 1 time = 1000000 ++++ finished: global end lumi: run = 1 lumi = 1 time = 1000000 ++++ starting: global write lumi: run = 1 lumi = 1 time = 1000000 ++++ finished: global write lumi: run = 1 lumi = 1 time = 1000000 ++++ starting: end run: stream = 0 run = 1 time = 1000030 -++++++ starting: end run for module: stream = 0 label = 'two' id = 5 -++++++ finished: end run for module: stream = 0 label = 'two' id = 5 ++++++ starting: end run for module: stream = 0 label = 'one' id = 3 ++++++ finished: end run for module: stream = 0 label = 'one' id = 3 +++++++ starting: end run for module: stream = 0 label = 'two' id = 5 +++++++ finished: end run for module: stream = 0 label = 'two' id = 5 ++++ finished: end run: stream = 0 run = 1 time = 1000030 ++++ starting: global end run 1 : time = 1000030 ++++ finished: global end run 1 : time = 1000030 @@ -180,10 +176,6 @@ ++++ finished: end stream for module: stream = 0 label = 'two' id = 5 ++++ starting: end stream for module: stream = 0 label = 'getTwo' id = 6 ++++ finished: end stream for module: stream = 0 label = 'getTwo' id = 6 -++++ starting: end stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: end stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ starting: end stream for module: stream = 0 label = 'p' id = 2 -++++ finished: end stream for module: stream = 0 label = 'p' id = 2 ++++ starting: end job for module with label 'one' id = 3 ++++ finished: end job for module with label 'one' id = 3 ++++ starting: end job for module with label 'getOne' id = 4 diff --git a/FWCore/Integration/plugins/ExceptionThrowingProducer.cc b/FWCore/Integration/plugins/ExceptionThrowingProducer.cc index d12559e1e5d8b..c4ad2acc55dc1 100644 --- a/FWCore/Integration/plugins/ExceptionThrowingProducer.cc +++ b/FWCore/Integration/plugins/ExceptionThrowingProducer.cc @@ -1,3 +1,16 @@ +// -*- C++ -*- +// +// Package: FWCore/Integration +// Class : ExceptionThrowingProducer +// +// Implementation: +// Intentionally throws exceptions in various Framework transitions. +// You can configure which transition. Includes some tests of +// the Framework behavior after an exception occurs. +// +// Original Author: W. David Dagenhart +// Created: 26 September 2022 + #include "DataFormats/Provenance/interface/EventID.h" #include "DataFormats/Provenance/interface/RunLumiEventNumber.h" #include "FWCore/Framework/interface/Event.h" @@ -68,6 +81,11 @@ namespace edmtest { mutable std::atomic nGlobalBeginLumi_{0}; mutable std::atomic nGlobalEndLumi_{0}; + mutable std::vector nStreamBeginRun_; + mutable std::vector nStreamEndRun_; + mutable std::atomic nGlobalBeginRun_{0}; + mutable std::atomic nGlobalEndRun_{0}; + unsigned int expectedStreamBeginLumi_; unsigned int expectedOffsetNoStreamEndLumi_; mutable unsigned int streamWithBeginLumiException_ = kUnset; @@ -75,9 +93,20 @@ namespace edmtest { unsigned int expectedOffsetNoGlobalEndLumi_; unsigned int expectedOffsetNoWriteLumi_; + unsigned int expectedStreamBeginRun_; + unsigned int expectedOffsetNoStreamEndRun_; + mutable unsigned int streamWithBeginRunException_ = kUnset; + unsigned int expectedGlobalBeginRun_; + unsigned int expectedOffsetNoGlobalEndRun_; + unsigned int expectedOffsetNoWriteRun_; + mutable std::atomic streamBeginLumiExceptionOccurred_ = false; mutable std::atomic streamEndLumiExceptionOccurred_ = false; mutable std::atomic globalBeginLumiExceptionOccurred_ = false; + + mutable std::atomic streamBeginRunExceptionOccurred_ = false; + mutable std::atomic streamEndRunExceptionOccurred_ = false; + mutable std::atomic globalBeginRunExceptionOccurred_ = false; }; ExceptionThrowingProducer::ExceptionThrowingProducer(edm::ParameterSet const& pset) @@ -93,11 +122,18 @@ namespace edmtest { eventIDThrowOnStreamEndLumi_(pset.getUntrackedParameter("eventIDThrowOnStreamEndLumi")), nStreamBeginLumi_(kTestStreams, 0), nStreamEndLumi_(kTestStreams, 0), + nStreamBeginRun_(kTestStreams, 0), + nStreamEndRun_(kTestStreams, 0), expectedStreamBeginLumi_(pset.getUntrackedParameter("expectedStreamBeginLumi")), expectedOffsetNoStreamEndLumi_(pset.getUntrackedParameter("expectedOffsetNoStreamEndLumi")), expectedGlobalBeginLumi_(pset.getUntrackedParameter("expectedGlobalBeginLumi")), expectedOffsetNoGlobalEndLumi_(pset.getUntrackedParameter("expectedOffsetNoGlobalEndLumi")), - expectedOffsetNoWriteLumi_(pset.getUntrackedParameter("expectedOffsetNoWriteLumi")) {} + expectedOffsetNoWriteLumi_(pset.getUntrackedParameter("expectedOffsetNoWriteLumi")), + expectedStreamBeginRun_(pset.getUntrackedParameter("expectedStreamBeginRun")), + expectedOffsetNoStreamEndRun_(pset.getUntrackedParameter("expectedOffsetNoStreamEndRun")), + expectedGlobalBeginRun_(pset.getUntrackedParameter("expectedGlobalBeginRun")), + expectedOffsetNoGlobalEndRun_(pset.getUntrackedParameter("expectedOffsetNoGlobalEndRun")), + expectedOffsetNoWriteRun_(pset.getUntrackedParameter("expectedOffsetNoWriteRun")) {} void ExceptionThrowingProducer::produce(edm::StreamID, edm::Event& event, edm::EventSetup const&) const { if (event.id() == eventIDThrowOnEvent_) { @@ -107,8 +143,10 @@ namespace edmtest { } std::shared_ptr ExceptionThrowingProducer::globalBeginRun(edm::Run const& run, edm::EventSetup const&) const { + ++nGlobalBeginRun_; if (edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) == eventIDThrowOnGlobalBeginRun_) { + globalBeginRunExceptionOccurred_.store(true); throw cms::Exception("IntentionalTestException") << "ExceptionThrowingProducer::globalBeginRun, module configured to throw on: " << eventIDThrowOnGlobalBeginRun_; @@ -117,6 +155,7 @@ namespace edmtest { } void ExceptionThrowingProducer::globalEndRun(edm::Run const& run, edm::EventSetup const&) const { + ++nGlobalEndRun_; if (edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) == eventIDThrowOnGlobalEndRun_) { throw cms::Exception("IntentionalTestException") @@ -155,9 +194,16 @@ namespace edmtest { void ExceptionThrowingProducer::streamBeginRun(edm::StreamID iStream, edm::Run const& run, edm::EventSetup const&) const { - if (iStream.value() == 0 && - edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) == - eventIDThrowOnStreamBeginRun_) { + if (iStream < kTestStreams) { + ++nStreamBeginRun_[iStream]; + } + + bool expected = false; + if (edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) == + eventIDThrowOnStreamBeginRun_ && + streamBeginRunExceptionOccurred_.compare_exchange_strong(expected, true)) { + // Remember which stream threw + streamWithBeginRunException_ = iStream.value(); throw cms::Exception("IntentionalTestException") << "ExceptionThrowingProducer::streamBeginRun, module configured to throw on: " << eventIDThrowOnStreamBeginRun_; @@ -206,9 +252,14 @@ namespace edmtest { void ExceptionThrowingProducer::streamEndRun(edm::StreamID iStream, edm::Run const& run, edm::EventSetup const&) const { - if (iStream.value() == 0 && - edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) == - eventIDThrowOnStreamEndRun_) { + if (iStream < kTestStreams) { + ++nStreamEndRun_[iStream]; + } + + bool expected = false; + if (edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) == + eventIDThrowOnStreamEndRun_ && + streamEndRunExceptionOccurred_.compare_exchange_strong(expected, true)) { throw cms::Exception("IntentionalTestException") << "ExceptionThrowingProducer::streamEndRun, module configured to throw on: " << eventIDThrowOnStreamEndRun_; } @@ -216,8 +267,8 @@ namespace edmtest { void ExceptionThrowingProducer::endJob() { bool testsPass = true; - unsigned int totalStreamBeginLumi = 0; + unsigned int totalStreamBeginLumi = 0; unsigned int i = 0; for (auto const& nStreamBeginLumi : nStreamBeginLumi_) { totalStreamBeginLumi += nStreamBeginLumi; @@ -243,6 +294,31 @@ namespace edmtest { ++i; } + unsigned int totalStreamBeginRun = 0; + i = 0; + for (auto const& nStreamBeginRun : nStreamBeginRun_) { + totalStreamBeginRun += nStreamBeginRun; + + // Don't know exact number to expect because streams might skip a run (not yet + // but probably in the future) so only throw if it is greater than the maximum + // possible and we only know that for sure if the exception was thrown in stream begin run. + if (nStreamBeginRun > expectedStreamBeginRun_ && streamWithBeginRunException_ != kUnset) { + edm::LogAbsolute("ExceptionThrowingProducer") + << "FAILED: More than maximum possible number of streamBeginRun transitions, stream " << i << " saw " + << nStreamBeginRun << " max possible " << expectedStreamBeginRun_; + testsPass = false; + } + unsigned int expectedStreamEndRun = (streamWithBeginRunException_ == i) ? nStreamBeginRun - 1 : nStreamBeginRun; + if (nStreamEndRun_[i] != expectedStreamEndRun) { + edm::LogAbsolute("ExceptionThrowingProducer") + << "FAILED: Unexpected number of streamEndRun transitions, stream " << i << " saw " << nStreamEndRun_[i] + << " expected " << expectedStreamEndRun; + testsPass = false; + } + + ++i; + } + // There has to be at least as many global begin lumi transitions // as expected. Because of concurrency, the Framework might already have // started other lumis ahead of the one where an exception occurs. @@ -253,6 +329,16 @@ namespace edmtest { testsPass = false; } + // There has to be at least as many global begin run transitions + // as expected. Because of concurrency, the Framework might already have + // started other runs ahead of the one where an exception occurs. + if (expectedGlobalBeginRun_ > 0 && nGlobalBeginRun_.load() < expectedGlobalBeginRun_) { + edm::LogAbsolute("ExceptionThrowingProducer") + << "FAILED: Less than the expected number of globalBeginRun transitions, expected at least " + << expectedGlobalBeginRun_ << " saw " << nGlobalBeginRun_.load(); + testsPass = false; + } + unsigned int expectedGlobalEndLumi = globalBeginLumiExceptionOccurred_.load() ? nGlobalBeginLumi_.load() - 1 : nGlobalBeginLumi_.load(); if (nGlobalEndLumi_.load() != expectedGlobalEndLumi) { @@ -262,6 +348,15 @@ namespace edmtest { testsPass = false; } + unsigned int expectedGlobalEndRun = + globalBeginRunExceptionOccurred_.load() ? nGlobalBeginRun_.load() - 1 : nGlobalBeginRun_.load(); + if (nGlobalEndRun_.load() != expectedGlobalEndRun) { + edm::LogAbsolute("ExceptionThrowingProducer") + << "FAILED: number of global end run transitions not equal to expected value, expected " + << expectedGlobalEndRun << " saw " << nGlobalEndRun_.load(); + testsPass = false; + } + edm::Service serviceOne; if (serviceOne->nPreStreamBeginLumi() != totalStreamBeginLumi || serviceOne->nPostStreamBeginLumi() != totalStreamBeginLumi || @@ -327,9 +422,74 @@ namespace edmtest { << "FAILED: Unexpected number of service transitions in TestServiceTwo, global lumi"; testsPass = false; } + + if (serviceOne->nPreStreamBeginRun() != totalStreamBeginRun || + serviceOne->nPostStreamBeginRun() != totalStreamBeginRun || + serviceOne->nPreStreamEndRun() != totalStreamBeginRun || + serviceOne->nPostStreamEndRun() != totalStreamBeginRun || + serviceOne->nPreModuleStreamBeginRun() != totalStreamBeginRun * kNumberOfTestModules || + serviceOne->nPostModuleStreamBeginRun() != totalStreamBeginRun * kNumberOfTestModules || + serviceOne->nPreModuleStreamEndRun() != + totalStreamBeginRun * kNumberOfTestModules - expectedOffsetNoStreamEndRun_ || + serviceOne->nPostModuleStreamEndRun() != + totalStreamBeginRun * kNumberOfTestModules - expectedOffsetNoStreamEndRun_) { + edm::LogAbsolute("ExceptionThrowingProducer") + << "FAILED: Unexpected number of service transitions in TestServiceOne, stream run"; + testsPass = false; + } + + if (serviceTwo->nPreStreamBeginRun() != totalStreamBeginRun || + serviceTwo->nPostStreamBeginRun() != totalStreamBeginRun || + serviceTwo->nPreStreamEndRun() != totalStreamBeginRun || + serviceTwo->nPostStreamEndRun() != totalStreamBeginRun || + serviceTwo->nPreModuleStreamBeginRun() != totalStreamBeginRun * kNumberOfTestModules || + serviceTwo->nPostModuleStreamBeginRun() != totalStreamBeginRun * kNumberOfTestModules || + serviceTwo->nPreModuleStreamEndRun() != + totalStreamBeginRun * kNumberOfTestModules - expectedOffsetNoStreamEndRun_ || + serviceTwo->nPostModuleStreamEndRun() != + totalStreamBeginRun * kNumberOfTestModules - expectedOffsetNoStreamEndRun_) { + edm::LogAbsolute("ExceptionThrowingProducer") + << "FAILED: Unexpected number of service transitions in TestServiceTwo, stream run"; + testsPass = false; + } + + unsigned int nGlobalBeginRun = nGlobalBeginRun_.load(); + + if (serviceOne->nPreGlobalBeginRun() != nGlobalBeginRun || serviceOne->nPostGlobalBeginRun() != nGlobalBeginRun || + serviceOne->nPreGlobalEndRun() != nGlobalBeginRun || serviceOne->nPostGlobalEndRun() != nGlobalBeginRun || + serviceOne->nPreModuleGlobalBeginRun() != nGlobalBeginRun * kNumberOfTestModules || + serviceOne->nPostModuleGlobalBeginRun() != nGlobalBeginRun * kNumberOfTestModules || + serviceOne->nPreModuleGlobalEndRun() != + nGlobalBeginRun * kNumberOfTestModules - expectedOffsetNoGlobalEndRun_ || + serviceOne->nPostModuleGlobalEndRun() != + nGlobalBeginRun * kNumberOfTestModules - expectedOffsetNoGlobalEndRun_ || + serviceOne->nPreGlobalWriteRun() != nGlobalBeginRun - expectedOffsetNoWriteRun_ || + serviceOne->nPostGlobalWriteRun() != nGlobalBeginRun - expectedOffsetNoWriteRun_) { + edm::LogAbsolute("ExceptionThrowingProducer") + << "FAILED: Unexpected number of service transitions in TestServiceOne, global run"; + testsPass = false; + } + + if (serviceTwo->nPreGlobalBeginRun() != nGlobalBeginRun || serviceTwo->nPostGlobalBeginRun() != nGlobalBeginRun || + serviceTwo->nPreGlobalEndRun() != nGlobalBeginRun || serviceTwo->nPostGlobalEndRun() != nGlobalBeginRun || + serviceTwo->nPreModuleGlobalBeginRun() != nGlobalBeginRun * kNumberOfTestModules || + serviceTwo->nPostModuleGlobalBeginRun() != nGlobalBeginRun * kNumberOfTestModules || + serviceTwo->nPreModuleGlobalEndRun() != + nGlobalBeginRun * kNumberOfTestModules - expectedOffsetNoGlobalEndRun_ || + serviceTwo->nPostModuleGlobalEndRun() != + nGlobalBeginRun * kNumberOfTestModules - expectedOffsetNoGlobalEndRun_ || + serviceTwo->nPreGlobalWriteRun() != nGlobalBeginRun - expectedOffsetNoWriteRun_ || + serviceTwo->nPostGlobalWriteRun() != nGlobalBeginRun - expectedOffsetNoWriteRun_) { + edm::LogAbsolute("ExceptionThrowingProducer") + << "FAILED: Unexpected number of service transitions in TestServiceTwo, global run"; + testsPass = false; + } + if (verbose_) { edm::LogAbsolute("ExceptionThrowingProducer") << "nGlobalBeginLumi_ = " << nGlobalBeginLumi_; edm::LogAbsolute("ExceptionThrowingProducer") << "nGlobalEndLumi_ = " << nGlobalEndLumi_; + edm::LogAbsolute("ExceptionThrowingProducer") << "nGlobalBeginRun_ = " << nGlobalBeginRun_; + edm::LogAbsolute("ExceptionThrowingProducer") << "nGlobalEndRun_ = " << nGlobalEndRun_; edm::LogAbsolute("ExceptionThrowingProducer") << "serviceOne->nPreStreamBeginLumi = " << serviceOne->nPreStreamBeginLumi(); @@ -368,6 +528,44 @@ namespace edmtest { << "serviceOne->nPreGlobalWriteLumi = " << serviceOne->nPreGlobalWriteLumi(); edm::LogAbsolute("ExceptionThrowingProducer") << "serviceOne->nPostGlobalWriteLumi = " << serviceOne->nPostGlobalWriteLumi() << "\n"; + + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPreStreamBeginRun = " << serviceOne->nPreStreamBeginRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPostStreamBeginRun = " << serviceOne->nPostStreamBeginRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPreStreamEndRun = " << serviceOne->nPreStreamEndRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPostStreamEndRun = " << serviceOne->nPostStreamEndRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPreModuleStreamBeginRun = " << serviceOne->nPreModuleStreamBeginRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPostModuleStreamBeginRun = " << serviceOne->nPostModuleStreamBeginRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPreModuleStreamEndRun = " << serviceOne->nPreModuleStreamEndRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPostModuleStreamEndRun = " << serviceOne->nPostModuleStreamEndRun() << "\n"; + + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPreGlobalBeginRun = " << serviceOne->nPreGlobalBeginRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPostGlobalBeginRun = " << serviceOne->nPostGlobalBeginRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPreGlobalEndRun = " << serviceOne->nPreGlobalEndRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPostGlobalEndRun = " << serviceOne->nPostGlobalEndRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPreModuleGlobalBeginRun = " << serviceOne->nPreModuleGlobalBeginRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPostModuleGlobalBeginRun = " << serviceOne->nPostModuleGlobalBeginRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPreModuleGlobalEndRun = " << serviceOne->nPreModuleGlobalEndRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPostModuleGlobalEndRun = " << serviceOne->nPostModuleGlobalEndRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPreGlobalWriteRun = " << serviceOne->nPreGlobalWriteRun(); + edm::LogAbsolute("ExceptionThrowingProducer") + << "serviceOne->nPostGlobalWriteRun = " << serviceOne->nPostGlobalWriteRun() << "\n"; } if (testsPass) { @@ -396,6 +594,13 @@ namespace edmtest { desc.addUntracked("expectedGlobalBeginLumi", 0); desc.addUntracked("expectedOffsetNoGlobalEndLumi", 0); desc.addUntracked("expectedOffsetNoWriteLumi", 0); + + desc.addUntracked("expectedStreamBeginRun", kUnset); + desc.addUntracked("expectedOffsetNoStreamEndRun", 0); + desc.addUntracked("expectedGlobalBeginRun", 0); + desc.addUntracked("expectedOffsetNoGlobalEndRun", 0); + desc.addUntracked("expectedOffsetNoWriteRun", 0); + descriptions.addDefault(desc); } diff --git a/FWCore/Integration/plugins/TestServiceOne.cc b/FWCore/Integration/plugins/TestServiceOne.cc index 60d861dad1716..ba803f94b2d12 100644 --- a/FWCore/Integration/plugins/TestServiceOne.cc +++ b/FWCore/Integration/plugins/TestServiceOne.cc @@ -60,9 +60,6 @@ namespace edmtest { iRegistry.watchPreBeginProcessBlock(this, &TestServiceOne::preBeginProcessBlock); iRegistry.watchPreEndProcessBlock(this, &TestServiceOne::preEndProcessBlock); - iRegistry.watchPreGlobalBeginRun(this, &TestServiceOne::preGlobalBeginRun); - iRegistry.watchPreGlobalEndRun(this, &TestServiceOne::preGlobalEndRun); - iRegistry.watchPreStreamBeginLumi(this, &TestServiceOne::preStreamBeginLumi); iRegistry.watchPostStreamBeginLumi(this, &TestServiceOne::postStreamBeginLumi); iRegistry.watchPreStreamEndLumi(this, &TestServiceOne::preStreamEndLumi); @@ -85,6 +82,29 @@ namespace edmtest { iRegistry.watchPreGlobalWriteLumi(this, &TestServiceOne::preGlobalWriteLumi); iRegistry.watchPostGlobalWriteLumi(this, &TestServiceOne::postGlobalWriteLumi); + + iRegistry.watchPreStreamBeginRun(this, &TestServiceOne::preStreamBeginRun); + iRegistry.watchPostStreamBeginRun(this, &TestServiceOne::postStreamBeginRun); + iRegistry.watchPreStreamEndRun(this, &TestServiceOne::preStreamEndRun); + iRegistry.watchPostStreamEndRun(this, &TestServiceOne::postStreamEndRun); + + iRegistry.watchPreModuleStreamBeginRun(this, &TestServiceOne::preModuleStreamBeginRun); + iRegistry.watchPostModuleStreamBeginRun(this, &TestServiceOne::postModuleStreamBeginRun); + iRegistry.watchPreModuleStreamEndRun(this, &TestServiceOne::preModuleStreamEndRun); + iRegistry.watchPostModuleStreamEndRun(this, &TestServiceOne::postModuleStreamEndRun); + + iRegistry.watchPreGlobalBeginRun(this, &TestServiceOne::preGlobalBeginRun); + iRegistry.watchPostGlobalBeginRun(this, &TestServiceOne::postGlobalBeginRun); + iRegistry.watchPreGlobalEndRun(this, &TestServiceOne::preGlobalEndRun); + iRegistry.watchPostGlobalEndRun(this, &TestServiceOne::postGlobalEndRun); + + iRegistry.watchPreModuleGlobalBeginRun(this, &TestServiceOne::preModuleGlobalBeginRun); + iRegistry.watchPostModuleGlobalBeginRun(this, &TestServiceOne::postModuleGlobalBeginRun); + iRegistry.watchPreModuleGlobalEndRun(this, &TestServiceOne::preModuleGlobalEndRun); + iRegistry.watchPostModuleGlobalEndRun(this, &TestServiceOne::postModuleGlobalEndRun); + + iRegistry.watchPreGlobalWriteRun(this, &TestServiceOne::preGlobalWriteRun); + iRegistry.watchPostGlobalWriteRun(this, &TestServiceOne::postGlobalWriteRun); } void TestServiceOne::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { @@ -107,18 +127,6 @@ namespace edmtest { } } - void TestServiceOne::preGlobalBeginRun(GlobalContext const&) { - if (verbose_) { - edm::LogAbsolute("TestServiceOne") << "test message from TestServiceOne::preGlobalBeginRun"; - } - } - - void TestServiceOne::preGlobalEndRun(GlobalContext const&) { - if (verbose_) { - edm::LogAbsolute("TestServiceOne") << "test message from TestServiceOne::preGlobalEndRun"; - } - } - void TestServiceOne::preStreamBeginLumi(StreamContext const& sc) { ++nPreStreamBeginLumi_; if (verbose_) { @@ -293,6 +301,172 @@ namespace edmtest { } } + void TestServiceOne::preStreamBeginRun(StreamContext const& sc) { + ++nPreStreamBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << streamIndent << "TestServiceOne::preStreamBeginRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " run = " << sc.eventID().run(); + } + } + + void TestServiceOne::postStreamBeginRun(StreamContext const& sc) { + ++nPostStreamBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << streamIndent << "TestServiceOne::postStreamBeginRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " run = " << sc.eventID().run(); + } + } + + void TestServiceOne::preStreamEndRun(StreamContext const& sc) { + ++nPreStreamEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << streamIndent << "TestServiceOne::preStreamEndRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " run = " << sc.eventID().run(); + } + } + + void TestServiceOne::postStreamEndRun(StreamContext const& sc) { + ++nPostStreamEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << streamIndent << "TestServiceOne::postStreamEndRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " run = " << sc.eventID().run(); + } + } + + void TestServiceOne::preModuleStreamBeginRun(StreamContext const& sc, ModuleCallingContext const& mcc) { + ++nPreModuleStreamBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << streamModuleIndent << "TestServiceOne::preModuleStreamBeginRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " label = " << mcc.moduleDescription()->moduleLabel() + << " run = " << sc.eventID().run(); + } + } + + void TestServiceOne::postModuleStreamBeginRun(StreamContext const& sc, ModuleCallingContext const& mcc) { + ++nPostModuleStreamBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << streamModuleIndent << "TestServiceOne::postModuleStreamBeginRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " label = " << mcc.moduleDescription()->moduleLabel() + << " run = " << sc.eventID().run(); + } + } + + void TestServiceOne::preModuleStreamEndRun(StreamContext const& sc, ModuleCallingContext const& mcc) { + ++nPreModuleStreamEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << streamModuleIndent << "TestServiceOne::preModuleStreamEndRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " label = " << mcc.moduleDescription()->moduleLabel() + << " run = " << sc.eventID().run(); + } + } + + void TestServiceOne::postModuleStreamEndRun(StreamContext const& sc, ModuleCallingContext const& mcc) { + ++nPostModuleStreamEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << streamModuleIndent << "TestServiceOne::postModuleStreamEndRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " label = " << mcc.moduleDescription()->moduleLabel() + << " run = " << sc.eventID().run(); + } + } + + void TestServiceOne::preGlobalBeginRun(GlobalContext const& gc) { + ++nPreGlobalBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalIndent << "TestServiceOne::preGlobalBeginRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceOne::postGlobalBeginRun(GlobalContext const& gc) { + ++nPostGlobalBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalIndent << "TestServiceOne::postGlobalBeginRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceOne::preGlobalEndRun(GlobalContext const& gc) { + ++nPreGlobalEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalIndent << "TestServiceOne::preGlobalEndRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceOne::postGlobalEndRun(GlobalContext const& gc) { + ++nPostGlobalEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalIndent << "TestServiceOne::postGlobalEndRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceOne::preModuleGlobalBeginRun(GlobalContext const& gc, ModuleCallingContext const& mcc) { + ++nPreModuleGlobalBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalModuleIndent << "TestServiceOne::preModuleGlobalBeginRun " << TimeStamper(printTimestamps_) + << " label = " << mcc.moduleDescription()->moduleLabel() << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceOne::postModuleGlobalBeginRun(GlobalContext const& gc, ModuleCallingContext const& mcc) { + ++nPostModuleGlobalBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalModuleIndent << "TestServiceOne::postModuleGlobalBeginRun " << TimeStamper(printTimestamps_) + << " label = " << mcc.moduleDescription()->moduleLabel() << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceOne::preModuleGlobalEndRun(GlobalContext const& gc, ModuleCallingContext const& mcc) { + ++nPreModuleGlobalEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalModuleIndent << "TestServiceOne::preModuleGlobalEndRun " << TimeStamper(printTimestamps_) + << " label = " << mcc.moduleDescription()->moduleLabel() << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceOne::postModuleGlobalEndRun(GlobalContext const& gc, ModuleCallingContext const& mcc) { + ++nPostModuleGlobalEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalModuleIndent << "TestServiceOne::postModuleGlobalEndRun " << TimeStamper(printTimestamps_) + << " label = " << mcc.moduleDescription()->moduleLabel() << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceOne::preGlobalWriteRun(GlobalContext const& gc) { + ++nPreGlobalWriteRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalIndent << "TestServiceOne::preGlobalWriteRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceOne::postGlobalWriteRun(GlobalContext const& gc) { + ++nPostGlobalWriteRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceOne"); + out << globalIndent << "TestServiceOne::postGlobalWriteRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + unsigned int TestServiceOne::nPreStreamBeginLumi() const { return nPreStreamBeginLumi_.load(); } unsigned int TestServiceOne::nPostStreamBeginLumi() const { return nPostStreamBeginLumi_.load(); } unsigned int TestServiceOne::nPreStreamEndLumi() const { return nPreStreamEndLumi_.load(); } @@ -315,6 +489,29 @@ namespace edmtest { unsigned int TestServiceOne::nPreGlobalWriteLumi() const { return nPreGlobalWriteLumi_.load(); } unsigned int TestServiceOne::nPostGlobalWriteLumi() const { return nPostGlobalWriteLumi_.load(); } + + unsigned int TestServiceOne::nPreStreamBeginRun() const { return nPreStreamBeginRun_.load(); } + unsigned int TestServiceOne::nPostStreamBeginRun() const { return nPostStreamBeginRun_.load(); } + unsigned int TestServiceOne::nPreStreamEndRun() const { return nPreStreamEndRun_.load(); } + unsigned int TestServiceOne::nPostStreamEndRun() const { return nPostStreamEndRun_.load(); } + + unsigned int TestServiceOne::nPreModuleStreamBeginRun() const { return nPreModuleStreamBeginRun_.load(); } + unsigned int TestServiceOne::nPostModuleStreamBeginRun() const { return nPostModuleStreamBeginRun_.load(); } + unsigned int TestServiceOne::nPreModuleStreamEndRun() const { return nPreModuleStreamEndRun_.load(); } + unsigned int TestServiceOne::nPostModuleStreamEndRun() const { return nPostModuleStreamEndRun_.load(); } + + unsigned int TestServiceOne::nPreGlobalBeginRun() const { return nPreGlobalBeginRun_.load(); } + unsigned int TestServiceOne::nPostGlobalBeginRun() const { return nPostGlobalBeginRun_.load(); } + unsigned int TestServiceOne::nPreGlobalEndRun() const { return nPreGlobalEndRun_.load(); } + unsigned int TestServiceOne::nPostGlobalEndRun() const { return nPostGlobalEndRun_.load(); } + + unsigned int TestServiceOne::nPreModuleGlobalBeginRun() const { return nPreModuleGlobalBeginRun_.load(); } + unsigned int TestServiceOne::nPostModuleGlobalBeginRun() const { return nPostModuleGlobalBeginRun_.load(); } + unsigned int TestServiceOne::nPreModuleGlobalEndRun() const { return nPreModuleGlobalEndRun_.load(); } + unsigned int TestServiceOne::nPostModuleGlobalEndRun() const { return nPostModuleGlobalEndRun_.load(); } + + unsigned int TestServiceOne::nPreGlobalWriteRun() const { return nPreGlobalWriteRun_.load(); } + unsigned int TestServiceOne::nPostGlobalWriteRun() const { return nPostGlobalWriteRun_.load(); } } // namespace edmtest using edmtest::TestServiceOne; diff --git a/FWCore/Integration/plugins/TestServiceOne.h b/FWCore/Integration/plugins/TestServiceOne.h index 0d6e251ad41fc..b86a3bb00ba2a 100644 --- a/FWCore/Integration/plugins/TestServiceOne.h +++ b/FWCore/Integration/plugins/TestServiceOne.h @@ -31,9 +31,6 @@ namespace edmtest { void preBeginProcessBlock(edm::GlobalContext const&); void preEndProcessBlock(edm::GlobalContext const&); - void preGlobalBeginRun(edm::GlobalContext const&); - void preGlobalEndRun(edm::GlobalContext const&); - void preStreamBeginLumi(edm::StreamContext const&); void postStreamBeginLumi(edm::StreamContext const&); void preStreamEndLumi(edm::StreamContext const&); @@ -57,6 +54,29 @@ namespace edmtest { void preGlobalWriteLumi(edm::GlobalContext const&); void postGlobalWriteLumi(edm::GlobalContext const&); + void preStreamBeginRun(edm::StreamContext const&); + void postStreamBeginRun(edm::StreamContext const&); + void preStreamEndRun(edm::StreamContext const&); + void postStreamEndRun(edm::StreamContext const&); + + void preModuleStreamBeginRun(edm::StreamContext const&, edm::ModuleCallingContext const&); + void postModuleStreamBeginRun(edm::StreamContext const&, edm::ModuleCallingContext const&); + void preModuleStreamEndRun(edm::StreamContext const&, edm::ModuleCallingContext const&); + void postModuleStreamEndRun(edm::StreamContext const&, edm::ModuleCallingContext const&); + + void preGlobalBeginRun(edm::GlobalContext const&); + void postGlobalBeginRun(edm::GlobalContext const&); + void preGlobalEndRun(edm::GlobalContext const&); + void postGlobalEndRun(edm::GlobalContext const&); + + void preModuleGlobalBeginRun(edm::GlobalContext const&, edm::ModuleCallingContext const&); + void postModuleGlobalBeginRun(edm::GlobalContext const&, edm::ModuleCallingContext const&); + void preModuleGlobalEndRun(edm::GlobalContext const&, edm::ModuleCallingContext const&); + void postModuleGlobalEndRun(edm::GlobalContext const&, edm::ModuleCallingContext const&); + + void preGlobalWriteRun(edm::GlobalContext const&); + void postGlobalWriteRun(edm::GlobalContext const&); + unsigned int nPreStreamBeginLumi() const; unsigned int nPostStreamBeginLumi() const; unsigned int nPreStreamEndLumi() const; @@ -80,6 +100,29 @@ namespace edmtest { unsigned int nPreGlobalWriteLumi() const; unsigned int nPostGlobalWriteLumi() const; + unsigned int nPreStreamBeginRun() const; + unsigned int nPostStreamBeginRun() const; + unsigned int nPreStreamEndRun() const; + unsigned int nPostStreamEndRun() const; + + unsigned int nPreModuleStreamBeginRun() const; + unsigned int nPostModuleStreamBeginRun() const; + unsigned int nPreModuleStreamEndRun() const; + unsigned int nPostModuleStreamEndRun() const; + + unsigned int nPreGlobalBeginRun() const; + unsigned int nPostGlobalBeginRun() const; + unsigned int nPreGlobalEndRun() const; + unsigned int nPostGlobalEndRun() const; + + unsigned int nPreModuleGlobalBeginRun() const; + unsigned int nPostModuleGlobalBeginRun() const; + unsigned int nPreModuleGlobalEndRun() const; + unsigned int nPostModuleGlobalEndRun() const; + + unsigned int nPreGlobalWriteRun() const; + unsigned int nPostGlobalWriteRun() const; + private: bool verbose_; bool printTimestamps_; @@ -106,6 +149,29 @@ namespace edmtest { std::atomic nPreGlobalWriteLumi_ = 0; std::atomic nPostGlobalWriteLumi_ = 0; + + std::atomic nPreStreamBeginRun_ = 0; + std::atomic nPostStreamBeginRun_ = 0; + std::atomic nPreStreamEndRun_ = 0; + std::atomic nPostStreamEndRun_ = 0; + + std::atomic nPreModuleStreamBeginRun_ = 0; + std::atomic nPostModuleStreamBeginRun_ = 0; + std::atomic nPreModuleStreamEndRun_ = 0; + std::atomic nPostModuleStreamEndRun_ = 0; + + std::atomic nPreGlobalBeginRun_ = 0; + std::atomic nPostGlobalBeginRun_ = 0; + std::atomic nPreGlobalEndRun_ = 0; + std::atomic nPostGlobalEndRun_ = 0; + + std::atomic nPreModuleGlobalBeginRun_ = 0; + std::atomic nPostModuleGlobalBeginRun_ = 0; + std::atomic nPreModuleGlobalEndRun_ = 0; + std::atomic nPostModuleGlobalEndRun_ = 0; + + std::atomic nPreGlobalWriteRun_ = 0; + std::atomic nPostGlobalWriteRun_ = 0; }; } // namespace edmtest #endif diff --git a/FWCore/Integration/plugins/TestServiceTwo.cc b/FWCore/Integration/plugins/TestServiceTwo.cc index 9ff18a059b66f..e353e2fa322f9 100644 --- a/FWCore/Integration/plugins/TestServiceTwo.cc +++ b/FWCore/Integration/plugins/TestServiceTwo.cc @@ -60,9 +60,6 @@ namespace edmtest { iRegistry.watchPreBeginProcessBlock(this, &TestServiceTwo::preBeginProcessBlock); iRegistry.watchPreEndProcessBlock(this, &TestServiceTwo::preEndProcessBlock); - iRegistry.watchPreGlobalBeginRun(this, &TestServiceTwo::preGlobalBeginRun); - iRegistry.watchPreGlobalEndRun(this, &TestServiceTwo::preGlobalEndRun); - iRegistry.watchPreStreamBeginLumi(this, &TestServiceTwo::preStreamBeginLumi); iRegistry.watchPostStreamBeginLumi(this, &TestServiceTwo::postStreamBeginLumi); iRegistry.watchPreStreamEndLumi(this, &TestServiceTwo::preStreamEndLumi); @@ -85,6 +82,29 @@ namespace edmtest { iRegistry.watchPreGlobalWriteLumi(this, &TestServiceTwo::preGlobalWriteLumi); iRegistry.watchPostGlobalWriteLumi(this, &TestServiceTwo::postGlobalWriteLumi); + + iRegistry.watchPreStreamBeginRun(this, &TestServiceTwo::preStreamBeginRun); + iRegistry.watchPostStreamBeginRun(this, &TestServiceTwo::postStreamBeginRun); + iRegistry.watchPreStreamEndRun(this, &TestServiceTwo::preStreamEndRun); + iRegistry.watchPostStreamEndRun(this, &TestServiceTwo::postStreamEndRun); + + iRegistry.watchPreModuleStreamBeginRun(this, &TestServiceTwo::preModuleStreamBeginRun); + iRegistry.watchPostModuleStreamBeginRun(this, &TestServiceTwo::postModuleStreamBeginRun); + iRegistry.watchPreModuleStreamEndRun(this, &TestServiceTwo::preModuleStreamEndRun); + iRegistry.watchPostModuleStreamEndRun(this, &TestServiceTwo::postModuleStreamEndRun); + + iRegistry.watchPreGlobalBeginRun(this, &TestServiceTwo::preGlobalBeginRun); + iRegistry.watchPostGlobalBeginRun(this, &TestServiceTwo::postGlobalBeginRun); + iRegistry.watchPreGlobalEndRun(this, &TestServiceTwo::preGlobalEndRun); + iRegistry.watchPostGlobalEndRun(this, &TestServiceTwo::postGlobalEndRun); + + iRegistry.watchPreModuleGlobalBeginRun(this, &TestServiceTwo::preModuleGlobalBeginRun); + iRegistry.watchPostModuleGlobalBeginRun(this, &TestServiceTwo::postModuleGlobalBeginRun); + iRegistry.watchPreModuleGlobalEndRun(this, &TestServiceTwo::preModuleGlobalEndRun); + iRegistry.watchPostModuleGlobalEndRun(this, &TestServiceTwo::postModuleGlobalEndRun); + + iRegistry.watchPreGlobalWriteRun(this, &TestServiceTwo::preGlobalWriteRun); + iRegistry.watchPostGlobalWriteRun(this, &TestServiceTwo::postGlobalWriteRun); } void TestServiceTwo::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { @@ -107,18 +127,6 @@ namespace edmtest { } } - void TestServiceTwo::preGlobalBeginRun(GlobalContext const&) { - if (verbose_) { - edm::LogAbsolute("TestServiceTwo") << "test message from TestServiceTwo::preGlobalBeginRun"; - } - } - - void TestServiceTwo::preGlobalEndRun(GlobalContext const&) { - if (verbose_) { - edm::LogAbsolute("TestServiceTwo") << "test message from TestServiceTwo::preGlobalEndRun"; - } - } - void TestServiceTwo::preStreamBeginLumi(StreamContext const& sc) { ++nPreStreamBeginLumi_; if (verbose_) { @@ -293,6 +301,172 @@ namespace edmtest { } } + void TestServiceTwo::preStreamBeginRun(StreamContext const& sc) { + ++nPreStreamBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << streamIndent << "TestServiceTwo::preStreamBeginRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " run = " << sc.eventID().run(); + } + } + + void TestServiceTwo::postStreamBeginRun(StreamContext const& sc) { + ++nPostStreamBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << streamIndent << "TestServiceTwo::postStreamBeginRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " run = " << sc.eventID().run(); + } + } + + void TestServiceTwo::preStreamEndRun(StreamContext const& sc) { + ++nPreStreamEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << streamIndent << "TestServiceTwo::preStreamEndRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " run = " << sc.eventID().run(); + } + } + + void TestServiceTwo::postStreamEndRun(StreamContext const& sc) { + ++nPostStreamEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << streamIndent << "TestServiceTwo::postStreamEndRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " run = " << sc.eventID().run(); + } + } + + void TestServiceTwo::preModuleStreamBeginRun(StreamContext const& sc, ModuleCallingContext const& mcc) { + ++nPreModuleStreamBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << streamModuleIndent << "TestServiceTwo::preModuleStreamBeginRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " label = " << mcc.moduleDescription()->moduleLabel() + << " run = " << sc.eventID().run(); + } + } + + void TestServiceTwo::postModuleStreamBeginRun(StreamContext const& sc, ModuleCallingContext const& mcc) { + ++nPostModuleStreamBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << streamModuleIndent << "TestServiceTwo::postModuleStreamBeginRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " label = " << mcc.moduleDescription()->moduleLabel() + << " run = " << sc.eventID().run(); + } + } + + void TestServiceTwo::preModuleStreamEndRun(StreamContext const& sc, ModuleCallingContext const& mcc) { + ++nPreModuleStreamEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << streamModuleIndent << "TestServiceTwo::preModuleStreamEndRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " label = " << mcc.moduleDescription()->moduleLabel() + << " run = " << sc.eventID().run(); + } + } + + void TestServiceTwo::postModuleStreamEndRun(StreamContext const& sc, ModuleCallingContext const& mcc) { + ++nPostModuleStreamEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << streamModuleIndent << "TestServiceTwo::postModuleStreamEndRun " << TimeStamper(printTimestamps_) + << " stream = " << sc.streamID() << " label = " << mcc.moduleDescription()->moduleLabel() + << " run = " << sc.eventID().run(); + } + } + + void TestServiceTwo::preGlobalBeginRun(GlobalContext const& gc) { + ++nPreGlobalBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalIndent << "TestServiceTwo::preGlobalBeginRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceTwo::postGlobalBeginRun(GlobalContext const& gc) { + ++nPostGlobalBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalIndent << "TestServiceTwo::postGlobalBeginRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceTwo::preGlobalEndRun(GlobalContext const& gc) { + ++nPreGlobalEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalIndent << "TestServiceTwo::preGlobalEndRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceTwo::postGlobalEndRun(GlobalContext const& gc) { + ++nPostGlobalEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalIndent << "TestServiceTwo::postGlobalEndRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceTwo::preModuleGlobalBeginRun(GlobalContext const& gc, ModuleCallingContext const& mcc) { + ++nPreModuleGlobalBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalModuleIndent << "TestServiceTwo::preModuleGlobalBeginRun " << TimeStamper(printTimestamps_) + << " label = " << mcc.moduleDescription()->moduleLabel() << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceTwo::postModuleGlobalBeginRun(GlobalContext const& gc, ModuleCallingContext const& mcc) { + ++nPostModuleGlobalBeginRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalModuleIndent << "TestServiceTwo::postModuleGlobalBeginRun " << TimeStamper(printTimestamps_) + << " label = " << mcc.moduleDescription()->moduleLabel() << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceTwo::preModuleGlobalEndRun(GlobalContext const& gc, ModuleCallingContext const& mcc) { + ++nPreModuleGlobalEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalModuleIndent << "TestServiceTwo::preModuleGlobalEndRun " << TimeStamper(printTimestamps_) + << " label = " << mcc.moduleDescription()->moduleLabel() << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceTwo::postModuleGlobalEndRun(GlobalContext const& gc, ModuleCallingContext const& mcc) { + ++nPostModuleGlobalEndRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalModuleIndent << "TestServiceTwo::postModuleGlobalEndRun " << TimeStamper(printTimestamps_) + << " label = " << mcc.moduleDescription()->moduleLabel() << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceTwo::preGlobalWriteRun(GlobalContext const& gc) { + ++nPreGlobalWriteRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalIndent << "TestServiceTwo::preGlobalWriteRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + + void TestServiceTwo::postGlobalWriteRun(GlobalContext const& gc) { + ++nPostGlobalWriteRun_; + if (verbose_) { + edm::LogAbsolute out("TestServiceTwo"); + out << globalIndent << "TestServiceTwo::postGlobalWriteRun " << TimeStamper(printTimestamps_) + << " run = " << gc.luminosityBlockID().run(); + } + } + unsigned int TestServiceTwo::nPreStreamBeginLumi() const { return nPreStreamBeginLumi_.load(); } unsigned int TestServiceTwo::nPostStreamBeginLumi() const { return nPostStreamBeginLumi_.load(); } unsigned int TestServiceTwo::nPreStreamEndLumi() const { return nPreStreamEndLumi_.load(); } @@ -315,6 +489,29 @@ namespace edmtest { unsigned int TestServiceTwo::nPreGlobalWriteLumi() const { return nPreGlobalWriteLumi_.load(); } unsigned int TestServiceTwo::nPostGlobalWriteLumi() const { return nPostGlobalWriteLumi_.load(); } + + unsigned int TestServiceTwo::nPreStreamBeginRun() const { return nPreStreamBeginRun_.load(); } + unsigned int TestServiceTwo::nPostStreamBeginRun() const { return nPostStreamBeginRun_.load(); } + unsigned int TestServiceTwo::nPreStreamEndRun() const { return nPreStreamEndRun_.load(); } + unsigned int TestServiceTwo::nPostStreamEndRun() const { return nPostStreamEndRun_.load(); } + + unsigned int TestServiceTwo::nPreModuleStreamBeginRun() const { return nPreModuleStreamBeginRun_.load(); } + unsigned int TestServiceTwo::nPostModuleStreamBeginRun() const { return nPostModuleStreamBeginRun_.load(); } + unsigned int TestServiceTwo::nPreModuleStreamEndRun() const { return nPreModuleStreamEndRun_.load(); } + unsigned int TestServiceTwo::nPostModuleStreamEndRun() const { return nPostModuleStreamEndRun_.load(); } + + unsigned int TestServiceTwo::nPreGlobalBeginRun() const { return nPreGlobalBeginRun_.load(); } + unsigned int TestServiceTwo::nPostGlobalBeginRun() const { return nPostGlobalBeginRun_.load(); } + unsigned int TestServiceTwo::nPreGlobalEndRun() const { return nPreGlobalEndRun_.load(); } + unsigned int TestServiceTwo::nPostGlobalEndRun() const { return nPostGlobalEndRun_.load(); } + + unsigned int TestServiceTwo::nPreModuleGlobalBeginRun() const { return nPreModuleGlobalBeginRun_.load(); } + unsigned int TestServiceTwo::nPostModuleGlobalBeginRun() const { return nPostModuleGlobalBeginRun_.load(); } + unsigned int TestServiceTwo::nPreModuleGlobalEndRun() const { return nPreModuleGlobalEndRun_.load(); } + unsigned int TestServiceTwo::nPostModuleGlobalEndRun() const { return nPostModuleGlobalEndRun_.load(); } + + unsigned int TestServiceTwo::nPreGlobalWriteRun() const { return nPreGlobalWriteRun_.load(); } + unsigned int TestServiceTwo::nPostGlobalWriteRun() const { return nPostGlobalWriteRun_.load(); } } // namespace edmtest using edmtest::TestServiceTwo; diff --git a/FWCore/Integration/plugins/TestServiceTwo.h b/FWCore/Integration/plugins/TestServiceTwo.h index 03841e1ce5014..628dbcba266c1 100644 --- a/FWCore/Integration/plugins/TestServiceTwo.h +++ b/FWCore/Integration/plugins/TestServiceTwo.h @@ -36,9 +36,6 @@ namespace edmtest { void preBeginProcessBlock(edm::GlobalContext const&); void preEndProcessBlock(edm::GlobalContext const&); - void preGlobalBeginRun(edm::GlobalContext const&); - void preGlobalEndRun(edm::GlobalContext const&); - void preStreamBeginLumi(edm::StreamContext const&); void postStreamBeginLumi(edm::StreamContext const&); void preStreamEndLumi(edm::StreamContext const&); @@ -62,6 +59,29 @@ namespace edmtest { void preGlobalWriteLumi(edm::GlobalContext const&); void postGlobalWriteLumi(edm::GlobalContext const&); + void preStreamBeginRun(edm::StreamContext const&); + void postStreamBeginRun(edm::StreamContext const&); + void preStreamEndRun(edm::StreamContext const&); + void postStreamEndRun(edm::StreamContext const&); + + void preModuleStreamBeginRun(edm::StreamContext const&, edm::ModuleCallingContext const&); + void postModuleStreamBeginRun(edm::StreamContext const&, edm::ModuleCallingContext const&); + void preModuleStreamEndRun(edm::StreamContext const&, edm::ModuleCallingContext const&); + void postModuleStreamEndRun(edm::StreamContext const&, edm::ModuleCallingContext const&); + + void preGlobalBeginRun(edm::GlobalContext const&); + void postGlobalBeginRun(edm::GlobalContext const&); + void preGlobalEndRun(edm::GlobalContext const&); + void postGlobalEndRun(edm::GlobalContext const&); + + void preModuleGlobalBeginRun(edm::GlobalContext const&, edm::ModuleCallingContext const&); + void postModuleGlobalBeginRun(edm::GlobalContext const&, edm::ModuleCallingContext const&); + void preModuleGlobalEndRun(edm::GlobalContext const&, edm::ModuleCallingContext const&); + void postModuleGlobalEndRun(edm::GlobalContext const&, edm::ModuleCallingContext const&); + + void preGlobalWriteRun(edm::GlobalContext const&); + void postGlobalWriteRun(edm::GlobalContext const&); + unsigned int nPreStreamBeginLumi() const; unsigned int nPostStreamBeginLumi() const; unsigned int nPreStreamEndLumi() const; @@ -85,6 +105,29 @@ namespace edmtest { unsigned int nPreGlobalWriteLumi() const; unsigned int nPostGlobalWriteLumi() const; + unsigned int nPreStreamBeginRun() const; + unsigned int nPostStreamBeginRun() const; + unsigned int nPreStreamEndRun() const; + unsigned int nPostStreamEndRun() const; + + unsigned int nPreModuleStreamBeginRun() const; + unsigned int nPostModuleStreamBeginRun() const; + unsigned int nPreModuleStreamEndRun() const; + unsigned int nPostModuleStreamEndRun() const; + + unsigned int nPreGlobalBeginRun() const; + unsigned int nPostGlobalBeginRun() const; + unsigned int nPreGlobalEndRun() const; + unsigned int nPostGlobalEndRun() const; + + unsigned int nPreModuleGlobalBeginRun() const; + unsigned int nPostModuleGlobalBeginRun() const; + unsigned int nPreModuleGlobalEndRun() const; + unsigned int nPostModuleGlobalEndRun() const; + + unsigned int nPreGlobalWriteRun() const; + unsigned int nPostGlobalWriteRun() const; + private: bool verbose_; bool printTimestamps_; @@ -111,6 +154,29 @@ namespace edmtest { std::atomic nPreGlobalWriteLumi_ = 0; std::atomic nPostGlobalWriteLumi_ = 0; + + std::atomic nPreStreamBeginRun_ = 0; + std::atomic nPostStreamBeginRun_ = 0; + std::atomic nPreStreamEndRun_ = 0; + std::atomic nPostStreamEndRun_ = 0; + + std::atomic nPreModuleStreamBeginRun_ = 0; + std::atomic nPostModuleStreamBeginRun_ = 0; + std::atomic nPreModuleStreamEndRun_ = 0; + std::atomic nPostModuleStreamEndRun_ = 0; + + std::atomic nPreGlobalBeginRun_ = 0; + std::atomic nPostGlobalBeginRun_ = 0; + std::atomic nPreGlobalEndRun_ = 0; + std::atomic nPostGlobalEndRun_ = 0; + + std::atomic nPreModuleGlobalBeginRun_ = 0; + std::atomic nPostModuleGlobalBeginRun_ = 0; + std::atomic nPreModuleGlobalEndRun_ = 0; + std::atomic nPostModuleGlobalEndRun_ = 0; + + std::atomic nPreGlobalWriteRun_ = 0; + std::atomic nPostGlobalWriteRun_ = 0; }; } // namespace edmtest #endif diff --git a/FWCore/Integration/test/run_TestGetBy.sh b/FWCore/Integration/test/run_TestGetBy.sh index 143ae130c44f1..24509322bfd84 100755 --- a/FWCore/Integration/test/run_TestGetBy.sh +++ b/FWCore/Integration/test/run_TestGetBy.sh @@ -8,12 +8,11 @@ LOCAL_TEST_DIR=${SCRAM_TEST_PATH} echo "testGetBy1" cmsRun ${LOCAL_TEST_DIR}/${test}1_cfg.py > testGetBy1.log 2>/dev/null || die "cmsRun ${test}1_cfg.py" $? - grep -v "LegacyModules" testGetBy1.log > testGetBy1_1.log - diff ${LOCAL_TEST_DIR}/unit_test_outputs/testGetBy1.log testGetBy1_1.log || die "comparing testGetBy1.log" $? + diff ${LOCAL_TEST_DIR}/unit_test_outputs/testGetBy1.log testGetBy1.log || die "comparing testGetBy1.log" $? echo "testGetBy2" cmsRun ${LOCAL_TEST_DIR}/${test}2_cfg.py > testGetBy2.log 2>/dev/null || die "cmsRun ${test}2_cfg.py" $? - grep -v 'Initiating request to open file\|Successfully opened file\|Closed file\|LegacyModules' testGetBy2.log > testGetBy2_1.log + grep -v 'Initiating request to open file\|Successfully opened file\|Closed file' testGetBy2.log > testGetBy2_1.log diff ${LOCAL_TEST_DIR}/unit_test_outputs/testGetBy2.log testGetBy2_1.log || die "comparing testGetBy2.log" $? echo "testGetBy3" diff --git a/FWCore/Integration/test/testFrameworkExceptionHandling_cfg.py b/FWCore/Integration/test/testFrameworkExceptionHandling_cfg.py index 8e4bc1847c0f8..01d854ccb36a6 100644 --- a/FWCore/Integration/test/testFrameworkExceptionHandling_cfg.py +++ b/FWCore/Integration/test/testFrameworkExceptionHandling_cfg.py @@ -75,6 +75,11 @@ process.throwException.eventIDThrowOnEvent = cms.untracked.EventID(3, 1, 5) elif options.testNumber == 2: process.throwException.eventIDThrowOnGlobalBeginRun = cms.untracked.EventID(4, 0, 0) + process.throwException.expectedGlobalBeginRun = cms.untracked.uint32(4) + process.throwException.expectedOffsetNoGlobalEndRun = cms.untracked.uint32(1) + process.throwException.expectedOffsetNoWriteRun = cms.untracked.uint32(1) + process.doNotThrowException.expectedOffsetNoGlobalEndRun = cms.untracked.uint32(1) + process.doNotThrowException.expectedOffsetNoWriteRun = cms.untracked.uint32(1) elif options.testNumber == 3: process.throwException.eventIDThrowOnGlobalBeginLumi = cms.untracked.EventID(4, 1, 0) process.throwException.expectedGlobalBeginLumi = cms.untracked.uint32(4) @@ -84,6 +89,9 @@ process.doNotThrowException.expectedOffsetNoWriteLumi = cms.untracked.uint32(1) elif options.testNumber == 4: process.throwException.eventIDThrowOnGlobalEndRun = cms.untracked.EventID(3, 0, 0) + process.throwException.expectedGlobalBeginRun = cms.untracked.uint32(3) + process.throwException.expectedOffsetNoWriteRun = cms.untracked.uint32(1) + process.doNotThrowException.expectedOffsetNoWriteRun = cms.untracked.uint32(1) elif options.testNumber == 5: process.throwException.eventIDThrowOnGlobalEndLumi = cms.untracked.EventID(3, 1, 0) process.throwException.expectedGlobalBeginLumi = cms.untracked.uint32(3) @@ -91,6 +99,10 @@ process.doNotThrowException.expectedOffsetNoWriteLumi = cms.untracked.uint32(1) elif options.testNumber == 6: process.throwException.eventIDThrowOnStreamBeginRun = cms.untracked.EventID(4, 0, 0) + process.throwException.expectedStreamBeginRun = cms.untracked.uint32(4) + process.throwException.expectedOffsetNoStreamEndRun = cms.untracked.uint32(1) + process.doNotThrowException.expectedStreamBeginRun = cms.untracked.uint32(4) + process.doNotThrowException.expectedOffsetNoStreamEndRun = cms.untracked.uint32(1) elif options.testNumber == 7: process.throwException.eventIDThrowOnStreamBeginLumi = cms.untracked.EventID(4, 1, 0) process.throwException.expectedStreamBeginLumi = cms.untracked.uint32(4) @@ -99,10 +111,12 @@ process.doNotThrowException.expectedOffsetNoStreamEndLumi = cms.untracked.uint32(1) elif options.testNumber == 8: process.throwException.eventIDThrowOnStreamEndRun = cms.untracked.EventID(3, 0, 0) + process.throwException.expectedStreamBeginRun = cms.untracked.uint32(3) + process.doNotThrowException.expectedStreamBeginRun = cms.untracked.uint32(3) elif options.testNumber == 9: process.throwException.eventIDThrowOnStreamEndLumi = cms.untracked.EventID(3, 1, 0) - process.throwException.expectedStreamBeginLumi = cms.untracked.uint32(4) - process.doNotThrowException.expectedStreamBeginLumi = cms.untracked.uint32(4) + process.throwException.expectedStreamBeginLumi = cms.untracked.uint32(3) + process.doNotThrowException.expectedStreamBeginLumi = cms.untracked.uint32(3) else: print("The parameter named testNumber is out of range. An exception will not be thrown. Supported values range from 1 to 9.") print("The proper syntax for setting the parameter is:") diff --git a/FWCore/Integration/test/unit_test_outputs/testGetBy1.log b/FWCore/Integration/test/unit_test_outputs/testGetBy1.log index 1b5454140ad28..1c8cb0b469217 100644 --- a/FWCore/Integration/test/unit_test_outputs/testGetBy1.log +++ b/FWCore/Integration/test/unit_test_outputs/testGetBy1.log @@ -96,12 +96,8 @@ ModuleCallingContext state = Running ++++ finished: begin stream for module: stream = 0 label = 'a2' id = 5 ++++ starting: begin stream for module: stream = 0 label = 'a3' id = 6 ++++ finished: begin stream for module: stream = 0 label = 'a3' id = 6 -++++ starting: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 ++++ starting: begin stream for module: stream = 0 label = 'out' id = 7 ++++ finished: begin stream for module: stream = 0 label = 'out' id = 7 -++++ starting: begin stream for module: stream = 0 label = 'p' id = 2 -++++ finished: begin stream for module: stream = 0 label = 'p' id = 2 ++++ starting: begin stream for module: stream = 0 label = 'intProducerA' id = 8 StreamContext: StreamID = 0 transition = BeginStream run: 0 lumi: 0 event: 0 @@ -319,10 +315,8 @@ StreamContext: StreamID = 0 transition = BeginRun runIndex = 0 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 1 ProcessContext: PROD1 cf8fb4a5e3c9a108eac33826b2a17969 -++++++ starting: begin run for module: stream = 0 label = 'intProducerU' id = 12 -++++++ finished: begin run for module: stream = 0 label = 'intProducerU' id = 12 -++++++ starting: begin run for module: stream = 0 label = 'intProducerB' id = 9 -++++++ finished: begin run for module: stream = 0 label = 'intProducerB' id = 9 +++++++ starting: begin run for module: stream = 0 label = 'intProducer' id = 3 +++++++ finished: begin run for module: stream = 0 label = 'intProducer' id = 3 ++++++ starting: begin run for module: stream = 0 label = 'intProducerA' id = 8 StreamContext: StreamID = 0 transition = BeginRun run: 1 lumi: 0 event: 0 @@ -347,8 +341,10 @@ ModuleCallingContext state = Running runIndex = 0 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 1 ProcessContext: PROD1 cf8fb4a5e3c9a108eac33826b2a17969 -++++++ starting: begin run for module: stream = 0 label = 'intProducer' id = 3 -++++++ finished: begin run for module: stream = 0 label = 'intProducer' id = 3 +++++++ starting: begin run for module: stream = 0 label = 'intProducerB' id = 9 +++++++ finished: begin run for module: stream = 0 label = 'intProducerB' id = 9 +++++++ starting: begin run for module: stream = 0 label = 'intProducerU' id = 12 +++++++ finished: begin run for module: stream = 0 label = 'intProducerU' id = 12 ++++ finished: begin run: stream = 0 run = 1 time = 1 StreamContext: StreamID = 0 transition = BeginRun run: 1 lumi: 0 event: 0 @@ -462,10 +458,8 @@ StreamContext: StreamID = 0 transition = BeginLuminosityBlock runIndex = 0 luminosityBlockIndex = 0 unixTime = 0 microsecondOffset = 1 ProcessContext: PROD1 cf8fb4a5e3c9a108eac33826b2a17969 -++++++ starting: begin lumi for module: stream = 0 label = 'intProducerU' id = 12 -++++++ finished: begin lumi for module: stream = 0 label = 'intProducerU' id = 12 -++++++ starting: begin lumi for module: stream = 0 label = 'intProducerB' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'intProducerB' id = 9 +++++++ starting: begin lumi for module: stream = 0 label = 'intProducer' id = 3 +++++++ finished: begin lumi for module: stream = 0 label = 'intProducer' id = 3 ++++++ starting: begin lumi for module: stream = 0 label = 'intProducerA' id = 8 StreamContext: StreamID = 0 transition = BeginLuminosityBlock run: 1 lumi: 1 event: 0 @@ -490,8 +484,10 @@ ModuleCallingContext state = Running runIndex = 0 luminosityBlockIndex = 0 unixTime = 0 microsecondOffset = 1 ProcessContext: PROD1 cf8fb4a5e3c9a108eac33826b2a17969 -++++++ starting: begin lumi for module: stream = 0 label = 'intProducer' id = 3 -++++++ finished: begin lumi for module: stream = 0 label = 'intProducer' id = 3 +++++++ starting: begin lumi for module: stream = 0 label = 'intProducerB' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'intProducerB' id = 9 +++++++ starting: begin lumi for module: stream = 0 label = 'intProducerU' id = 12 +++++++ finished: begin lumi for module: stream = 0 label = 'intProducerU' id = 12 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 1 time = 1 StreamContext: StreamID = 0 transition = BeginLuminosityBlock run: 1 lumi: 1 event: 0 @@ -1193,10 +1189,8 @@ StreamContext: StreamID = 0 transition = EndLuminosityBlock runIndex = 0 luminosityBlockIndex = 0 unixTime = 0 microsecondOffset = 15000001 ProcessContext: PROD1 cf8fb4a5e3c9a108eac33826b2a17969 -++++++ starting: end lumi for module: stream = 0 label = 'intProducerU' id = 12 -++++++ finished: end lumi for module: stream = 0 label = 'intProducerU' id = 12 -++++++ starting: end lumi for module: stream = 0 label = 'intProducerB' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'intProducerB' id = 9 +++++++ starting: end lumi for module: stream = 0 label = 'intProducer' id = 3 +++++++ finished: end lumi for module: stream = 0 label = 'intProducer' id = 3 ++++++ starting: end lumi for module: stream = 0 label = 'intProducerA' id = 8 StreamContext: StreamID = 0 transition = EndLuminosityBlock run: 1 lumi: 1 event: 0 @@ -1221,8 +1215,10 @@ ModuleCallingContext state = Running runIndex = 0 luminosityBlockIndex = 0 unixTime = 0 microsecondOffset = 15000001 ProcessContext: PROD1 cf8fb4a5e3c9a108eac33826b2a17969 -++++++ starting: end lumi for module: stream = 0 label = 'intProducer' id = 3 -++++++ finished: end lumi for module: stream = 0 label = 'intProducer' id = 3 +++++++ starting: end lumi for module: stream = 0 label = 'intProducerB' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'intProducerB' id = 9 +++++++ starting: end lumi for module: stream = 0 label = 'intProducerU' id = 12 +++++++ finished: end lumi for module: stream = 0 label = 'intProducerU' id = 12 ++++ finished: end lumi: stream = 0 run = 1 lumi = 1 time = 15000001 StreamContext: StreamID = 0 transition = EndLuminosityBlock run: 1 lumi: 1 event: 0 @@ -1359,10 +1355,8 @@ StreamContext: StreamID = 0 transition = EndRun runIndex = 0 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 15000001 ProcessContext: PROD1 cf8fb4a5e3c9a108eac33826b2a17969 -++++++ starting: end run for module: stream = 0 label = 'intProducerU' id = 12 -++++++ finished: end run for module: stream = 0 label = 'intProducerU' id = 12 -++++++ starting: end run for module: stream = 0 label = 'intProducerB' id = 9 -++++++ finished: end run for module: stream = 0 label = 'intProducerB' id = 9 +++++++ starting: end run for module: stream = 0 label = 'intProducer' id = 3 +++++++ finished: end run for module: stream = 0 label = 'intProducer' id = 3 ++++++ starting: end run for module: stream = 0 label = 'intProducerA' id = 8 StreamContext: StreamID = 0 transition = EndRun run: 1 lumi: 0 event: 0 @@ -1387,8 +1381,10 @@ ModuleCallingContext state = Running runIndex = 0 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 15000001 ProcessContext: PROD1 cf8fb4a5e3c9a108eac33826b2a17969 -++++++ starting: end run for module: stream = 0 label = 'intProducer' id = 3 -++++++ finished: end run for module: stream = 0 label = 'intProducer' id = 3 +++++++ starting: end run for module: stream = 0 label = 'intProducerB' id = 9 +++++++ finished: end run for module: stream = 0 label = 'intProducerB' id = 9 +++++++ starting: end run for module: stream = 0 label = 'intProducerU' id = 12 +++++++ finished: end run for module: stream = 0 label = 'intProducerU' id = 12 ++++ finished: end run: stream = 0 run = 1 time = 15000001 StreamContext: StreamID = 0 transition = EndRun run: 1 lumi: 0 event: 0 @@ -1695,12 +1691,8 @@ ModuleCallingContext state = Running ++++ finished: end stream for module: stream = 0 label = 'a2' id = 5 ++++ starting: end stream for module: stream = 0 label = 'a3' id = 6 ++++ finished: end stream for module: stream = 0 label = 'a3' id = 6 -++++ starting: end stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: end stream for module: stream = 0 label = 'TriggerResults' id = 1 ++++ starting: end stream for module: stream = 0 label = 'out' id = 7 ++++ finished: end stream for module: stream = 0 label = 'out' id = 7 -++++ starting: end stream for module: stream = 0 label = 'p' id = 2 -++++ finished: end stream for module: stream = 0 label = 'p' id = 2 ++++ starting: end stream for module: stream = 0 label = 'intProducerA' id = 8 StreamContext: StreamID = 0 transition = EndStream run: 0 lumi: 0 event: 0 diff --git a/FWCore/Integration/test/unit_test_outputs/testGetBy2.log b/FWCore/Integration/test/unit_test_outputs/testGetBy2.log index 1f5691790acf9..01f56b3888bf7 100644 --- a/FWCore/Integration/test/unit_test_outputs/testGetBy2.log +++ b/FWCore/Integration/test/unit_test_outputs/testGetBy2.log @@ -59,12 +59,8 @@ ModuleCallingContext state = Running runIndex = 4294967295 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 0 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 -++++ starting: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 ++++ starting: begin stream for module: stream = 0 label = 'out' id = 4 ++++ finished: begin stream for module: stream = 0 label = 'out' id = 4 -++++ starting: begin stream for module: stream = 0 label = 'p' id = 2 -++++ finished: begin stream for module: stream = 0 label = 'p' id = 2 ++++ starting: begin stream for module: stream = 0 label = 'intProducerU' id = 5 ++++ finished: begin stream for module: stream = 0 label = 'intProducerU' id = 5 ++++ starting: begin stream for module: stream = 0 label = 'intVectorProducer' id = 6 @@ -132,8 +128,6 @@ StreamContext: StreamID = 0 transition = BeginRun runIndex = 0 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 1 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 -++++++ starting: begin run for module: stream = 0 label = 'intProducerU' id = 5 -++++++ finished: begin run for module: stream = 0 label = 'intProducerU' id = 5 ++++++ starting: begin run for module: stream = 0 label = 'intProducer' id = 3 StreamContext: StreamID = 0 transition = BeginRun run: 1 lumi: 0 event: 0 @@ -158,6 +152,8 @@ ModuleCallingContext state = Running runIndex = 0 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 1 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 +++++++ starting: begin run for module: stream = 0 label = 'intProducerU' id = 5 +++++++ finished: begin run for module: stream = 0 label = 'intProducerU' id = 5 ++++ finished: begin run: stream = 0 run = 1 time = 1 StreamContext: StreamID = 0 transition = BeginRun run: 1 lumi: 0 event: 0 @@ -187,8 +183,6 @@ StreamContext: StreamID = 0 transition = BeginLuminosityBlock runIndex = 0 luminosityBlockIndex = 0 unixTime = 0 microsecondOffset = 1 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 -++++++ starting: begin lumi for module: stream = 0 label = 'intProducerU' id = 5 -++++++ finished: begin lumi for module: stream = 0 label = 'intProducerU' id = 5 ++++++ starting: begin lumi for module: stream = 0 label = 'intProducer' id = 3 StreamContext: StreamID = 0 transition = BeginLuminosityBlock run: 1 lumi: 1 event: 0 @@ -213,6 +207,8 @@ ModuleCallingContext state = Running runIndex = 0 luminosityBlockIndex = 0 unixTime = 0 microsecondOffset = 1 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 +++++++ starting: begin lumi for module: stream = 0 label = 'intProducerU' id = 5 +++++++ finished: begin lumi for module: stream = 0 label = 'intProducerU' id = 5 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 1 time = 1 StreamContext: StreamID = 0 transition = BeginLuminosityBlock run: 1 lumi: 1 event: 0 @@ -666,8 +662,6 @@ StreamContext: StreamID = 0 transition = EndLuminosityBlock runIndex = 0 luminosityBlockIndex = 0 unixTime = 0 microsecondOffset = 15000001 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 -++++++ starting: end lumi for module: stream = 0 label = 'intProducerU' id = 5 -++++++ finished: end lumi for module: stream = 0 label = 'intProducerU' id = 5 ++++++ starting: end lumi for module: stream = 0 label = 'intProducer' id = 3 StreamContext: StreamID = 0 transition = EndLuminosityBlock run: 1 lumi: 1 event: 0 @@ -692,6 +686,8 @@ ModuleCallingContext state = Running runIndex = 0 luminosityBlockIndex = 0 unixTime = 0 microsecondOffset = 15000001 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 +++++++ starting: end lumi for module: stream = 0 label = 'intProducerU' id = 5 +++++++ finished: end lumi for module: stream = 0 label = 'intProducerU' id = 5 ++++ finished: end lumi: stream = 0 run = 1 lumi = 1 time = 15000001 StreamContext: StreamID = 0 transition = EndLuminosityBlock run: 1 lumi: 1 event: 0 @@ -730,8 +726,6 @@ StreamContext: StreamID = 0 transition = EndRun runIndex = 0 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 15000001 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 -++++++ starting: end run for module: stream = 0 label = 'intProducerU' id = 5 -++++++ finished: end run for module: stream = 0 label = 'intProducerU' id = 5 ++++++ starting: end run for module: stream = 0 label = 'intProducer' id = 3 StreamContext: StreamID = 0 transition = EndRun run: 1 lumi: 0 event: 0 @@ -756,6 +750,8 @@ ModuleCallingContext state = Running runIndex = 0 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 15000001 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 +++++++ starting: end run for module: stream = 0 label = 'intProducerU' id = 5 +++++++ finished: end run for module: stream = 0 label = 'intProducerU' id = 5 ++++ finished: end run: stream = 0 run = 1 time = 15000001 StreamContext: StreamID = 0 transition = EndRun run: 1 lumi: 0 event: 0 @@ -840,12 +836,8 @@ ModuleCallingContext state = Running runIndex = 4294967295 luminosityBlockIndex = 4294967295 unixTime = 0 microsecondOffset = 0 ProcessContext: PROD2 9a42d7e4995aeb2a3c9d04a3ef0f3879 -++++ starting: end stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: end stream for module: stream = 0 label = 'TriggerResults' id = 1 ++++ starting: end stream for module: stream = 0 label = 'out' id = 4 ++++ finished: end stream for module: stream = 0 label = 'out' id = 4 -++++ starting: end stream for module: stream = 0 label = 'p' id = 2 -++++ finished: end stream for module: stream = 0 label = 'p' id = 2 ++++ starting: end stream for module: stream = 0 label = 'intProducerU' id = 5 ++++ finished: end stream for module: stream = 0 label = 'intProducerU' id = 5 ++++ starting: end stream for module: stream = 0 label = 'intVectorProducer' id = 6 diff --git a/FWCore/Integration/test/unit_test_outputs/testSubProcess.grep2.txt b/FWCore/Integration/test/unit_test_outputs/testSubProcess.grep2.txt index 58c0e1f80ca95..cd422f6637d0b 100644 --- a/FWCore/Integration/test/unit_test_outputs/testSubProcess.grep2.txt +++ b/FWCore/Integration/test/unit_test_outputs/testSubProcess.grep2.txt @@ -162,14 +162,6 @@ ++++ finished: begin stream for module: stream = 0 label = 'getInt' id = 10 ++++ starting: begin stream for module: stream = 0 label = 'noPut' id = 11 ++++ finished: begin stream for module: stream = 0 label = 'noPut' id = 11 -++++ starting: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: begin stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ starting: begin stream for module: stream = 0 label = 'p1' id = 2 -++++ finished: begin stream for module: stream = 0 label = 'p1' id = 2 -++++ starting: begin stream for module: stream = 0 label = 'path1' id = 3 -++++ finished: begin stream for module: stream = 0 label = 'path1' id = 3 -++++ starting: begin stream for module: stream = 0 label = 'path2' id = 4 -++++ finished: begin stream for module: stream = 0 label = 'path2' id = 4 ++++ starting: begin stream for module: stream = 0 label = 'thingWithMergeProducer' id = 17 ++++ finished: begin stream for module: stream = 0 label = 'thingWithMergeProducer' id = 17 ++++ starting: begin stream for module: stream = 0 label = 'test' id = 18 @@ -182,18 +174,8 @@ ++++ finished: begin stream for module: stream = 0 label = 'getInt' id = 21 ++++ starting: begin stream for module: stream = 0 label = 'dependsOnNoPut' id = 22 ++++ finished: begin stream for module: stream = 0 label = 'dependsOnNoPut' id = 22 -++++ starting: begin stream for module: stream = 0 label = 'TriggerResults' id = 12 -++++ finished: begin stream for module: stream = 0 label = 'TriggerResults' id = 12 ++++ starting: begin stream for module: stream = 0 label = 'out' id = 23 ++++ finished: begin stream for module: stream = 0 label = 'out' id = 23 -++++ starting: begin stream for module: stream = 0 label = 'path1' id = 13 -++++ finished: begin stream for module: stream = 0 label = 'path1' id = 13 -++++ starting: begin stream for module: stream = 0 label = 'path2' id = 14 -++++ finished: begin stream for module: stream = 0 label = 'path2' id = 14 -++++ starting: begin stream for module: stream = 0 label = 'path3' id = 15 -++++ finished: begin stream for module: stream = 0 label = 'path3' id = 15 -++++ starting: begin stream for module: stream = 0 label = 'path4' id = 16 -++++ finished: begin stream for module: stream = 0 label = 'path4' id = 16 ++++ starting: begin stream for module: stream = 0 label = 'thingWithMergeProducer' id = 29 ++++ finished: begin stream for module: stream = 0 label = 'thingWithMergeProducer' id = 29 ++++ starting: begin stream for module: stream = 0 label = 'test' id = 30 @@ -206,18 +188,8 @@ ++++ finished: begin stream for module: stream = 0 label = 'getInt' id = 33 ++++ starting: begin stream for module: stream = 0 label = 'dependsOnNoPut' id = 34 ++++ finished: begin stream for module: stream = 0 label = 'dependsOnNoPut' id = 34 -++++ starting: begin stream for module: stream = 0 label = 'TriggerResults' id = 24 -++++ finished: begin stream for module: stream = 0 label = 'TriggerResults' id = 24 ++++ starting: begin stream for module: stream = 0 label = 'out' id = 35 ++++ finished: begin stream for module: stream = 0 label = 'out' id = 35 -++++ starting: begin stream for module: stream = 0 label = 'path1' id = 25 -++++ finished: begin stream for module: stream = 0 label = 'path1' id = 25 -++++ starting: begin stream for module: stream = 0 label = 'path2' id = 26 -++++ finished: begin stream for module: stream = 0 label = 'path2' id = 26 -++++ starting: begin stream for module: stream = 0 label = 'path3' id = 27 -++++ finished: begin stream for module: stream = 0 label = 'path3' id = 27 -++++ starting: begin stream for module: stream = 0 label = 'path4' id = 28 -++++ finished: begin stream for module: stream = 0 label = 'path4' id = 28 ++++ starting: begin process block ++++ finished: begin process block ++++ starting: begin process block @@ -336,12 +308,12 @@ ++++ starting: begin run: stream = 0 run = 1 time = 1 ++++ finished: begin run: stream = 0 run = 1 time = 1 ++++ starting: begin run: stream = 0 run = 1 time = 1 -++++++ starting: begin run for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin run for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin run for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin run for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin run for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin run for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin run for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin run for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin run for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin run for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin run: stream = 0 run = 1 time = 1 ++++ starting: begin run: stream = 0 run = 1 time = 1 ++++ finished: begin run: stream = 0 run = 1 time = 1 @@ -435,12 +407,12 @@ ++++ starting: begin lumi: stream = 0 run = 1 lumi = 1 time = 1 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 1 time = 1 ++++ starting: begin lumi: stream = 0 run = 1 lumi = 1 time = 1 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 1 time = 1 ++++ starting: begin lumi: stream = 0 run = 1 lumi = 1 time = 1 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 1 time = 1 @@ -1064,12 +1036,12 @@ ++++ starting: end lumi: stream = 0 run = 1 lumi = 1 time = 0 ++++ finished: end lumi: stream = 0 run = 1 lumi = 1 time = 0 ++++ starting: end lumi: stream = 0 run = 1 lumi = 1 time = 0 -++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end lumi: stream = 0 run = 1 lumi = 1 time = 0 ++++ starting: end lumi: stream = 0 run = 1 lumi = 1 time = 0 ++++ finished: end lumi: stream = 0 run = 1 lumi = 1 time = 0 @@ -1252,12 +1224,12 @@ ++++ starting: begin lumi: stream = 0 run = 1 lumi = 2 time = 25000001 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 2 time = 25000001 ++++ starting: begin lumi: stream = 0 run = 1 lumi = 2 time = 25000001 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 2 time = 25000001 ++++ starting: begin lumi: stream = 0 run = 1 lumi = 2 time = 25000001 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 2 time = 25000001 @@ -1881,12 +1853,12 @@ ++++ starting: end lumi: stream = 0 run = 1 lumi = 2 time = 0 ++++ finished: end lumi: stream = 0 run = 1 lumi = 2 time = 0 ++++ starting: end lumi: stream = 0 run = 1 lumi = 2 time = 0 -++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end lumi: stream = 0 run = 1 lumi = 2 time = 0 ++++ starting: end lumi: stream = 0 run = 1 lumi = 2 time = 0 ++++ finished: end lumi: stream = 0 run = 1 lumi = 2 time = 0 @@ -2069,12 +2041,12 @@ ++++ starting: begin lumi: stream = 0 run = 1 lumi = 3 time = 45000001 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 3 time = 45000001 ++++ starting: begin lumi: stream = 0 run = 1 lumi = 3 time = 45000001 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 3 time = 45000001 ++++ starting: begin lumi: stream = 0 run = 1 lumi = 3 time = 45000001 ++++ finished: begin lumi: stream = 0 run = 1 lumi = 3 time = 45000001 @@ -2394,12 +2366,12 @@ ++++ starting: end lumi: stream = 0 run = 1 lumi = 3 time = 0 ++++ finished: end lumi: stream = 0 run = 1 lumi = 3 time = 0 ++++ starting: end lumi: stream = 0 run = 1 lumi = 3 time = 0 -++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end lumi: stream = 0 run = 1 lumi = 3 time = 0 ++++ starting: end lumi: stream = 0 run = 1 lumi = 3 time = 0 ++++ finished: end lumi: stream = 0 run = 1 lumi = 3 time = 0 @@ -2507,12 +2479,12 @@ ++++ starting: end run: stream = 0 run = 1 time = 0 ++++ finished: end run: stream = 0 run = 1 time = 0 ++++ starting: end run: stream = 0 run = 1 time = 0 -++++++ starting: end run for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end run for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end run for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end run for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end run for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end run for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end run for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end run for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end run for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end run for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end run: stream = 0 run = 1 time = 0 ++++ starting: end run: stream = 0 run = 1 time = 0 ++++ finished: end run: stream = 0 run = 1 time = 0 @@ -2695,12 +2667,12 @@ ++++ starting: begin run: stream = 0 run = 2 time = 55000001 ++++ finished: begin run: stream = 0 run = 2 time = 55000001 ++++ starting: begin run: stream = 0 run = 2 time = 55000001 -++++++ starting: begin run for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin run for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin run for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin run for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin run for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin run for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin run for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin run for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin run for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin run for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin run: stream = 0 run = 2 time = 55000001 ++++ starting: begin run: stream = 0 run = 2 time = 55000001 ++++ finished: begin run: stream = 0 run = 2 time = 55000001 @@ -2794,12 +2766,12 @@ ++++ starting: begin lumi: stream = 0 run = 2 lumi = 1 time = 55000001 ++++ finished: begin lumi: stream = 0 run = 2 lumi = 1 time = 55000001 ++++ starting: begin lumi: stream = 0 run = 2 lumi = 1 time = 55000001 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin lumi: stream = 0 run = 2 lumi = 1 time = 55000001 ++++ starting: begin lumi: stream = 0 run = 2 lumi = 1 time = 55000001 ++++ finished: begin lumi: stream = 0 run = 2 lumi = 1 time = 55000001 @@ -3423,12 +3395,12 @@ ++++ starting: end lumi: stream = 0 run = 2 lumi = 1 time = 0 ++++ finished: end lumi: stream = 0 run = 2 lumi = 1 time = 0 ++++ starting: end lumi: stream = 0 run = 2 lumi = 1 time = 0 -++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end lumi: stream = 0 run = 2 lumi = 1 time = 0 ++++ starting: end lumi: stream = 0 run = 2 lumi = 1 time = 0 ++++ finished: end lumi: stream = 0 run = 2 lumi = 1 time = 0 @@ -3611,12 +3583,12 @@ ++++ starting: begin lumi: stream = 0 run = 2 lumi = 2 time = 75000001 ++++ finished: begin lumi: stream = 0 run = 2 lumi = 2 time = 75000001 ++++ starting: begin lumi: stream = 0 run = 2 lumi = 2 time = 75000001 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin lumi: stream = 0 run = 2 lumi = 2 time = 75000001 ++++ starting: begin lumi: stream = 0 run = 2 lumi = 2 time = 75000001 ++++ finished: begin lumi: stream = 0 run = 2 lumi = 2 time = 75000001 @@ -4240,12 +4212,12 @@ ++++ starting: end lumi: stream = 0 run = 2 lumi = 2 time = 0 ++++ finished: end lumi: stream = 0 run = 2 lumi = 2 time = 0 ++++ starting: end lumi: stream = 0 run = 2 lumi = 2 time = 0 -++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end lumi: stream = 0 run = 2 lumi = 2 time = 0 ++++ starting: end lumi: stream = 0 run = 2 lumi = 2 time = 0 ++++ finished: end lumi: stream = 0 run = 2 lumi = 2 time = 0 @@ -4428,12 +4400,12 @@ ++++ starting: begin lumi: stream = 0 run = 2 lumi = 3 time = 95000001 ++++ finished: begin lumi: stream = 0 run = 2 lumi = 3 time = 95000001 ++++ starting: begin lumi: stream = 0 run = 2 lumi = 3 time = 95000001 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin lumi: stream = 0 run = 2 lumi = 3 time = 95000001 ++++ starting: begin lumi: stream = 0 run = 2 lumi = 3 time = 95000001 ++++ finished: begin lumi: stream = 0 run = 2 lumi = 3 time = 95000001 @@ -4753,12 +4725,12 @@ ++++ starting: end lumi: stream = 0 run = 2 lumi = 3 time = 0 ++++ finished: end lumi: stream = 0 run = 2 lumi = 3 time = 0 ++++ starting: end lumi: stream = 0 run = 2 lumi = 3 time = 0 -++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end lumi: stream = 0 run = 2 lumi = 3 time = 0 ++++ starting: end lumi: stream = 0 run = 2 lumi = 3 time = 0 ++++ finished: end lumi: stream = 0 run = 2 lumi = 3 time = 0 @@ -4866,12 +4838,12 @@ ++++ starting: end run: stream = 0 run = 2 time = 0 ++++ finished: end run: stream = 0 run = 2 time = 0 ++++ starting: end run: stream = 0 run = 2 time = 0 -++++++ starting: end run for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end run for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end run for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end run for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end run for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end run for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end run for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end run for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end run for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end run for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end run: stream = 0 run = 2 time = 0 ++++ starting: end run: stream = 0 run = 2 time = 0 ++++ finished: end run: stream = 0 run = 2 time = 0 @@ -5054,12 +5026,12 @@ ++++ starting: begin run: stream = 0 run = 3 time = 105000001 ++++ finished: begin run: stream = 0 run = 3 time = 105000001 ++++ starting: begin run: stream = 0 run = 3 time = 105000001 -++++++ starting: begin run for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin run for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin run for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin run for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin run for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin run for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin run for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin run for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin run for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin run for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin run: stream = 0 run = 3 time = 105000001 ++++ starting: begin run: stream = 0 run = 3 time = 105000001 ++++ finished: begin run: stream = 0 run = 3 time = 105000001 @@ -5153,12 +5125,12 @@ ++++ starting: begin lumi: stream = 0 run = 3 lumi = 1 time = 105000001 ++++ finished: begin lumi: stream = 0 run = 3 lumi = 1 time = 105000001 ++++ starting: begin lumi: stream = 0 run = 3 lumi = 1 time = 105000001 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin lumi: stream = 0 run = 3 lumi = 1 time = 105000001 ++++ starting: begin lumi: stream = 0 run = 3 lumi = 1 time = 105000001 ++++ finished: begin lumi: stream = 0 run = 3 lumi = 1 time = 105000001 @@ -5782,12 +5754,12 @@ ++++ starting: end lumi: stream = 0 run = 3 lumi = 1 time = 0 ++++ finished: end lumi: stream = 0 run = 3 lumi = 1 time = 0 ++++ starting: end lumi: stream = 0 run = 3 lumi = 1 time = 0 -++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end lumi: stream = 0 run = 3 lumi = 1 time = 0 ++++ starting: end lumi: stream = 0 run = 3 lumi = 1 time = 0 ++++ finished: end lumi: stream = 0 run = 3 lumi = 1 time = 0 @@ -5970,12 +5942,12 @@ ++++ starting: begin lumi: stream = 0 run = 3 lumi = 2 time = 125000001 ++++ finished: begin lumi: stream = 0 run = 3 lumi = 2 time = 125000001 ++++ starting: begin lumi: stream = 0 run = 3 lumi = 2 time = 125000001 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin lumi: stream = 0 run = 3 lumi = 2 time = 125000001 ++++ starting: begin lumi: stream = 0 run = 3 lumi = 2 time = 125000001 ++++ finished: begin lumi: stream = 0 run = 3 lumi = 2 time = 125000001 @@ -6599,12 +6571,12 @@ ++++ starting: end lumi: stream = 0 run = 3 lumi = 2 time = 0 ++++ finished: end lumi: stream = 0 run = 3 lumi = 2 time = 0 ++++ starting: end lumi: stream = 0 run = 3 lumi = 2 time = 0 -++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end lumi: stream = 0 run = 3 lumi = 2 time = 0 ++++ starting: end lumi: stream = 0 run = 3 lumi = 2 time = 0 ++++ finished: end lumi: stream = 0 run = 3 lumi = 2 time = 0 @@ -6787,12 +6759,12 @@ ++++ starting: begin lumi: stream = 0 run = 3 lumi = 3 time = 145000001 ++++ finished: begin lumi: stream = 0 run = 3 lumi = 3 time = 145000001 ++++ starting: begin lumi: stream = 0 run = 3 lumi = 3 time = 145000001 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: begin lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: begin lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: begin lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: begin lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: begin lumi: stream = 0 run = 3 lumi = 3 time = 145000001 ++++ starting: begin lumi: stream = 0 run = 3 lumi = 3 time = 145000001 ++++ finished: begin lumi: stream = 0 run = 3 lumi = 3 time = 145000001 @@ -7112,12 +7084,12 @@ ++++ starting: end lumi: stream = 0 run = 3 lumi = 3 time = 0 ++++ finished: end lumi: stream = 0 run = 3 lumi = 3 time = 0 ++++ starting: end lumi: stream = 0 run = 3 lumi = 3 time = 0 -++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end lumi for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end lumi for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end lumi for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end lumi for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end lumi for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end lumi: stream = 0 run = 3 lumi = 3 time = 0 ++++ starting: end lumi: stream = 0 run = 3 lumi = 3 time = 0 ++++ finished: end lumi: stream = 0 run = 3 lumi = 3 time = 0 @@ -7222,12 +7194,12 @@ ++++ starting: end run: stream = 0 run = 3 time = 0 ++++ finished: end run: stream = 0 run = 3 time = 0 ++++ starting: end run: stream = 0 run = 3 time = 0 -++++++ starting: end run for module: stream = 0 label = 'putInt3' id = 9 -++++++ finished: end run for module: stream = 0 label = 'putInt3' id = 9 -++++++ starting: end run for module: stream = 0 label = 'putInt2' id = 8 -++++++ finished: end run for module: stream = 0 label = 'putInt2' id = 8 ++++++ starting: end run for module: stream = 0 label = 'putInt' id = 7 ++++++ finished: end run for module: stream = 0 label = 'putInt' id = 7 +++++++ starting: end run for module: stream = 0 label = 'putInt2' id = 8 +++++++ finished: end run for module: stream = 0 label = 'putInt2' id = 8 +++++++ starting: end run for module: stream = 0 label = 'putInt3' id = 9 +++++++ finished: end run for module: stream = 0 label = 'putInt3' id = 9 ++++ finished: end run: stream = 0 run = 3 time = 0 ++++ starting: end run: stream = 0 run = 3 time = 0 ++++ finished: end run: stream = 0 run = 3 time = 0 @@ -7381,14 +7353,6 @@ ++++ finished: end stream for module: stream = 0 label = 'getInt' id = 10 ++++ starting: end stream for module: stream = 0 label = 'noPut' id = 11 ++++ finished: end stream for module: stream = 0 label = 'noPut' id = 11 -++++ starting: end stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ finished: end stream for module: stream = 0 label = 'TriggerResults' id = 1 -++++ starting: end stream for module: stream = 0 label = 'p1' id = 2 -++++ finished: end stream for module: stream = 0 label = 'p1' id = 2 -++++ starting: end stream for module: stream = 0 label = 'path1' id = 3 -++++ finished: end stream for module: stream = 0 label = 'path1' id = 3 -++++ starting: end stream for module: stream = 0 label = 'path2' id = 4 -++++ finished: end stream for module: stream = 0 label = 'path2' id = 4 ++++ starting: end stream for module: stream = 0 label = 'thingWithMergeProducer' id = 17 ++++ finished: end stream for module: stream = 0 label = 'thingWithMergeProducer' id = 17 ++++ starting: end stream for module: stream = 0 label = 'test' id = 18 @@ -7401,18 +7365,8 @@ ++++ finished: end stream for module: stream = 0 label = 'getInt' id = 21 ++++ starting: end stream for module: stream = 0 label = 'dependsOnNoPut' id = 22 ++++ finished: end stream for module: stream = 0 label = 'dependsOnNoPut' id = 22 -++++ starting: end stream for module: stream = 0 label = 'TriggerResults' id = 12 -++++ finished: end stream for module: stream = 0 label = 'TriggerResults' id = 12 ++++ starting: end stream for module: stream = 0 label = 'out' id = 23 ++++ finished: end stream for module: stream = 0 label = 'out' id = 23 -++++ starting: end stream for module: stream = 0 label = 'path1' id = 13 -++++ finished: end stream for module: stream = 0 label = 'path1' id = 13 -++++ starting: end stream for module: stream = 0 label = 'path2' id = 14 -++++ finished: end stream for module: stream = 0 label = 'path2' id = 14 -++++ starting: end stream for module: stream = 0 label = 'path3' id = 15 -++++ finished: end stream for module: stream = 0 label = 'path3' id = 15 -++++ starting: end stream for module: stream = 0 label = 'path4' id = 16 -++++ finished: end stream for module: stream = 0 label = 'path4' id = 16 ++++ starting: end stream for module: stream = 0 label = 'thingWithMergeProducer' id = 29 ++++ finished: end stream for module: stream = 0 label = 'thingWithMergeProducer' id = 29 ++++ starting: end stream for module: stream = 0 label = 'test' id = 30 @@ -7425,18 +7379,8 @@ ++++ finished: end stream for module: stream = 0 label = 'getInt' id = 33 ++++ starting: end stream for module: stream = 0 label = 'dependsOnNoPut' id = 34 ++++ finished: end stream for module: stream = 0 label = 'dependsOnNoPut' id = 34 -++++ starting: end stream for module: stream = 0 label = 'TriggerResults' id = 24 -++++ finished: end stream for module: stream = 0 label = 'TriggerResults' id = 24 ++++ starting: end stream for module: stream = 0 label = 'out' id = 35 ++++ finished: end stream for module: stream = 0 label = 'out' id = 35 -++++ starting: end stream for module: stream = 0 label = 'path1' id = 25 -++++ finished: end stream for module: stream = 0 label = 'path1' id = 25 -++++ starting: end stream for module: stream = 0 label = 'path2' id = 26 -++++ finished: end stream for module: stream = 0 label = 'path2' id = 26 -++++ starting: end stream for module: stream = 0 label = 'path3' id = 27 -++++ finished: end stream for module: stream = 0 label = 'path3' id = 27 -++++ starting: end stream for module: stream = 0 label = 'path4' id = 28 -++++ finished: end stream for module: stream = 0 label = 'path4' id = 28 ++++ starting: end job for module with label 'thingWithMergeProducer' id = 5 ++++ finished: end job for module with label 'thingWithMergeProducer' id = 5 ++++ starting: end job for module with label 'get' id = 6 diff --git a/FWCore/ServiceRegistry/interface/ServiceRegistryfwd.h b/FWCore/ServiceRegistry/interface/ServiceRegistryfwd.h index 2b11e1d143ef0..42bb6fdcddec6 100644 --- a/FWCore/ServiceRegistry/interface/ServiceRegistryfwd.h +++ b/FWCore/ServiceRegistry/interface/ServiceRegistryfwd.h @@ -5,6 +5,9 @@ namespace edm { class ActivityRegistry; class GlobalContext; class ModuleCallingContext; + class ParentContext; + class ProcessContext; + class ServiceToken; class StreamContext; } // namespace edm #endif diff --git a/Mixing/Base/src/SecondaryEventProvider.cc b/Mixing/Base/src/SecondaryEventProvider.cc index 1136430c77324..de0d7ee1640b4 100644 --- a/Mixing/Base/src/SecondaryEventProvider.cc +++ b/Mixing/Base/src/SecondaryEventProvider.cc @@ -2,6 +2,7 @@ #include "Mixing/Base/src/SecondaryEventProvider.h" #include "FWCore/Common/interface/ProcessBlockHelper.h" #include "FWCore/Framework/interface/ExceptionActions.h" +#include "FWCore/Framework/interface/ExceptionHelpers.h" #include "FWCore/Framework/interface/PreallocationConfiguration.h" #include "FWCore/Framework/interface/TransitionInfoTypes.h" #include "FWCore/ParameterSet/interface/ParameterSet.h"