CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends
edm::Worker Class Referenceabstract

#include <Worker.h>

Inheritance diagram for edm::Worker:
edm::WorkerT< T >

Classes

class  AcquireTask
 
class  AcquireTask< OccurrenceTraits< EventPrincipal, BranchActionStreamBegin >, DUMMY >
 
class  HandleExternalWorkExceptionTask
 
class  RunModuleTask
 
struct  TaskQueueAdaptor
 
class  TransitionIDValue
 
class  TransitionIDValueBase
 

Public Types

enum  State { Ready, Pass, Fail, Exception }
 
enum  Types { kAnalyzer, kFilter, kProducer, kOutputModule }
 

Public Member Functions

void addedToPath ()
 
void beginJob ()
 
void beginStream (StreamID id, StreamContext &streamContext)
 
void callWhenDoneAsync (WaitingTask *task)
 
void clearCounters ()
 
virtual std::vector< ConsumesInfoconsumesInfo () const =0
 
virtual void convertCurrentProcessAlias (std::string const &processName)=0
 
ModuleDescription const * descPtr () const
 
ModuleDescription const & description () const
 
template<typename T >
bool doWork (typename T::MyPrincipal const &, EventSetupImpl const &c, StreamID stream, ParentContext const &parentContext, typename T::Context const *context)
 
template<typename T >
void doWorkAsync (WaitingTask *task, typename T::MyPrincipal const &, EventSetupImpl const &c, ServiceToken const &token, StreamID stream, ParentContext const &parentContext, typename T::Context const *context)
 
template<typename T >
void doWorkNoPrefetchingAsync (WaitingTask *task, typename T::MyPrincipal const &, EventSetupImpl const &c, ServiceToken const &token, StreamID stream, ParentContext const &parentContext, typename T::Context const *context)
 
void endJob ()
 
void endStream (StreamID id, StreamContext &streamContext)
 
virtual SerialTaskQueueglobalLuminosityBlocksQueue ()=0
 
virtual SerialTaskQueueglobalRunsQueue ()=0
 
virtual bool hasAccumulator () const =0
 
virtual void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc) const =0
 
virtual Types moduleType () const =0
 
Workeroperator= (Worker const &)=delete
 
void postDoEvent (EventPrincipal const &)
 
void prePrefetchSelectionAsync (WaitingTask *task, ServiceToken const &, StreamID stream, EventPrincipal const *)
 
void prePrefetchSelectionAsync (WaitingTask *task, ServiceToken const &, StreamID stream, void const *)
 
void registerThinnedAssociations (ProductRegistry const &registry, ThinnedAssociationsHelper &helper)
 
void reset ()
 
virtual void resolvePutIndicies (BranchType iBranchType, std::unordered_multimap< std::string, std::tuple< TypeID const *, const char *, edm::ProductResolverIndex >> const &iIndicies)=0
 
void respondToCloseInputFile (FileBlock const &fb)
 
void respondToOpenInputFile (FileBlock const &fb)
 
template<typename T >
std::exception_ptr runModuleDirectly (typename T::MyPrincipal const &ep, EventSetupImpl const &es, StreamID streamID, ParentContext const &parentContext, typename T::Context const *context)
 
void setActivityRegistry (std::shared_ptr< ActivityRegistry > areg)
 
void setEarlyDeleteHelper (EarlyDeleteHelper *iHelper)
 
void skipOnPath (EventPrincipal const &iEvent)
 
State state () const
 
int timesExcept () const
 
int timesFailed () const
 
int timesPass () const
 
int timesPassed () const
 
int timesRun () const
 
int timesVisited () const
 
virtual void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &)=0
 
virtual void updateLookup (eventsetup::ESRecordsToProxyIndices const &)=0
 
virtual bool wantsGlobalLuminosityBlocks () const =0
 
virtual bool wantsGlobalRuns () const =0
 
virtual bool wantsStreamLuminosityBlocks () const =0
 
virtual bool wantsStreamRuns () const =0
 
 Worker (ModuleDescription const &iMD, ExceptionToActionTable const *iActions)
 
 Worker (Worker const &)=delete
 
virtual ~Worker ()
 

Protected Member Functions

ActivityRegistryactivityRegistry ()
 
virtual void implBeginJob ()=0
 
virtual void implBeginStream (StreamID)=0
 
virtual bool implDo (EventPrincipal const &, EventSetupImpl const &c, ModuleCallingContext const *mcc)=0
 
virtual void implDoAcquire (EventPrincipal const &, EventSetupImpl const &c, ModuleCallingContext const *mcc, WaitingTaskWithArenaHolder &holder)=0
 
virtual bool implDoBegin (LuminosityBlockPrincipal const &lbp, EventSetupImpl const &c, ModuleCallingContext const *mcc)=0
 
virtual bool implDoBegin (RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc)=0
 
virtual bool implDoEnd (LuminosityBlockPrincipal const &lbp, EventSetupImpl const &c, ModuleCallingContext const *mcc)=0
 
virtual bool implDoEnd (RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc)=0
 
virtual bool implDoPrePrefetchSelection (StreamID id, EventPrincipal const &ep, ModuleCallingContext const *mcc)=0
 
virtual bool implDoStreamBegin (StreamID id, LuminosityBlockPrincipal const &lbp, EventSetupImpl const &c, ModuleCallingContext const *mcc)=0
 
virtual bool implDoStreamBegin (StreamID id, RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc)=0
 
virtual bool implDoStreamEnd (StreamID id, LuminosityBlockPrincipal const &lbp, EventSetupImpl const &c, ModuleCallingContext const *mcc)=0
 
virtual bool implDoStreamEnd (StreamID id, RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc)=0
 
virtual void implEndJob ()=0
 
virtual void implEndStream (StreamID)=0
 
virtual bool implNeedToRunSelection () const =0
 
virtual void itemsToGetForSelection (std::vector< ProductResolverIndexAndSkipBit > &) const =0
 
void resetModuleDescription (ModuleDescription const *)
 
virtual std::string workerType () const =0
 

Private Member Functions

void emitPostModuleEventPrefetchingSignal ()
 
std::exception_ptr handleExternalWorkException (std::exception_ptr const *iEPtr, ParentContext const &parentContext)
 
virtual bool hasAcquire () const =0
 
virtual void implRegisterThinnedAssociations (ProductRegistry const &, ThinnedAssociationsHelper &)=0
 
virtual void implRespondToCloseInputFile (FileBlock const &fb)=0
 
virtual void implRespondToOpenInputFile (FileBlock const &fb)=0
 
virtual void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const =0
 
virtual std::vector< ProductResolverIndex > const & itemsShouldPutInEvent () const =0
 
virtual void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const =0
 
virtual std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType) const =0
 
virtual void preActionBeforeRunEventAsync (WaitingTask *iTask, ModuleCallingContext const &moduleCallingContext, Principal const &iPrincipal) const =0
 
void prefetchAsync (WaitingTask *, ServiceToken const &, ParentContext const &parentContext, Principal const &)
 
void runAcquire (EventPrincipal const &ep, EventSetupImpl const &es, ParentContext const &parentContext, WaitingTaskWithArenaHolder &holder)
 
void runAcquireAfterAsyncPrefetch (std::exception_ptr const *iEPtr, EventPrincipal const &ep, EventSetupImpl const &es, ParentContext const &parentContext, WaitingTaskWithArenaHolder holder)
 
template<typename T >
bool runModule (typename T::MyPrincipal const &, EventSetupImpl const &c, StreamID stream, ParentContext const &parentContext, typename T::Context const *context)
 
template<typename T >
std::exception_ptr runModuleAfterAsyncPrefetch (std::exception_ptr const *iEPtr, typename T::MyPrincipal const &ep, EventSetupImpl const &es, StreamID streamID, ParentContext const &parentContext, typename T::Context const *context)
 
virtual TaskQueueAdaptor serializeRunModule ()=0
 
template<bool IS_EVENT>
std::exception_ptr setException (std::exception_ptr iException)
 
template<bool IS_EVENT>
bool setFailed ()
 
template<bool IS_EVENT>
bool setPassed ()
 
bool shouldRethrowException (std::exception_ptr iPtr, ParentContext const &parentContext, bool isEvent, TransitionIDValueBase const &iID) const
 

Static Private Member Functions

static void exceptionContext (cms::Exception &ex, ModuleCallingContext const *mcc)
 

Private Attributes

ExceptionToActionTable const * actions_
 
std::shared_ptr< ActivityRegistryactReg_
 
std::exception_ptr cached_exception_
 
edm::propagate_const< EarlyDeleteHelper * > earlyDeleteHelper_
 
ModuleCallingContext moduleCallingContext_
 
std::atomic< int > numberOfPathsLeftToRun_
 
int numberOfPathsOn_
 
bool ranAcquireWithoutException_
 
std::atomic< Statestate_
 
std::atomic< int > timesExcept_
 
std::atomic< int > timesFailed_
 
std::atomic< int > timesPassed_
 
std::atomic< int > timesRun_
 
std::atomic< int > timesVisited_
 
edm::WaitingTaskList waitingTasks_
 
std::atomic< bool > workStarted_
 

Friends

template<typename O >
class workerhelper::CallImpl
 

Detailed Description

Definition at line 83 of file Worker.h.

Member Enumeration Documentation

◆ State

Enumerator
Ready 
Pass 
Fail 
Exception 

Definition at line 85 of file Worker.h.

85 { Ready, Pass, Fail, Exception };

◆ Types

Enumerator
kAnalyzer 
kFilter 
kProducer 
kOutputModule 

Definition at line 86 of file Worker.h.

Constructor & Destructor Documentation

◆ Worker() [1/2]

edm::Worker::Worker ( ModuleDescription const &  iMD,
ExceptionToActionTable const *  iActions 
)

Definition at line 83 of file Worker.cc.

84  : timesRun_(0),
85  timesVisited_(0),
86  timesPassed_(0),
87  timesFailed_(0),
88  timesExcept_(0),
89  state_(Ready),
93  actions_(iActions),
95  actReg_(),
96  earlyDeleteHelper_(nullptr),
97  workStarted_(false),

◆ ~Worker()

edm::Worker::~Worker ( )
virtual

Definition at line 100 of file Worker.cc.

100 {}

◆ Worker() [2/2]

edm::Worker::Worker ( Worker const &  )
delete

Member Function Documentation

◆ activityRegistry()

ActivityRegistry* edm::Worker::activityRegistry ( )
inlineprotected

Definition at line 284 of file Worker.h.

284 { return actReg_.get(); }

References actReg_.

◆ addedToPath()

void edm::Worker::addedToPath ( )
inline

Definition at line 225 of file Worker.h.

225 { ++numberOfPathsOn_; }

References numberOfPathsOn_.

◆ beginJob()

void edm::Worker::beginJob ( void  )

Definition at line 285 of file Worker.cc.

285  {
286  try {
287  convertException::wrap([&]() {
288  ModuleBeginJobSignalSentry cpp(actReg_.get(), description());
289  implBeginJob();
290  });
291  } catch (cms::Exception& ex) {
292  state_ = Exception;
293  std::ostringstream ost;
294  ost << "Calling beginJob for module " << description().moduleName() << "/'" << description().moduleLabel() << "'";
295  ex.addContext(ost.str());
296  throw;
297  }
298  }

References actReg_, cms::Exception::addContext(), description(), Exception, implBeginJob(), edm::ModuleDescription::moduleLabel(), edm::ModuleDescription::moduleName(), state_, and edm::convertException::wrap().

Referenced by edm::WorkerManager::beginJob().

◆ beginStream()

void edm::Worker::beginStream ( StreamID  id,
StreamContext streamContext 
)

Definition at line 315 of file Worker.cc.

315  {
316  try {
317  convertException::wrap([&]() {
318  streamContext.setTransition(StreamContext::Transition::kBeginStream);
319  streamContext.setEventID(EventID(0, 0, 0));
320  streamContext.setRunIndex(RunIndex::invalidRunIndex());
321  streamContext.setLuminosityBlockIndex(LuminosityBlockIndex::invalidLuminosityBlockIndex());
322  streamContext.setTimestamp(Timestamp());
323  ParentContext parentContext(&streamContext);
324  ModuleContextSentry moduleContextSentry(&moduleCallingContext_, parentContext);
326  ModuleBeginStreamSignalSentry beginSentry(actReg_.get(), streamContext, moduleCallingContext_);
327  implBeginStream(id);
328  });
329  } catch (cms::Exception& ex) {
330  state_ = Exception;
331  std::ostringstream ost;
332  ost << "Calling beginStream for module " << description().moduleName() << "/'" << description().moduleLabel()
333  << "'";
334  ex.addContext(ost.str());
335  throw;
336  }
337  }

References actReg_, cms::Exception::addContext(), description(), Exception, implBeginStream(), edm::LuminosityBlockIndex::invalidLuminosityBlockIndex(), edm::RunIndex::invalidRunIndex(), edm::StreamContext::kBeginStream, edm::ModuleCallingContext::kRunning, moduleCallingContext_, edm::ModuleDescription::moduleLabel(), edm::ModuleDescription::moduleName(), edm::StreamContext::setEventID(), edm::StreamContext::setLuminosityBlockIndex(), edm::StreamContext::setRunIndex(), edm::ModuleCallingContext::setState(), edm::StreamContext::setTimestamp(), edm::StreamContext::setTransition(), state_, and edm::convertException::wrap().

◆ callWhenDoneAsync()

void edm::Worker::callWhenDoneAsync ( WaitingTask task)
inline

◆ clearCounters()

void edm::Worker::clearCounters ( )
inline

Definition at line 217 of file Worker.h.

217  {
218  timesRun_.store(0, std::memory_order_release);
219  timesVisited_.store(0, std::memory_order_release);
220  timesPassed_.store(0, std::memory_order_release);
221  timesFailed_.store(0, std::memory_order_release);
222  timesExcept_.store(0, std::memory_order_release);
223  }

References timesExcept_, timesFailed_, timesPassed_, timesRun_, and timesVisited_.

Referenced by edm::StreamSchedule::clearCounters().

◆ consumesInfo()

virtual std::vector<ConsumesInfo> edm::Worker::consumesInfo ( ) const
pure virtual

◆ convertCurrentProcessAlias()

virtual void edm::Worker::convertCurrentProcessAlias ( std::string const &  processName)
pure virtual

Implemented in edm::WorkerT< T >.

◆ descPtr()

ModuleDescription const* edm::Worker::descPtr ( ) const
inline

◆ description()

ModuleDescription const& edm::Worker::description ( ) const
inline

◆ doWork()

template<typename T >
bool edm::Worker::doWork ( typename T::MyPrincipal const &  ep,
EventSetupImpl const &  c,
StreamID  stream,
ParentContext const &  parentContext,
typename T::Context const *  context 
)

Definition at line 974 of file Worker.h.

978  {
979  if constexpr (T::isEvent_) {
980  timesVisited_.fetch_add(1, std::memory_order_relaxed);
981  }
982  bool rc = false;
983 
984  switch (state_) {
985  case Ready:
986  break;
987  case Pass:
988  return true;
989  case Fail:
990  return false;
991  case Exception: {
992  std::rethrow_exception(cached_exception_);
993  }
994  }
995 
996  bool expected = false;
997  if (not workStarted_.compare_exchange_strong(expected, true)) {
998  //another thread beat us here
999  auto waitTask = edm::make_empty_waiting_task();
1000  waitTask->increment_ref_count();
1001 
1002  waitingTasks_.add(waitTask.get());
1003 
1004  waitTask->wait_for_all();
1005 
1006  switch (state_) {
1007  case Ready:
1008  assert(false);
1009  case Pass:
1010  return true;
1011  case Fail:
1012  return false;
1013  case Exception: {
1014  std::rethrow_exception(cached_exception_);
1015  }
1016  }
1017  }
1018 
1019  //Need the context to be set until after any exception is resolved
1021 
1022  auto resetContext = [](ModuleCallingContext* iContext) {
1023  iContext->setContext(ModuleCallingContext::State::kInvalid, ParentContext(), nullptr);
1024  };
1025  std::unique_ptr<ModuleCallingContext, decltype(resetContext)> prefetchSentry(&moduleCallingContext_, resetContext);
1026 
1027  if constexpr (T::isEvent_) {
1028  //if have TriggerResults based selection we want to reject the event before doing prefetching
1029  if (workerhelper::CallImpl<T>::needToRunSelection(this)) {
1030  auto waitTask = edm::make_empty_waiting_task();
1031  waitTask->set_ref_count(2);
1032  prePrefetchSelectionAsync(waitTask.get(), ServiceRegistry::instance().presentToken(), streamID, &ep);
1033  waitTask->decrement_ref_count();
1034  waitTask->wait_for_all();
1035 
1036  if (state() != Ready) {
1037  //The selection must have rejected this event
1038  return true;
1039  }
1040  }
1041  auto waitTask = edm::make_empty_waiting_task();
1042  {
1043  //Make sure signal is sent once the prefetching is done
1044  // [the 'pre' signal was sent in prefetchAsync]
1045  //The purpose of this block is to send the signal after wait_for_all
1046  auto sentryFunc = [this](void*) { emitPostModuleEventPrefetchingSignal(); };
1047  std::unique_ptr<ActivityRegistry, decltype(sentryFunc)> signalSentry(actReg_.get(), sentryFunc);
1048 
1049  //set count to 2 since wait_for_all requires value to not go to 0
1050  waitTask->set_ref_count(2);
1051 
1052  prefetchAsync(waitTask.get(), ServiceRegistry::instance().presentToken(), parentContext, ep);
1053  waitTask->decrement_ref_count();
1054  waitTask->wait_for_all();
1055  }
1056  if (waitTask->exceptionPtr() != nullptr) {
1057  TransitionIDValue<typename T::MyPrincipal> idValue(ep);
1058  if (shouldRethrowException(*waitTask->exceptionPtr(), parentContext, T::isEvent_, idValue)) {
1059  setException<T::isEvent_>(*waitTask->exceptionPtr());
1061  std::rethrow_exception(cached_exception_);
1062  } else {
1063  setPassed<T::isEvent_>();
1064  waitingTasks_.doneWaiting(nullptr);
1065  return true;
1066  }
1067  }
1068  }
1069 
1070  //successful prefetch so no reset necessary
1071  prefetchSentry.release();
1072  if (auto queue = serializeRunModule()) {
1073  auto serviceToken = ServiceRegistry::instance().presentToken();
1074  queue.pushAndWait([&]() {
1075  //Need to make the services available
1076  ServiceRegistry::Operate guard(serviceToken);
1077  // This try-catch is primarily for paranoia: runModule() deals internally with exceptions, except for those coming from Service signal actions, which are not supposed to throw exceptions
1078  CMS_SA_ALLOW try { rc = runModule<T>(ep, es, streamID, parentContext, context); } catch (...) {
1079  }
1080  });
1081  } else {
1082  // This try-catch is primarily for paranoia: runModule() deals internally with exceptions, except for those coming from Service signal actions, which are not supposed to throw exceptions
1083  CMS_SA_ALLOW try { rc = runModule<T>(ep, es, streamID, parentContext, context); } catch (...) {
1084  }
1085  }
1086  if (state_ == Exception) {
1088  std::rethrow_exception(cached_exception_);
1089  }
1090 
1091  waitingTasks_.doneWaiting(nullptr);
1092  return rc;
1093  }

References actReg_, edm::WaitingTaskList::add(), cms::cuda::assert(), cached_exception_, CMS_SA_ALLOW, edm::WaitingTaskList::doneWaiting(), emitPostModuleEventPrefetchingSignal(), SiStripBadComponentsDQMServiceTemplate_cfg::ep, Exception, Fail, edm::ServiceRegistry::instance(), edm::ModuleCallingContext::kInvalid, edm::ModuleCallingContext::kPrefetching, edm::make_empty_waiting_task(), moduleCallingContext_, Pass, prefetchAsync(), prePrefetchSelectionAsync(), edm::ServiceRegistry::presentToken(), createBeamHaloJobs::queue, Ready, serializeRunModule(), edm::ModuleCallingContext::setContext(), shouldRethrowException(), state(), state_, timesVisited_, waitingTasks_, and workStarted_.

Referenced by edm::UnscheduledProductResolver::resolveProduct_().

◆ doWorkAsync()

template<typename T >
void edm::Worker::doWorkAsync ( WaitingTask task,
typename T::MyPrincipal const &  ep,
EventSetupImpl const &  c,
ServiceToken const &  token,
StreamID  stream,
ParentContext const &  parentContext,
typename T::Context const *  context 
)

Definition at line 831 of file Worker.h.

837  {
838  if (not workerhelper::CallImpl<T>::wantsTransition(this)) {
839  return;
840  }
841 
842  //Need to check workStarted_ before adding to waitingTasks_
843  bool expected = false;
844  bool workStarted = workStarted_.compare_exchange_strong(expected, true);
845 
847  if constexpr (T::isEvent_) {
848  timesVisited_.fetch_add(1, std::memory_order_relaxed);
849  }
850 
851  if (workStarted) {
853 
854  //if have TriggerResults based selection we want to reject the event before doing prefetching
855  if (workerhelper::CallImpl<T>::needToRunSelection(this)) {
856  //We need to run the selection in a different task so that
857  // we can prefetch the data needed for the selection
858  auto runTask =
859  new (tbb::task::allocate_root()) RunModuleTask<T>(this, ep, es, token, streamID, parentContext, context);
860 
861  //make sure the task is either run or destroyed
862  struct DestroyTask {
863  DestroyTask(edm::WaitingTask* iTask) : m_task(iTask) {}
864 
865  ~DestroyTask() {
866  auto p = m_task.load();
867  if (p) {
868  tbb::task::destroy(*p);
869  }
870  }
871 
873  auto t = m_task.load();
874  m_task.store(nullptr);
875  return t;
876  }
877 
878  std::atomic<edm::WaitingTask*> m_task;
879  };
880 
881  auto ownRunTask = std::make_shared<DestroyTask>(runTask);
882  auto selectionTask =
883  make_waiting_task(tbb::task::allocate_root(),
884  [ownRunTask, parentContext, &ep, token, this](std::exception_ptr const*) mutable {
886  prefetchAsync(ownRunTask->release(), token, parentContext, ep);
887  });
888  prePrefetchSelectionAsync(selectionTask, token, streamID, &ep);
889  } else {
890  WaitingTask* moduleTask =
891  new (tbb::task::allocate_root()) RunModuleTask<T>(this, ep, es, token, streamID, parentContext, context);
892  if constexpr (T::isEvent_) {
893  if (hasAcquire()) {
894  WaitingTaskWithArenaHolder runTaskHolder(
895  new (tbb::task::allocate_root()) HandleExternalWorkExceptionTask(this, moduleTask, parentContext));
896  moduleTask = new (tbb::task::allocate_root())
897  AcquireTask<T>(this, ep, es, token, parentContext, std::move(runTaskHolder));
898  }
899  }
900  prefetchAsync(moduleTask, token, parentContext, ep);
901  }
902  }
903  }

References edm::WaitingTaskList::add(), SiStripBadComponentsDQMServiceTemplate_cfg::ep, hasAcquire(), edm::ModuleCallingContext::kPrefetching, edm::make_waiting_task(), moduleCallingContext_, eostools::move(), AlCaHLTBitMon_ParallelJobs::p, prefetchAsync(), prePrefetchSelectionAsync(), fetchall_from_DQM_v2::release, edm::ModuleCallingContext::setContext(), OrderedSet::t, TrackValidation_cff::task, timesVisited_, unpackBuffers-CaloStage2::token, waitingTasks_, and workStarted_.

Referenced by edm::UnscheduledProductResolver::prefetchAsync_(), and edm::WorkerInPath::runWorkerAsync().

◆ doWorkNoPrefetchingAsync()

template<typename T >
void edm::Worker::doWorkNoPrefetchingAsync ( WaitingTask task,
typename T::MyPrincipal const &  principal,
EventSetupImpl const &  c,
ServiceToken const &  token,
StreamID  stream,
ParentContext const &  parentContext,
typename T::Context const *  context 
)

Definition at line 934 of file Worker.h.

940  {
941  if (not workerhelper::CallImpl<T>::wantsTransition(this)) {
942  return;
943  }
944 
945  //Need to check workStarted_ before adding to waitingTasks_
946  bool expected = false;
947  auto workStarted = workStarted_.compare_exchange_strong(expected, true);
948 
950  if (workStarted) {
951  auto toDo = [this, &principal, &es, streamID, parentContext, context, serviceToken]() {
952  std::exception_ptr exceptionPtr;
953  // Caught exception is propagated via WaitingTaskList
954  CMS_SA_ALLOW try {
955  //Need to make the services available
956  ServiceRegistry::Operate guard(serviceToken);
957 
958  this->runModule<T>(principal, es, streamID, parentContext, context);
959  } catch (...) {
960  exceptionPtr = std::current_exception();
961  }
962  this->waitingTasks_.doneWaiting(exceptionPtr);
963  };
964  if (auto queue = this->serializeRunModule()) {
965  queue.push(toDo);
966  } else {
967  auto taskToDo = make_functor_task(tbb::task::allocate_root(), toDo);
968  tbb::task::spawn(*taskToDo);
969  }
970  }
971  }

References edm::WaitingTaskList::add(), CMS_SA_ALLOW, edm::WaitingTaskList::doneWaiting(), edm::make_functor_task(), createBeamHaloJobs::queue, serializeRunModule(), TrackValidation_cff::task, waitingTasks_, and workStarted_.

Referenced by edm::WorkerInPath::runWorkerAsync().

◆ emitPostModuleEventPrefetchingSignal()

void edm::Worker::emitPostModuleEventPrefetchingSignal ( )
inlineprivate

Definition at line 374 of file Worker.h.

374  {
375  actReg_->postModuleEventPrefetchingSignal_.emit(*moduleCallingContext_.getStreamContext(), moduleCallingContext_);
376  }

References actReg_, edm::ModuleCallingContext::getStreamContext(), and moduleCallingContext_.

Referenced by doWork(), and edm::Worker::RunModuleTask< T >::execute().

◆ endJob()

void edm::Worker::endJob ( void  )

Definition at line 300 of file Worker.cc.

300  {
301  try {
302  convertException::wrap([&]() {
303  ModuleEndJobSignalSentry cpp(actReg_.get(), description());
304  implEndJob();
305  });
306  } catch (cms::Exception& ex) {
307  state_ = Exception;
308  std::ostringstream ost;
309  ost << "Calling endJob for module " << description().moduleName() << "/'" << description().moduleLabel() << "'";
310  ex.addContext(ost.str());
311  throw;
312  }
313  }

References actReg_, cms::Exception::addContext(), description(), Exception, implEndJob(), edm::ModuleDescription::moduleLabel(), edm::ModuleDescription::moduleName(), state_, and edm::convertException::wrap().

◆ endStream()

void edm::Worker::endStream ( StreamID  id,
StreamContext streamContext 
)

Definition at line 339 of file Worker.cc.

339  {
340  try {
341  convertException::wrap([&]() {
342  streamContext.setTransition(StreamContext::Transition::kEndStream);
343  streamContext.setEventID(EventID(0, 0, 0));
344  streamContext.setRunIndex(RunIndex::invalidRunIndex());
345  streamContext.setLuminosityBlockIndex(LuminosityBlockIndex::invalidLuminosityBlockIndex());
346  streamContext.setTimestamp(Timestamp());
347  ParentContext parentContext(&streamContext);
348  ModuleContextSentry moduleContextSentry(&moduleCallingContext_, parentContext);
350  ModuleEndStreamSignalSentry endSentry(actReg_.get(), streamContext, moduleCallingContext_);
351  implEndStream(id);
352  });
353  } catch (cms::Exception& ex) {
354  state_ = Exception;
355  std::ostringstream ost;
356  ost << "Calling endStream for module " << description().moduleName() << "/'" << description().moduleLabel()
357  << "'";
358  ex.addContext(ost.str());
359  throw;
360  }
361  }

References actReg_, cms::Exception::addContext(), description(), Exception, implEndStream(), edm::LuminosityBlockIndex::invalidLuminosityBlockIndex(), edm::RunIndex::invalidRunIndex(), edm::StreamContext::kEndStream, edm::ModuleCallingContext::kRunning, moduleCallingContext_, edm::ModuleDescription::moduleLabel(), edm::ModuleDescription::moduleName(), edm::StreamContext::setEventID(), edm::StreamContext::setLuminosityBlockIndex(), edm::StreamContext::setRunIndex(), edm::ModuleCallingContext::setState(), edm::StreamContext::setTimestamp(), edm::StreamContext::setTransition(), state_, and edm::convertException::wrap().

◆ exceptionContext()

void edm::Worker::exceptionContext ( cms::Exception ex,
ModuleCallingContext const *  mcc 
)
staticprivate

Definition at line 104 of file Worker.cc.

104  {
105  ModuleCallingContext const* imcc = mcc;
106  while ((imcc->type() == ParentContext::Type::kModule) or (imcc->type() == ParentContext::Type::kInternal)) {
107  std::ostringstream iost;
108  if (imcc->state() == ModuleCallingContext::State::kPrefetching) {
109  iost << "Prefetching for module ";
110  } else {
111  iost << "Calling method for module ";
112  }
113  iost << imcc->moduleDescription()->moduleName() << "/'" << imcc->moduleDescription()->moduleLabel() << "'";
114 
115  if (imcc->type() == ParentContext::Type::kInternal) {
116  iost << " (probably inside some kind of mixing module)";
117  imcc = imcc->internalContext()->moduleCallingContext();
118  } else {
119  imcc = imcc->moduleCallingContext();
120  }
121  ex.addContext(iost.str());
122  }
123  std::ostringstream ost;
124  if (imcc->state() == ModuleCallingContext::State::kPrefetching) {
125  ost << "Prefetching for module ";
126  } else {
127  ost << "Calling method for module ";
128  }
129  ost << imcc->moduleDescription()->moduleName() << "/'" << imcc->moduleDescription()->moduleLabel() << "'";
130  ex.addContext(ost.str());
131 
132  if (imcc->type() == ParentContext::Type::kPlaceInPath) {
133  ost.str("");
134  ost << "Running path '";
135  ost << imcc->placeInPathContext()->pathContext()->pathName() << "'";
136  ex.addContext(ost.str());
137  auto streamContext = imcc->placeInPathContext()->pathContext()->streamContext();
138  if (streamContext) {
139  ost.str("");
140  edm::exceptionContext(ost, *streamContext);
141  ex.addContext(ost.str());
142  }
143  } else {
144  if (imcc->type() == ParentContext::Type::kStream) {
145  ost.str("");
146  edm::exceptionContext(ost, *(imcc->streamContext()));
147  ex.addContext(ost.str());
148  } else if (imcc->type() == ParentContext::Type::kGlobal) {
149  ost.str("");
150  edm::exceptionContext(ost, *(imcc->globalContext()));
151  ex.addContext(ost.str());
152  }
153  }
154  }

References cms::Exception::addContext(), edm::exceptionContext(), edm::ModuleCallingContext::globalContext(), edm::ModuleCallingContext::internalContext(), edm::ParentContext::kGlobal, edm::ParentContext::kInternal, edm::ParentContext::kModule, edm::ParentContext::kPlaceInPath, edm::ModuleCallingContext::kPrefetching, edm::ParentContext::kStream, edm::InternalContext::moduleCallingContext(), edm::ModuleCallingContext::moduleCallingContext(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), edm::ModuleDescription::moduleName(), or, edm::PlaceInPathContext::pathContext(), edm::PathContext::pathName(), edm::ModuleCallingContext::placeInPathContext(), edm::ModuleCallingContext::state(), edm::PathContext::streamContext(), edm::ModuleCallingContext::streamContext(), and edm::ModuleCallingContext::type().

Referenced by handleExternalWorkException(), runAcquire(), and runModule().

◆ globalLuminosityBlocksQueue()

virtual SerialTaskQueue* edm::Worker::globalLuminosityBlocksQueue ( )
pure virtual

◆ globalRunsQueue()

virtual SerialTaskQueue* edm::Worker::globalRunsQueue ( )
pure virtual

◆ handleExternalWorkException()

std::exception_ptr edm::Worker::handleExternalWorkException ( std::exception_ptr const *  iEPtr,
ParentContext const &  parentContext 
)
private

Definition at line 422 of file Worker.cc.

423  {
425  try {
426  convertException::wrap([iEPtr]() { std::rethrow_exception(*iEPtr); });
427  } catch (cms::Exception& ex) {
428  ModuleContextSentry moduleContextSentry(&moduleCallingContext_, parentContext);
430  return std::current_exception();
431  }
432  }
433  return *iEPtr;
434  }

References exceptionContext(), moduleCallingContext_, ranAcquireWithoutException_, and edm::convertException::wrap().

◆ hasAccumulator()

virtual bool edm::Worker::hasAccumulator ( ) const
pure virtual

◆ hasAcquire()

virtual bool edm::Worker::hasAcquire ( ) const
privatepure virtual

◆ implBeginJob()

virtual void edm::Worker::implBeginJob ( )
protectedpure virtual

Implemented in edm::WorkerT< T >.

Referenced by beginJob().

◆ implBeginStream()

virtual void edm::Worker::implBeginStream ( StreamID  )
protectedpure virtual

Implemented in edm::WorkerT< T >.

Referenced by beginStream().

◆ implDo()

virtual bool edm::Worker::implDo ( EventPrincipal const &  ,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

◆ implDoAcquire()

virtual void edm::Worker::implDoAcquire ( EventPrincipal const &  ,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc,
WaitingTaskWithArenaHolder holder 
)
protectedpure virtual

◆ implDoBegin() [1/2]

virtual bool edm::Worker::implDoBegin ( LuminosityBlockPrincipal const &  lbp,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

Implemented in edm::WorkerT< T >.

◆ implDoBegin() [2/2]

virtual bool edm::Worker::implDoBegin ( RunPrincipal const &  rp,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

◆ implDoEnd() [1/2]

virtual bool edm::Worker::implDoEnd ( LuminosityBlockPrincipal const &  lbp,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

Implemented in edm::WorkerT< T >.

◆ implDoEnd() [2/2]

virtual bool edm::Worker::implDoEnd ( RunPrincipal const &  rp,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

◆ implDoPrePrefetchSelection()

virtual bool edm::Worker::implDoPrePrefetchSelection ( StreamID  id,
EventPrincipal const &  ep,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

◆ implDoStreamBegin() [1/2]

virtual bool edm::Worker::implDoStreamBegin ( StreamID  id,
LuminosityBlockPrincipal const &  lbp,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

Implemented in edm::WorkerT< T >.

◆ implDoStreamBegin() [2/2]

virtual bool edm::Worker::implDoStreamBegin ( StreamID  id,
RunPrincipal const &  rp,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

◆ implDoStreamEnd() [1/2]

virtual bool edm::Worker::implDoStreamEnd ( StreamID  id,
LuminosityBlockPrincipal const &  lbp,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

Implemented in edm::WorkerT< T >.

◆ implDoStreamEnd() [2/2]

virtual bool edm::Worker::implDoStreamEnd ( StreamID  id,
RunPrincipal const &  rp,
EventSetupImpl const &  c,
ModuleCallingContext const *  mcc 
)
protectedpure virtual

◆ implEndJob()

virtual void edm::Worker::implEndJob ( )
protectedpure virtual

Implemented in edm::WorkerT< T >.

Referenced by endJob().

◆ implEndStream()

virtual void edm::Worker::implEndStream ( StreamID  )
protectedpure virtual

Implemented in edm::WorkerT< T >.

Referenced by endStream().

◆ implNeedToRunSelection()

virtual bool edm::Worker::implNeedToRunSelection ( ) const
protectedpure virtual

◆ implRegisterThinnedAssociations()

virtual void edm::Worker::implRegisterThinnedAssociations ( ProductRegistry const &  ,
ThinnedAssociationsHelper  
)
privatepure virtual

Implemented in edm::WorkerT< T >.

Referenced by registerThinnedAssociations().

◆ implRespondToCloseInputFile()

virtual void edm::Worker::implRespondToCloseInputFile ( FileBlock const &  fb)
privatepure virtual

Implemented in edm::WorkerT< T >.

Referenced by respondToCloseInputFile().

◆ implRespondToOpenInputFile()

virtual void edm::Worker::implRespondToOpenInputFile ( FileBlock const &  fb)
privatepure virtual

Implemented in edm::WorkerT< T >.

Referenced by respondToOpenInputFile().

◆ itemsMayGet()

virtual void edm::Worker::itemsMayGet ( BranchType  ,
std::vector< ProductResolverIndexAndSkipBit > &   
) const
privatepure virtual

Implemented in edm::WorkerT< T >.

◆ itemsShouldPutInEvent()

virtual std::vector<ProductResolverIndex> const& edm::Worker::itemsShouldPutInEvent ( ) const
privatepure virtual

Implemented in edm::WorkerT< T >.

◆ itemsToGet()

virtual void edm::Worker::itemsToGet ( BranchType  ,
std::vector< ProductResolverIndexAndSkipBit > &   
) const
privatepure virtual

Implemented in edm::WorkerT< T >.

◆ itemsToGetForSelection()

virtual void edm::Worker::itemsToGetForSelection ( std::vector< ProductResolverIndexAndSkipBit > &  ) const
protectedpure virtual

◆ itemsToGetFrom()

virtual std::vector<ProductResolverIndexAndSkipBit> const& edm::Worker::itemsToGetFrom ( BranchType  ) const
privatepure virtual

Implemented in edm::WorkerT< T >.

Referenced by prefetchAsync().

◆ modulesWhoseProductsAreConsumed()

virtual void edm::Worker::modulesWhoseProductsAreConsumed ( std::vector< ModuleDescription const * > &  modules,
ProductRegistry const &  preg,
std::map< std::string, ModuleDescription const * > const &  labelsToDesc 
) const
pure virtual

Implemented in edm::WorkerT< T >.

◆ moduleType()

virtual Types edm::Worker::moduleType ( ) const
pure virtual

◆ operator=()

Worker& edm::Worker::operator= ( Worker const &  )
delete

◆ postDoEvent()

void edm::Worker::postDoEvent ( EventPrincipal const &  iEvent)

Definition at line 372 of file Worker.cc.

372  {
373  if (earlyDeleteHelper_) {
374  earlyDeleteHelper_->moduleRan(iEvent);
375  }
376  }

References earlyDeleteHelper_, and iEvent.

◆ preActionBeforeRunEventAsync()

virtual void edm::Worker::preActionBeforeRunEventAsync ( WaitingTask iTask,
ModuleCallingContext const &  moduleCallingContext,
Principal const &  iPrincipal 
) const
privatepure virtual

Implemented in edm::WorkerT< T >.

Referenced by prefetchAsync().

◆ prefetchAsync()

void edm::Worker::prefetchAsync ( WaitingTask iTask,
ServiceToken const &  token,
ParentContext const &  parentContext,
Principal const &  iPrincipal 
)
private

Definition at line 199 of file Worker.cc.

202  {
203  // Prefetch products the module declares it consumes (not including the products it maybe consumes)
204  std::vector<ProductResolverIndexAndSkipBit> const& items = itemsToGetFrom(iPrincipal.branchType());
205 
207 
208  if (iPrincipal.branchType() == InEvent) {
209  actReg_->preModuleEventPrefetchingSignal_.emit(*moduleCallingContext_.getStreamContext(), moduleCallingContext_);
210  }
211 
212  //Need to be sure the ref count isn't set to 0 immediately
213  iTask->increment_ref_count();
214  for (auto const& item : items) {
215  ProductResolverIndex productResolverIndex = item.productResolverIndex();
216  bool skipCurrentProcess = item.skipCurrentProcess();
217  if (productResolverIndex != ProductResolverIndexAmbiguous) {
218  iPrincipal.prefetchAsync(iTask, productResolverIndex, skipCurrentProcess, token, &moduleCallingContext_);
219  }
220  }
221 
222  if (iPrincipal.branchType() == InEvent) {
224  }
225 
226  if (0 == iTask->decrement_ref_count()) {
227  //if everything finishes before we leave this routine, we need to launch the task
228  tbb::task::spawn(*iTask);
229  }
230  }

References actReg_, edm::Principal::branchType(), edm::ModuleCallingContext::getStreamContext(), edm::InEvent, B2GTnPMonitor_cfi::item, mps_monitormerge::items, itemsToGetFrom(), edm::ModuleCallingContext::kPrefetching, moduleCallingContext_, preActionBeforeRunEventAsync(), edm::Principal::prefetchAsync(), edm::ProductResolverIndexAmbiguous, edm::ModuleCallingContext::setContext(), and unpackBuffers-CaloStage2::token.

Referenced by doWork(), and doWorkAsync().

◆ prePrefetchSelectionAsync() [1/2]

void edm::Worker::prePrefetchSelectionAsync ( WaitingTask task,
ServiceToken const &  token,
StreamID  stream,
EventPrincipal const *  iPrincipal 
)

Definition at line 232 of file Worker.cc.

235  {
236  successTask->increment_ref_count();
237 
238  auto choiceTask = edm::make_waiting_task(
239  tbb::task::allocate_root(), [id, successTask, iPrincipal, this, token](std::exception_ptr const*) {
241  // There is no reasonable place to rethrow, and implDoPrePrefetchSelection() should not throw in the first place.
242  CMS_SA_ALLOW try {
243  if (not implDoPrePrefetchSelection(id, *iPrincipal, &moduleCallingContext_)) {
244  timesRun_.fetch_add(1, std::memory_order_relaxed);
245  setPassed<true>();
246  waitingTasks_.doneWaiting(nullptr);
247  //TBB requires that destroyed tasks have count 0
248  if (0 == successTask->decrement_ref_count()) {
249  tbb::task::destroy(*successTask);
250  }
251  return;
252  }
253  } catch (...) {
254  }
255  if (0 == successTask->decrement_ref_count()) {
256  tbb::task::spawn(*successTask);
257  }
258  });
259 
260  WaitingTaskHolder choiceHolder{choiceTask};
261 
262  std::vector<ProductResolverIndexAndSkipBit> items;
264 
265  for (auto const& item : items) {
266  ProductResolverIndex productResolverIndex = item.productResolverIndex();
267  bool skipCurrentProcess = item.skipCurrentProcess();
268  if (productResolverIndex != ProductResolverIndexAmbiguous) {
269  iPrincipal->prefetchAsync(choiceTask, productResolverIndex, skipCurrentProcess, token, &moduleCallingContext_);
270  }
271  }
272  choiceHolder.doneWaiting(std::exception_ptr{});
273  }

References CMS_SA_ALLOW, edm::WaitingTaskList::doneWaiting(), implDoPrePrefetchSelection(), B2GTnPMonitor_cfi::item, mps_monitormerge::items, itemsToGetForSelection(), edm::make_waiting_task(), moduleCallingContext_, edm::Principal::prefetchAsync(), edm::ProductResolverIndexAmbiguous, timesRun_, unpackBuffers-CaloStage2::token, and waitingTasks_.

Referenced by doWork(), and doWorkAsync().

◆ prePrefetchSelectionAsync() [2/2]

void edm::Worker::prePrefetchSelectionAsync ( WaitingTask task,
ServiceToken const &  ,
StreamID  stream,
void const *   
)
inline

Definition at line 138 of file Worker.h.

138  {
139  assert(false);
140  }

References cms::cuda::assert().

◆ registerThinnedAssociations()

void edm::Worker::registerThinnedAssociations ( ProductRegistry const &  registry,
ThinnedAssociationsHelper helper 
)
inline

Definition at line 176 of file Worker.h.

176  {
178  }

References implRegisterThinnedAssociations().

◆ reset()

void edm::Worker::reset ( void  )
inline

Definition at line 180 of file Worker.h.

180  {
181  cached_exception_ = std::exception_ptr();
182  state_ = Ready;
184  workStarted_ = false;
186  }

References cached_exception_, numberOfPathsLeftToRun_, numberOfPathsOn_, Ready, edm::WaitingTaskList::reset(), state_, waitingTasks_, and workStarted_.

Referenced by edm::WorkerManager::resetAll().

◆ resetModuleDescription()

void edm::Worker::resetModuleDescription ( ModuleDescription const *  iDesc)
protected

◆ resolvePutIndicies()

virtual void edm::Worker::resolvePutIndicies ( BranchType  iBranchType,
std::unordered_multimap< std::string, std::tuple< TypeID const *, const char *, edm::ProductResolverIndex >> const &  iIndicies 
)
pure virtual

Implemented in edm::WorkerT< T >.

◆ respondToCloseInputFile()

void edm::Worker::respondToCloseInputFile ( FileBlock const &  fb)
inline

◆ respondToOpenInputFile()

void edm::Worker::respondToOpenInputFile ( FileBlock const &  fb)
inline

◆ runAcquire()

void edm::Worker::runAcquire ( EventPrincipal const &  ep,
EventSetupImpl const &  es,
ParentContext const &  parentContext,
WaitingTaskWithArenaHolder holder 
)
private

Definition at line 378 of file Worker.cc.

381  {
382  ModuleContextSentry moduleContextSentry(&moduleCallingContext_, parentContext);
383  try {
384  convertException::wrap([&]() { this->implDoAcquire(ep, es, &moduleCallingContext_, holder); });
385  } catch (cms::Exception& ex) {
387  TransitionIDValue<EventPrincipal> idValue(ep);
388  if (shouldRethrowException(std::current_exception(), parentContext, true, idValue)) {
389  timesRun_.fetch_add(1, std::memory_order_relaxed);
390  throw;
391  }
392  }
393  }

References SiStripBadComponentsDQMServiceTemplate_cfg::ep, exceptionContext(), implDoAcquire(), moduleCallingContext_, shouldRethrowException(), timesRun_, and edm::convertException::wrap().

Referenced by runAcquireAfterAsyncPrefetch().

◆ runAcquireAfterAsyncPrefetch()

void edm::Worker::runAcquireAfterAsyncPrefetch ( std::exception_ptr const *  iEPtr,
EventPrincipal const &  ep,
EventSetupImpl const &  es,
ParentContext const &  parentContext,
WaitingTaskWithArenaHolder  holder 
)
private

Definition at line 395 of file Worker.cc.

399  {
401  std::exception_ptr exceptionPtr;
402  if (iEPtr) {
403  assert(*iEPtr);
404  TransitionIDValue<EventPrincipal> idValue(ep);
405  if (shouldRethrowException(*iEPtr, parentContext, true, idValue)) {
406  exceptionPtr = *iEPtr;
407  }
409  } else {
410  // Caught exception is propagated via WaitingTaskWithArenaHolder
411  CMS_SA_ALLOW try {
412  runAcquire(ep, es, parentContext, holder);
414  } catch (...) {
415  exceptionPtr = std::current_exception();
416  }
417  }
418  // It is important this is after runAcquire completely finishes
419  holder.doneWaiting(exceptionPtr);
420  }

References cms::cuda::assert(), CMS_SA_ALLOW, edm::WaitingTaskWithArenaHolder::doneWaiting(), SiStripBadComponentsDQMServiceTemplate_cfg::ep, edm::ModuleCallingContext::kInvalid, moduleCallingContext_, ranAcquireWithoutException_, runAcquire(), edm::ModuleCallingContext::setContext(), and shouldRethrowException().

◆ runModule()

template<typename T >
bool edm::Worker::runModule ( typename T::MyPrincipal const &  ep,
EventSetupImpl const &  c,
StreamID  stream,
ParentContext const &  parentContext,
typename T::Context const *  context 
)
private

Definition at line 1096 of file Worker.h.

1100  {
1101  //unscheduled producers should advance this
1102  //if (T::isEvent_) {
1103  // ++timesVisited_;
1104  //}
1105  ModuleContextSentry moduleContextSentry(&moduleCallingContext_, parentContext);
1106  if constexpr (T::isEvent_) {
1107  timesRun_.fetch_add(1, std::memory_order_relaxed);
1108  }
1109 
1110  bool rc = true;
1111  try {
1112  convertException::wrap([&]() {
1113  rc = workerhelper::CallImpl<T>::call(this, streamID, ep, es, actReg_.get(), &moduleCallingContext_, context);
1114 
1115  if (rc) {
1116  setPassed<T::isEvent_>();
1117  } else {
1118  setFailed<T::isEvent_>();
1119  }
1120  });
1121  } catch (cms::Exception& ex) {
1123  TransitionIDValue<typename T::MyPrincipal> idValue(ep);
1124  if (shouldRethrowException(std::current_exception(), parentContext, T::isEvent_, idValue)) {
1126  setException<T::isEvent_>(std::current_exception());
1127  std::rethrow_exception(cached_exception_);
1128  } else {
1129  rc = setPassed<T::isEvent_>();
1130  }
1131  }
1132 
1133  return rc;
1134  }

References actReg_, cms::cuda::assert(), cached_exception_, SiStripBadComponentsDQMServiceTemplate_cfg::ep, exceptionContext(), moduleCallingContext_, shouldRethrowException(), timesRun_, and edm::convertException::wrap().

◆ runModuleAfterAsyncPrefetch()

template<typename T >
std::exception_ptr edm::Worker::runModuleAfterAsyncPrefetch ( std::exception_ptr const *  iEPtr,
typename T::MyPrincipal const &  ep,
EventSetupImpl const &  es,
StreamID  streamID,
ParentContext const &  parentContext,
typename T::Context const *  context 
)
private

Definition at line 906 of file Worker.h.

911  {
912  std::exception_ptr exceptionPtr;
913  if (iEPtr) {
914  assert(*iEPtr);
915  TransitionIDValue<typename T::MyPrincipal> idValue(ep);
916  if (shouldRethrowException(*iEPtr, parentContext, T::isEvent_, idValue)) {
917  exceptionPtr = *iEPtr;
918  setException<T::isEvent_>(exceptionPtr);
919  } else {
920  setPassed<T::isEvent_>();
921  }
923  } else {
924  // Caught exception is propagated via WaitingTaskList
925  CMS_SA_ALLOW try { runModule<T>(ep, es, streamID, parentContext, context); } catch (...) {
926  exceptionPtr = std::current_exception();
927  }
928  }
929  waitingTasks_.doneWaiting(exceptionPtr);
930  return exceptionPtr;
931  }

References cms::cuda::assert(), CMS_SA_ALLOW, edm::WaitingTaskList::doneWaiting(), SiStripBadComponentsDQMServiceTemplate_cfg::ep, edm::ModuleCallingContext::kInvalid, moduleCallingContext_, edm::ModuleCallingContext::setContext(), shouldRethrowException(), and waitingTasks_.

Referenced by edm::Worker::RunModuleTask< T >::execute().

◆ runModuleDirectly()

template<typename T >
std::exception_ptr edm::Worker::runModuleDirectly ( typename T::MyPrincipal const &  ep,
EventSetupImpl const &  es,
StreamID  streamID,
ParentContext const &  parentContext,
typename T::Context const *  context 
)

Definition at line 1137 of file Worker.h.

1141  {
1142  timesVisited_.fetch_add(1, std::memory_order_relaxed);
1143  std::exception_ptr const* prefetchingException = nullptr; // null because there was no prefetching to do
1144  return runModuleAfterAsyncPrefetch<T>(prefetchingException, ep, es, streamID, parentContext, context);
1145  }

References SiStripBadComponentsDQMServiceTemplate_cfg::ep, and timesVisited_.

Referenced by edm::Path::finished().

◆ serializeRunModule()

virtual TaskQueueAdaptor edm::Worker::serializeRunModule ( )
privatepure virtual

◆ setActivityRegistry()

void edm::Worker::setActivityRegistry ( std::shared_ptr< ActivityRegistry areg)

The signals are required to live longer than the last call to 'doWork' this was done to improve performance based on profiling

Definition at line 102 of file Worker.cc.

102 { actReg_ = areg; }

References actReg_.

◆ setEarlyDeleteHelper()

void edm::Worker::setEarlyDeleteHelper ( EarlyDeleteHelper iHelper)

Definition at line 275 of file Worker.cc.

275 { earlyDeleteHelper_ = iHelper; }

References earlyDeleteHelper_.

◆ setException()

template<bool IS_EVENT>
std::exception_ptr edm::Worker::setException ( std::exception_ptr  iException)
inlineprivate

Definition at line 363 of file Worker.h.

363  {
364  if (IS_EVENT) {
365  timesExcept_.fetch_add(1, std::memory_order_relaxed);
366  }
367  cached_exception_ = iException; // propagate_const<T> has no reset() function
368  state_ = Exception;
369  return cached_exception_;
370  }

References cached_exception_, Exception, state_, and timesExcept_.

◆ setFailed()

template<bool IS_EVENT>
bool edm::Worker::setFailed ( )
inlineprivate

Definition at line 354 of file Worker.h.

354  {
355  if (IS_EVENT) {
356  timesFailed_.fetch_add(1, std::memory_order_relaxed);
357  }
358  state_ = Fail;
359  return false;
360  }

References Fail, state_, and timesFailed_.

◆ setPassed()

template<bool IS_EVENT>
bool edm::Worker::setPassed ( )
inlineprivate

Definition at line 345 of file Worker.h.

345  {
346  if (IS_EVENT) {
347  timesPassed_.fetch_add(1, std::memory_order_relaxed);
348  }
349  state_ = Pass;
350  return true;
351  }

References Pass, state_, and timesPassed_.

◆ shouldRethrowException()

bool edm::Worker::shouldRethrowException ( std::exception_ptr  iPtr,
ParentContext const &  parentContext,
bool  isEvent,
TransitionIDValueBase const &  iID 
) const
private

Definition at line 156 of file Worker.cc.

159  {
160  // NOTE: the warning printed as a result of ignoring or failing
161  // a module will only be printed during the full true processing
162  // pass of this module
163 
164  // Get the action corresponding to this exception. However, if processing
165  // something other than an event (e.g. run, lumi) always rethrow.
166  if (not isEvent) {
167  return true;
168  }
169  try {
170  convertException::wrap([&]() { std::rethrow_exception(iPtr); });
171  } catch (cms::Exception& ex) {
173 
175  return true;
176  }
177 
178  ModuleCallingContext tempContext(&description(), ModuleCallingContext::State::kInvalid, parentContext, nullptr);
179 
180  // If we are processing an endpath and the module was scheduled, treat SkipEvent or FailPath
181  // as IgnoreCompletely, so any subsequent OutputModules are still run.
182  // For unscheduled modules only treat FailPath as IgnoreCompletely but still allow SkipEvent to throw
183  ModuleCallingContext const* top_mcc = tempContext.getTopModuleCallingContext();
184  if (top_mcc->type() == ParentContext::Type::kPlaceInPath &&
185  top_mcc->placeInPathContext()->pathContext()->isEndPath()) {
186  if ((action == exception_actions::SkipEvent && tempContext.type() == ParentContext::Type::kPlaceInPath) ||
189  }
190  }
192  edm::printCmsExceptionWarning("IgnoreCompletely", ex);
193  return false;
194  }
195  }
196  return true;
197  }

References writedatasetfile::action, actions_, cms::Exception::category(), description(), edm::exception_actions::FailPath, edm::ExceptionToActionTable::find(), edm::ModuleCallingContext::getTopModuleCallingContext(), edm::exception_actions::IgnoreCompletely, edm::PathContext::isEndPath(), edm::ModuleCallingContext::kInvalid, edm::ParentContext::kPlaceInPath, edm::PlaceInPathContext::pathContext(), edm::ModuleCallingContext::placeInPathContext(), edm::printCmsExceptionWarning(), edm::exception_actions::Rethrow, edm::exception_actions::SkipEvent, edm::ModuleCallingContext::type(), and edm::convertException::wrap().

Referenced by doWork(), runAcquire(), runAcquireAfterAsyncPrefetch(), runModule(), and runModuleAfterAsyncPrefetch().

◆ skipOnPath()

void edm::Worker::skipOnPath ( EventPrincipal const &  iEvent)

Definition at line 363 of file Worker.cc.

363  {
364  if (earlyDeleteHelper_) {
365  earlyDeleteHelper_->pathFinished(iEvent);
366  }
367  if (0 == --numberOfPathsLeftToRun_) {
369  }
370  }

References cached_exception_, edm::WaitingTaskList::doneWaiting(), earlyDeleteHelper_, iEvent, numberOfPathsLeftToRun_, and waitingTasks_.

Referenced by edm::WorkerInPath::skipWorker().

◆ state()

State edm::Worker::state ( ) const
inline

Definition at line 232 of file Worker.h.

232 { return state_; }

References state_.

Referenced by edm::WorkerInPath::checkResultsOfRunWorker(), and doWork().

◆ timesExcept()

int edm::Worker::timesExcept ( ) const
inline

Definition at line 231 of file Worker.h.

231 { return timesExcept_.load(std::memory_order_acquire); }

References timesExcept_.

◆ timesFailed()

int edm::Worker::timesFailed ( ) const
inline

Definition at line 230 of file Worker.h.

230 { return timesFailed_.load(std::memory_order_acquire); }

References timesFailed_.

◆ timesPass()

int edm::Worker::timesPass ( ) const
inline

Definition at line 234 of file Worker.h.

234 { return timesPassed(); } // for backward compatibility only - to be removed soon

References timesPassed().

◆ timesPassed()

int edm::Worker::timesPassed ( ) const
inline

Definition at line 229 of file Worker.h.

229 { return timesPassed_.load(std::memory_order_acquire); }

References timesPassed_.

Referenced by timesPass().

◆ timesRun()

int edm::Worker::timesRun ( ) const
inline

Definition at line 227 of file Worker.h.

227 { return timesRun_.load(std::memory_order_acquire); }

References timesRun_.

◆ timesVisited()

int edm::Worker::timesVisited ( ) const
inline

Definition at line 228 of file Worker.h.

228 { return timesVisited_.load(std::memory_order_acquire); }

References timesVisited_.

◆ updateLookup() [1/2]

virtual void edm::Worker::updateLookup ( BranchType  iBranchType,
ProductResolverIndexHelper const &   
)
pure virtual

Implemented in edm::WorkerT< T >.

◆ updateLookup() [2/2]

virtual void edm::Worker::updateLookup ( eventsetup::ESRecordsToProxyIndices const &  )
pure virtual

Implemented in edm::WorkerT< T >.

◆ wantsGlobalLuminosityBlocks()

virtual bool edm::Worker::wantsGlobalLuminosityBlocks ( ) const
pure virtual

◆ wantsGlobalRuns()

virtual bool edm::Worker::wantsGlobalRuns ( ) const
pure virtual

◆ wantsStreamLuminosityBlocks()

virtual bool edm::Worker::wantsStreamLuminosityBlocks ( ) const
pure virtual

◆ wantsStreamRuns()

virtual bool edm::Worker::wantsStreamRuns ( ) const
pure virtual

◆ workerType()

virtual std::string edm::Worker::workerType ( ) const
protectedpure virtual

Implemented in edm::WorkerT< T >.

Friends And Related Function Documentation

◆ workerhelper::CallImpl

template<typename O >
friend class workerhelper::CallImpl
friend

Definition at line 240 of file Worker.h.

Member Data Documentation

◆ actions_

ExceptionToActionTable const* edm::Worker::actions_
private

Definition at line 615 of file Worker.h.

Referenced by shouldRethrowException().

◆ actReg_

std::shared_ptr<ActivityRegistry> edm::Worker::actReg_
private

◆ cached_exception_

std::exception_ptr edm::Worker::cached_exception_
private

Definition at line 616 of file Worker.h.

Referenced by doWork(), reset(), runModule(), setException(), and skipOnPath().

◆ earlyDeleteHelper_

edm::propagate_const<EarlyDeleteHelper*> edm::Worker::earlyDeleteHelper_
private

Definition at line 620 of file Worker.h.

Referenced by postDoEvent(), setEarlyDeleteHelper(), and skipOnPath().

◆ moduleCallingContext_

ModuleCallingContext edm::Worker::moduleCallingContext_
private

◆ numberOfPathsLeftToRun_

std::atomic<int> edm::Worker::numberOfPathsLeftToRun_
private

Definition at line 611 of file Worker.h.

Referenced by reset(), and skipOnPath().

◆ numberOfPathsOn_

int edm::Worker::numberOfPathsOn_
private

Definition at line 610 of file Worker.h.

Referenced by addedToPath(), and reset().

◆ ranAcquireWithoutException_

bool edm::Worker::ranAcquireWithoutException_
private

Definition at line 624 of file Worker.h.

Referenced by handleExternalWorkException(), and runAcquireAfterAsyncPrefetch().

◆ state_

std::atomic<State> edm::Worker::state_
private

◆ timesExcept_

std::atomic<int> edm::Worker::timesExcept_
private

Definition at line 608 of file Worker.h.

Referenced by clearCounters(), setException(), and timesExcept().

◆ timesFailed_

std::atomic<int> edm::Worker::timesFailed_
private

Definition at line 607 of file Worker.h.

Referenced by clearCounters(), setFailed(), and timesFailed().

◆ timesPassed_

std::atomic<int> edm::Worker::timesPassed_
private

Definition at line 606 of file Worker.h.

Referenced by clearCounters(), setPassed(), and timesPassed().

◆ timesRun_

std::atomic<int> edm::Worker::timesRun_
private

Definition at line 604 of file Worker.h.

Referenced by clearCounters(), prePrefetchSelectionAsync(), runAcquire(), runModule(), and timesRun().

◆ timesVisited_

std::atomic<int> edm::Worker::timesVisited_
private

Definition at line 605 of file Worker.h.

Referenced by clearCounters(), doWork(), doWorkAsync(), runModuleDirectly(), and timesVisited().

◆ waitingTasks_

edm::WaitingTaskList edm::Worker::waitingTasks_
private

◆ workStarted_

std::atomic<bool> edm::Worker::workStarted_
private

Definition at line 623 of file Worker.h.

Referenced by doWork(), doWorkAsync(), doWorkNoPrefetchingAsync(), and reset().

edm::ModuleCallingContext::state
State state() const
Definition: ModuleCallingContext.h:51
edm::ModuleDescription::moduleLabel
std::string const & moduleLabel() const
Definition: ModuleDescription.h:43
edm::Worker::itemsToGetForSelection
virtual void itemsToGetForSelection(std::vector< ProductResolverIndexAndSkipBit > &) const =0
edm::exceptionContext
void exceptionContext(std::ostream &, GlobalContext const &)
Definition: GlobalContext.cc:59
edm::ProductResolverIndex
unsigned int ProductResolverIndex
Definition: ProductResolverIndex.h:8
edm::Worker::prefetchAsync
void prefetchAsync(WaitingTask *, ServiceToken const &, ParentContext const &parentContext, Principal const &)
Definition: Worker.cc:199
edm::ModuleCallingContext::State::kPrefetching
cms::Exception::addContext
void addContext(std::string const &context)
Definition: Exception.cc:165
edm::Worker::actReg_
std::shared_ptr< ActivityRegistry > actReg_
Definition: Worker.h:618
edm::Worker::implEndJob
virtual void implEndJob()=0
ActivityRegistry
Timestamp
edm::exception_actions::Rethrow
Definition: ExceptionActions.h:11
edm::Worker::runAcquire
void runAcquire(EventPrincipal const &ep, EventSetupImpl const &es, ParentContext const &parentContext, WaitingTaskWithArenaHolder &holder)
Definition: Worker.cc:378
edm::Worker::timesPassed_
std::atomic< int > timesPassed_
Definition: Worker.h:606
edm::Worker::Fail
Definition: Worker.h:85
edm::Worker::preActionBeforeRunEventAsync
virtual void preActionBeforeRunEventAsync(WaitingTask *iTask, ModuleCallingContext const &moduleCallingContext, Principal const &iPrincipal) const =0
edm::printCmsExceptionWarning
void printCmsExceptionWarning(char const *behavior, cms::Exception const &e)
Definition: ExceptionMessages.cc:25
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::Worker::timesVisited_
std::atomic< int > timesVisited_
Definition: Worker.h:605
edm::Worker::Exception
Definition: Worker.h:85
edm::WaitingTaskList::add
void add(WaitingTask *)
Adds task to the waiting list.
Definition: WaitingTaskList.cc:89
edm::ModuleDescription::moduleName
std::string const & moduleName() const
Definition: ModuleDescription.h:42
edm::Worker::actions_
ExceptionToActionTable const * actions_
Definition: Worker.h:615
edm::Worker::implBeginJob
virtual void implBeginJob()=0
edm::make_functor_task
FunctorTask< F > * make_functor_task(ALLOC &&iAlloc, F f)
Definition: FunctorTask.h:47
edm::ParentContext::Type::kStream
cms::cuda::assert
assert(be >=bs)
edm::Worker::numberOfPathsLeftToRun_
std::atomic< int > numberOfPathsLeftToRun_
Definition: Worker.h:611
edm::ParentContext::Type::kGlobal
edm::Worker::kProducer
Definition: Worker.h:86
edm::ParentContext::Type::kPlaceInPath
edm::ModuleCallingContext::State::kInvalid
edm::ModuleCallingContext::moduleDescription
ModuleDescription const * moduleDescription() const
Definition: ModuleCallingContext.h:50
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
CMS_SA_ALLOW
#define CMS_SA_ALLOW
Definition: thread_safety_macros.h:5
edm::Worker::implEndStream
virtual void implEndStream(StreamID)=0
edm::Worker::workStarted_
std::atomic< bool > workStarted_
Definition: Worker.h:623
edm::ModuleCallingContext::parent
ParentContext const & parent() const
Definition: ModuleCallingContext.h:53
mps_monitormerge.items
list items
Definition: mps_monitormerge.py:29
edm::WaitingTaskList::reset
void reset()
Resets access to the resource so that added tasks will wait.
Definition: WaitingTaskList.cc:51
edm::Worker::implRespondToCloseInputFile
virtual void implRespondToCloseInputFile(FileBlock const &fb)=0
edm::Worker::shouldRethrowException
bool shouldRethrowException(std::exception_ptr iPtr, ParentContext const &parentContext, bool isEvent, TransitionIDValueBase const &iID) const
Definition: Worker.cc:156
edm::Worker::implDoPrePrefetchSelection
virtual bool implDoPrePrefetchSelection(StreamID id, EventPrincipal const &ep, ModuleCallingContext const *mcc)=0
edm::Worker::kFilter
Definition: Worker.h:86
edm::Worker::earlyDeleteHelper_
edm::propagate_const< EarlyDeleteHelper * > earlyDeleteHelper_
Definition: Worker.h:620
WaitingTask
edm::Worker::timesRun_
std::atomic< int > timesRun_
Definition: Worker.h:604
edm::Worker::kAnalyzer
Definition: Worker.h:86
edm::convertException::wrap
auto wrap(F iFunc) -> decltype(iFunc())
Definition: ConvertException.h:19
edm::StreamContext::Transition::kBeginStream
edm::ParentContext::Type::kInternal
TrackValidation_cff.task
task
Definition: TrackValidation_cff.py:252
edm::Worker::state_
std::atomic< State > state_
Definition: Worker.h:609
edm::exception_actions::FailPath
Definition: ExceptionActions.h:11
edm::WaitingTaskList::doneWaiting
void doneWaiting(std::exception_ptr iPtr)
Signals that the resource is now available and tasks should be spawned.
Definition: WaitingTaskList.cc:169
WaitingTaskHolder
edm::InEvent
Definition: BranchType.h:11
edm::Worker::Pass
Definition: Worker.h:85
edm::exception_actions::SkipEvent
Definition: ExceptionActions.h:11
OrderedSet.t
t
Definition: OrderedSet.py:90
edm::ParentContext::Type::kModule
edm::make_waiting_task
FunctorWaitingTask< F > * make_waiting_task(ALLOC &&iAlloc, F f)
Definition: WaitingTask.h:87
edm::Worker::timesExcept_
std::atomic< int > timesExcept_
Definition: Worker.h:608
createBeamHaloJobs.queue
queue
Definition: createBeamHaloJobs.py:343
edm::ServiceRegistry::Operate
friend class Operate
Definition: ServiceRegistry.h:54
edm::Worker::serializeRunModule
virtual TaskQueueAdaptor serializeRunModule()=0
edm::Worker::waitingTasks_
edm::WaitingTaskList waitingTasks_
Definition: Worker.h:622
edm::LuminosityBlockIndex::invalidLuminosityBlockIndex
static LuminosityBlockIndex invalidLuminosityBlockIndex()
Definition: LuminosityBlockIndex.cc:9
fetchall_from_DQM_v2.release
release
Definition: fetchall_from_DQM_v2.py:92
edm::ModuleCallingContext::previousModuleOnThread
ModuleCallingContext const * previousModuleOnThread() const
Definition: ModuleCallingContext.h:75
edm::Worker::implRegisterThinnedAssociations
virtual void implRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &)=0
edm::ServiceRegistry::presentToken
ServiceToken presentToken() const
Definition: ServiceRegistry.cc:63
edm::ModuleCallingContext::getStreamContext
StreamContext const * getStreamContext() const
Definition: ModuleCallingContext.cc:32
edm::ModuleCallingContext::setState
void setState(State state)
Definition: ModuleCallingContext.h:48
Exception
helper
Definition: helper.py:1
edm::Worker::prePrefetchSelectionAsync
void prePrefetchSelectionAsync(WaitingTask *task, ServiceToken const &, StreamID stream, EventPrincipal const *)
Definition: Worker.cc:232
edm::ModuleCallingContext::setContext
void setContext(State state, ParentContext const &parent, ModuleCallingContext const *previousOnThread)
Definition: ModuleCallingContext.cc:24
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::Worker::ranAcquireWithoutException_
bool ranAcquireWithoutException_
Definition: Worker.h:624
edm::Worker::exceptionContext
static void exceptionContext(cms::Exception &ex, ModuleCallingContext const *mcc)
Definition: Worker.cc:104
edm::Worker::implRespondToOpenInputFile
virtual void implRespondToOpenInputFile(FileBlock const &fb)=0
edm::Worker::numberOfPathsOn_
int numberOfPathsOn_
Definition: Worker.h:610
writedatasetfile.action
action
Definition: writedatasetfile.py:8
edm::Worker::moduleCallingContext_
ModuleCallingContext moduleCallingContext_
Definition: Worker.h:613
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
edm::Worker::timesFailed_
std::atomic< int > timesFailed_
Definition: Worker.h:607
edm::Worker::description
ModuleDescription const & description() const
Definition: Worker.h:190
edm::Worker::state
State state() const
Definition: Worker.h:232
edm::Worker::cached_exception_
std::exception_ptr cached_exception_
Definition: Worker.h:616
edm::ServiceRegistry::instance
static ServiceRegistry & instance()
Definition: ServiceRegistry.cc:90
edm::RunIndex::invalidRunIndex
static RunIndex invalidRunIndex()
Definition: RunIndex.cc:9
edm::make_empty_waiting_task
std::unique_ptr< edm::EmptyWaitingTask, waitingtask::TaskDestroyer > make_empty_waiting_task()
Create an EmptyWaitingTask which will properly be destroyed.
Definition: WaitingTaskList.h:96
edm::Worker::timesPassed
int timesPassed() const
Definition: Worker.h:229
edm::ProductResolverIndexAmbiguous
Definition: ProductResolverIndex.h:18
edm::Worker::itemsToGetFrom
virtual std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom(BranchType) const =0
cms::cuda::device::unique_ptr
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
Definition: device_unique_ptr.h:33
edm::Worker::hasAcquire
virtual bool hasAcquire() const =0
edm::WaitingTask
Definition: WaitingTask.h:36
eostools.move
def move(src, dest)
Definition: eostools.py:511
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
edm::Worker::implDoAcquire
virtual void implDoAcquire(EventPrincipal const &, EventSetupImpl const &c, ModuleCallingContext const *mcc, WaitingTaskWithArenaHolder &holder)=0
edm::ExceptionToActionTable::find
exception_actions::ActionCodes find(const std::string &category) const
Definition: ExceptionActions.cc:85
edm::Worker::implBeginStream
virtual void implBeginStream(StreamID)=0
edm::Worker::Ready
Definition: Worker.h:85
edm::Worker::emitPostModuleEventPrefetchingSignal
void emitPostModuleEventPrefetchingSignal()
Definition: Worker.h:374
cms::Exception
Definition: Exception.h:70
edm::exception_actions::IgnoreCompletely
Definition: ExceptionActions.h:11
cms::Exception::category
std::string const & category() const
Definition: Exception.cc:143
edm::Worker::kOutputModule
Definition: Worker.h:86
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
benchmark_cfg.fb
fb
Definition: benchmark_cfg.py:14
edm::StreamContext::Transition::kEndStream
edm::exception_actions::ActionCodes
ActionCodes
Definition: ExceptionActions.h:11
edm::ModuleCallingContext::State::kRunning
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316