CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
edm::Path Class Reference

#include <Path.h>

Public Types

typedef WorkersInPath::size_type size_type
 
typedef hlt::HLTState State
 
typedef std::shared_ptr< HLTGlobalStatusTrigResPtr
 
typedef std::vector< WorkerInPathWorkersInPath
 

Public Member Functions

int bitPosition () const
 
void clearCounters ()
 
Worker const * getWorker (size_type i) const
 
std::string const & name () const
 
 Path (int bitpos, std::string const &path_name, WorkersInPath const &workers, TrigResPtr trptr, ExceptionToActionTable const &actions, std::shared_ptr< ActivityRegistry > reg, StreamContext const *streamContext, std::atomic< bool > *stopProcessEvent, PathContext::PathType pathType)
 
 Path (Path const &)
 
void processOneOccurrenceAsync (WaitingTask *, EventPrincipal const &, EventSetupImpl const &, ServiceToken const &, StreamID const &, StreamContext const *)
 
template<typename T >
void runAllModulesAsync (WaitingTask *, typename T::MyPrincipal const &, EventSetupImpl const &, ServiceToken const &, StreamID const &, typename T::Context const *)
 
void setEarlyDeleteHelpers (std::map< const Worker *, EarlyDeleteHelper * > const &)
 
void setPathStatusInserter (PathStatusInserter *pathStatusInserter, Worker *pathStatusInserterWorker)
 
size_type size () const
 
int timesExcept () const
 
int timesExcept (size_type i) const
 
int timesFailed () const
 
int timesFailed (size_type i) const
 
int timesPassed () const
 
int timesPassed (size_type i) const
 
int timesRun () const
 
int timesVisited (size_type i) const
 

Private Member Functions

void finished (std::exception_ptr, StreamContext const *, EventPrincipal const &iEP, EventSetupImpl const &iES, StreamID const &streamID)
 
bool handleWorkerFailure (cms::Exception &e, int nwrwue, bool isEvent, bool begin, BranchType branchType, ModuleDescription const &, std::string const &id) const
 
Path const & operator= (Path const &)=delete
 
void recordStatus (int nwrwue, hlt::HLTState state)
 
void runNextWorkerAsync (unsigned int iNextModuleIndex, EventPrincipal const &, EventSetupImpl const &, ServiceToken const &, StreamID const &, StreamContext const *)
 
void threadsafe_setFailedModuleInfo (int nwrwue, std::exception_ptr)
 
void updateCounters (hlt::HLTState state)
 
void workerFinished (std::exception_ptr const *iException, unsigned int iModuleIndex, EventPrincipal const &iEP, EventSetupImpl const &iES, ServiceToken const &iToken, StreamID const &iID, StreamContext const *iContext)
 

Static Private Member Functions

static void exceptionContext (cms::Exception &ex, bool isEvent, bool begin, BranchType branchType, ModuleDescription const &, std::string const &id, PathContext const &)
 

Private Attributes

ExceptionToActionTable const *const act_table_
 
const std::shared_ptr< ActivityRegistryactReg_
 
const int bitpos_
 
int failedModuleIndex_
 
std::atomic< unsigned int > modulesToRun_
 
PathContext pathContext_
 
PathStatusInserterpathStatusInserter_
 
WorkerpathStatusInserterWorker_
 
State state_
 
std::atomic< bool > stateLock_ = false
 
std::atomic< bool > *const stopProcessingEvent_
 
int timesExcept_
 
int timesFailed_
 
int timesPassed_
 
int timesRun_
 
const TrigResPtr trptr_
 
WaitingTaskList waitingTasks_
 
WorkersInPath workers_
 

Detailed Description

Definition at line 44 of file Path.h.

Member Typedef Documentation

◆ size_type

typedef WorkersInPath::size_type edm::Path::size_type

Definition at line 49 of file Path.h.

◆ State

Definition at line 46 of file Path.h.

◆ TrigResPtr

typedef std::shared_ptr<HLTGlobalStatus> edm::Path::TrigResPtr

Definition at line 50 of file Path.h.

◆ WorkersInPath

typedef std::vector<WorkerInPath> edm::Path::WorkersInPath

Definition at line 48 of file Path.h.

Constructor & Destructor Documentation

◆ Path() [1/2]

edm::Path::Path ( int  bitpos,
std::string const &  path_name,
WorkersInPath const &  workers,
TrigResPtr  trptr,
ExceptionToActionTable const &  actions,
std::shared_ptr< ActivityRegistry reg,
StreamContext const *  streamContext,
std::atomic< bool > *  stopProcessEvent,
PathContext::PathType  pathType 
)

Definition at line 16 of file Path.cc.

25  : timesRun_(),
26  timesPassed_(),
27  timesFailed_(),
28  timesExcept_(),
31  bitpos_(bitpos),
32  trptr_(trptr),
33  actReg_(areg),
36  pathContext_(path_name, streamContext, bitpos, pathType),
37  stopProcessingEvent_(stopProcessingEvent),
38  pathStatusInserter_(nullptr),
39  pathStatusInserterWorker_(nullptr) {
40  for (auto& workerInPath : workers_) {
41  workerInPath.setPathContext(&pathContext_);
42  }
43  modulesToRun_ = workers_.size();
44  }

References modulesToRun_, pathContext_, and workers_.

◆ Path() [2/2]

edm::Path::Path ( Path const &  r)

Definition at line 46 of file Path.cc.

47  : timesRun_(r.timesRun_),
48  timesPassed_(r.timesPassed_),
49  timesFailed_(r.timesFailed_),
50  timesExcept_(r.timesExcept_),
51  failedModuleIndex_(r.failedModuleIndex_),
52  state_(r.state_),
53  bitpos_(r.bitpos_),
54  trptr_(r.trptr_),
55  actReg_(r.actReg_),
56  act_table_(r.act_table_),
57  workers_(r.workers_),
58  pathContext_(r.pathContext_),
59  stopProcessingEvent_(r.stopProcessingEvent_),
60  pathStatusInserter_(r.pathStatusInserter_),
61  pathStatusInserterWorker_(r.pathStatusInserterWorker_) {
62  for (auto& workerInPath : workers_) {
63  workerInPath.setPathContext(&pathContext_);
64  }
65  modulesToRun_ = workers_.size();
66  }

References modulesToRun_, pathContext_, and workers_.

Member Function Documentation

◆ bitPosition()

int edm::Path::bitPosition ( ) const
inline

Definition at line 79 of file Path.h.

79 { return bitpos_; }

References bitpos_.

◆ clearCounters()

void edm::Path::clearCounters ( )

Definition at line 196 of file Path.cc.

196  {
197  using std::placeholders::_1;
199  for_all(workers_, std::bind(&WorkerInPath::clearCounters, _1));
200  }

References edm::WorkerInPath::clearCounters(), edm::for_all(), timesExcept_, timesFailed_, timesPassed_, timesRun_, and workers_.

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

◆ exceptionContext()

void edm::Path::exceptionContext ( cms::Exception ex,
bool  isEvent,
bool  begin,
BranchType  branchType,
ModuleDescription const &  desc,
std::string const &  id,
PathContext const &  pathContext 
)
staticprivate

Definition at line 117 of file Path.cc.

123  {
124  std::ostringstream ost;
125  ost << "Running path '" << pathContext.pathName() << "'";
126  ex.addContext(ost.str());
127  ost.str("");
128  ost << "Processing ";
129  //For the event case, the Worker has already
130  // added the necessary module context to the exception
131  if (begin && branchType == InRun) {
132  ost << "stream begin Run";
133  } else if (begin && branchType == InLumi) {
134  ost << "stream begin LuminosityBlock ";
135  } else if (!begin && branchType == InLumi) {
136  ost << "stream end LuminosityBlock ";
137  } else if (!begin && branchType == InRun) {
138  ost << "stream end Run ";
139  } else if (isEvent) {
140  // It should be impossible to get here ...
141  ost << "Event ";
142  }
143  ost << id;
144  ex.addContext(ost.str());
145  }

References cms::Exception::addContext(), begin, triggerObjects_cff::id, edm::InLumi, edm::InRun, and edm::PathContext::pathName().

Referenced by handleWorkerFailure().

◆ finished()

void edm::Path::finished ( std::exception_ptr  iException,
StreamContext const *  iContext,
EventPrincipal const &  iEP,
EventSetupImpl const &  iES,
StreamID const &  streamID 
)
private

Definition at line 316 of file Path.cc.

320  {
323  // Caught exception is propagated via WaitingTaskList
324  CMS_SA_ALLOW try {
325  HLTPathStatus status(state_, failedModuleIndex_);
326 
327  if (pathStatusInserter_) { // pathStatusInserter is null for EndPaths
329  }
330  std::exception_ptr jException =
331  pathStatusInserterWorker_->runModuleDirectly<OccurrenceTraits<EventPrincipal, BranchActionStreamBegin>>(
332  iEP, iES, streamID, ParentContext(iContext), iContext);
333  if (jException && not iException) {
334  iException = jException;
335  }
336  actReg_->postPathEventSignal_(*iContext, pathContext_, status);
337  } catch (...) {
338  if (not iException) {
339  iException = std::current_exception();
340  }
341  }
342  waitingTasks_.doneWaiting(iException);
343  }

References actReg_, CMS_SA_ALLOW, edm::WaitingTaskList::doneWaiting(), failedModuleIndex_, pathContext_, pathStatusInserter_, pathStatusInserterWorker_, recordStatus(), edm::Worker::runModuleDirectly(), edm::PathStatusInserter::setPathStatus(), state_, mps_update::status, updateCounters(), and waitingTasks_.

Referenced by processOneOccurrenceAsync(), and workerFinished().

◆ getWorker()

Worker const* edm::Path::getWorker ( size_type  i) const
inline

Definition at line 95 of file Path.h.

95 { return workers_.at(i).getWorker(); }

References mps_fire::i, and workers_.

Referenced by setEarlyDeleteHelpers().

◆ handleWorkerFailure()

bool edm::Path::handleWorkerFailure ( cms::Exception e,
int  nwrwue,
bool  isEvent,
bool  begin,
BranchType  branchType,
ModuleDescription const &  desc,
std::string const &  id 
) const
private

Definition at line 68 of file Path.cc.

74  {
75  if (e.context().empty()) {
76  exceptionContext(e, isEvent, begin, branchType, desc, id, pathContext_);
77  }
78  bool should_continue = true;
79 
80  // there is no support as of yet for specific paths having
81  // different exception behavior
82 
83  // If not processing an event, always rethrow.
85  switch (action) {
87  should_continue = false;
88  edm::printCmsExceptionWarning("FailPath", e);
89  break;
90  }
92  //Need the other Paths to stop as soon as possible
94  *stopProcessingEvent_ = true;
95  }
96  break;
97  }
98  default: {
101  if (e.category() == pNF) {
102  std::ostringstream ost;
103  ost << "If you wish to continue processing events after a " << pNF << " exception,\n"
104  << "add \"SkipEvent = cms.untracked.vstring('ProductNotFound')\" to the \"options\" PSet in the "
105  "configuration.\n";
106  e.addAdditionalInfo(ost.str());
107  }
108  }
109  //throw will copy which will slice the object
110  e.raise();
111  }
112  }
113 
114  return should_continue;
115  }

References act_table_, writedatasetfile::action, begin, edm::Exception::codeToString(), MillePedeFileConverter_cfg::e, exceptionContext(), edm::exception_actions::FailPath, edm::ExceptionToActionTable::find(), pathContext_, edm::printCmsExceptionWarning(), edm::errors::ProductNotFound, edm::exception_actions::Rethrow, edm::exception_actions::SkipEvent, stopProcessingEvent_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by workerFinished().

◆ name()

std::string const& edm::Path::name ( void  ) const
inline

◆ operator=()

Path const& edm::Path::operator= ( Path const &  )
privatedelete

◆ processOneOccurrenceAsync()

void edm::Path::processOneOccurrenceAsync ( WaitingTask iTask,
EventPrincipal const &  iEP,
EventSetupImpl const &  iES,
ServiceToken const &  iToken,
StreamID const &  iStreamID,
StreamContext const *  iStreamContext 
)

Definition at line 216 of file Path.cc.

221  {
223  modulesToRun_ = workers_.size();
224  ++timesRun_;
225  waitingTasks_.add(iTask);
226  if (actReg_) {
227  ServiceRegistry::Operate guard(iToken);
228  actReg_->prePathEventSignal_(*iStreamContext, pathContext_);
229  }
230  //If the Path succeeds, these are the values we have at the end
231  state_ = hlt::Pass;
232  failedModuleIndex_ = workers_.size() - 1;
233 
234  if (workers_.empty()) {
235  ServiceRegistry::Operate guard(iToken);
236  finished(std::exception_ptr(), iStreamContext, iEP, iES, iStreamID);
237  return;
238  }
239 
240  runNextWorkerAsync(0, iEP, iES, iToken, iStreamID, iStreamContext);
241  }

References actReg_, edm::WaitingTaskList::add(), failedModuleIndex_, finished(), modulesToRun_, edm::hlt::Pass, pathContext_, edm::WaitingTaskList::reset(), runNextWorkerAsync(), state_, timesRun_, waitingTasks_, and workers_.

◆ recordStatus()

void edm::Path::recordStatus ( int  nwrwue,
hlt::HLTState  state 
)
private

Definition at line 173 of file Path.cc.

173  {
174  if (trptr_) {
175  (*trptr_)[bitpos_] = HLTPathStatus(state, nwrwue);
176  }
177  }

References bitpos_, and trptr_.

Referenced by finished().

◆ runAllModulesAsync()

template<typename T >
void edm::Path::runAllModulesAsync ( WaitingTask task,
typename T::MyPrincipal const &  p,
EventSetupImpl const &  es,
ServiceToken const &  token,
StreamID const &  streamID,
typename T::Context const *  context 
)

Definition at line 202 of file Path.h.

207  {
208  for (auto& worker : workers_) {
209  worker.runWorkerAsync<T>(task, p, es, token, streamID, context);
210  }
211  }

References AlCaHLTBitMon_ParallelJobs::p, TrackValidation_cff::task, unpackBuffers-CaloStage2::token, and workers_.

◆ runNextWorkerAsync()

void edm::Path::runNextWorkerAsync ( unsigned int  iNextModuleIndex,
EventPrincipal const &  iEP,
EventSetupImpl const &  iES,
ServiceToken const &  iToken,
StreamID const &  iID,
StreamContext const *  iContext 
)
private

Definition at line 345 of file Path.cc.

350  {
351  //Figure out which next modules can run concurrently
352  const int firstModuleIndex = iNextModuleIndex;
353  int lastModuleIndex = firstModuleIndex;
354  while (lastModuleIndex + 1 != static_cast<int>(workers_.size()) and workers_[lastModuleIndex].runConcurrently()) {
355  ++lastModuleIndex;
356  }
357  for (; lastModuleIndex >= firstModuleIndex; --lastModuleIndex) {
358  auto nextTask = make_waiting_task(
359  tbb::task::allocate_root(),
360  [this, lastModuleIndex, &iEP, &iES, iID, iContext, token = iToken](std::exception_ptr const* iException) {
361  this->workerFinished(iException, lastModuleIndex, iEP, iES, token, iID, iContext);
362  });
363  workers_[lastModuleIndex].runWorkerAsync<OccurrenceTraits<EventPrincipal, BranchActionStreamBegin>>(
364  nextTask, iEP, iES, iToken, iID, iContext);
365  }
366  }

References edm::make_waiting_task(), unpackBuffers-CaloStage2::token, workerFinished(), and workers_.

Referenced by processOneOccurrenceAsync(), and workerFinished().

◆ setEarlyDeleteHelpers()

void edm::Path::setEarlyDeleteHelpers ( std::map< const Worker *, EarlyDeleteHelper * > const &  iWorkerToDeleter)

Definition at line 202 of file Path.cc.

202  {
203  for (unsigned int index = 0; index != size(); ++index) {
204  auto found = iWorkerToDeleter.find(getWorker(index));
205  if (found != iWorkerToDeleter.end()) {
206  found->second->addedToPath();
207  }
208  }
209  }

References newFWLiteAna::found, getWorker(), and size().

◆ setPathStatusInserter()

void edm::Path::setPathStatusInserter ( PathStatusInserter pathStatusInserter,
Worker pathStatusInserterWorker 
)

Definition at line 211 of file Path.cc.

211  {
212  pathStatusInserter_ = pathStatusInserter;
213  pathStatusInserterWorker_ = pathStatusInserterWorker;
214  }

References pathStatusInserter_, and pathStatusInserterWorker_.

◆ size()

size_type edm::Path::size ( void  ) const
inline

Definition at line 90 of file Path.h.

90 { return workers_.size(); }

References workers_.

Referenced by ntupleDataFormat._Collection::__iter__(), ntupleDataFormat._Collection::__len__(), and setEarlyDeleteHelpers().

◆ threadsafe_setFailedModuleInfo()

void edm::Path::threadsafe_setFailedModuleInfo ( int  nwrwue,
std::exception_ptr  iExcept 
)
private

Definition at line 147 of file Path.cc.

147  {
148  bool expected = false;
149  while (stateLock_.compare_exchange_strong(expected, true)) {
150  expected = false;
151  }
152  if (iExcept) {
153  if (state_ == hlt::Exception) {
154  if (nwrwue < failedModuleIndex_) {
155  failedModuleIndex_ = nwrwue;
156  }
157  } else {
159  failedModuleIndex_ = nwrwue;
160  }
161  } else {
162  if (state_ != hlt::Exception) {
163  if (nwrwue < failedModuleIndex_) {
164  failedModuleIndex_ = nwrwue;
165  }
166  state_ = hlt::Fail;
167  }
168  }
169 
170  stateLock_ = false;
171  }

References edm::hlt::Exception, edm::hlt::Fail, failedModuleIndex_, state_, and stateLock_.

Referenced by workerFinished().

◆ timesExcept() [1/2]

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

Definition at line 87 of file Path.h.

87 { return timesExcept_; }

References timesExcept_.

◆ timesExcept() [2/2]

int edm::Path::timesExcept ( size_type  i) const
inline

Definition at line 94 of file Path.h.

94 { return workers_.at(i).timesExcept(); }

References mps_fire::i, and workers_.

◆ timesFailed() [1/2]

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

Definition at line 86 of file Path.h.

86 { return timesFailed_; }

References timesFailed_.

◆ timesFailed() [2/2]

int edm::Path::timesFailed ( size_type  i) const
inline

Definition at line 93 of file Path.h.

93 { return workers_.at(i).timesFailed(); }

References mps_fire::i, and workers_.

◆ timesPassed() [1/2]

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

Definition at line 85 of file Path.h.

85 { return timesPassed_; }

References timesPassed_.

◆ timesPassed() [2/2]

int edm::Path::timesPassed ( size_type  i) const
inline

Definition at line 92 of file Path.h.

92 { return workers_.at(i).timesPassed(); }

References mps_fire::i, and workers_.

◆ timesRun()

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

Definition at line 84 of file Path.h.

84 { return timesRun_; }

References timesRun_.

◆ timesVisited()

int edm::Path::timesVisited ( size_type  i) const
inline

Definition at line 91 of file Path.h.

91 { return workers_.at(i).timesVisited(); }

References mps_fire::i, and workers_.

◆ updateCounters()

void edm::Path::updateCounters ( hlt::HLTState  state)
private

Definition at line 179 of file Path.cc.

179  {
180  switch (state) {
181  case hlt::Pass: {
182  ++timesPassed_;
183  break;
184  }
185  case hlt::Fail: {
186  ++timesFailed_;
187  break;
188  }
189  case hlt::Exception: {
190  ++timesExcept_;
191  }
192  default:;
193  }
194  }

References edm::hlt::Exception, edm::hlt::Fail, edm::hlt::Pass, timesExcept_, timesFailed_, and timesPassed_.

Referenced by finished().

◆ workerFinished()

void edm::Path::workerFinished ( std::exception_ptr const *  iException,
unsigned int  iModuleIndex,
EventPrincipal const &  iEP,
EventSetupImpl const &  iES,
ServiceToken const &  iToken,
StreamID const &  iID,
StreamContext const *  iContext 
)
private

Definition at line 243 of file Path.cc.

249  {
250  ServiceRegistry::Operate guard(iToken);
251 
252  //This call also allows the WorkerInPath to update statistics
253  // so should be done even if an exception happened
254  auto& worker = workers_[iModuleIndex];
255  bool shouldContinue = worker.checkResultsOfRunWorker(true);
256  std::exception_ptr finalException;
257  if (iException) {
258  std::unique_ptr<cms::Exception> pEx;
259  try {
260  std::rethrow_exception(*iException);
261  } catch (cms::Exception& oldEx) {
262  pEx = std::unique_ptr<cms::Exception>(oldEx.clone());
263  }
264  // Caught exception is propagated via WaitingTaskList
265  CMS_SA_ALLOW try {
266  std::ostringstream ost;
267  ost << iEP.id();
268  shouldContinue = handleWorkerFailure(*pEx,
269  iModuleIndex,
270  /*isEvent*/ true,
271  /*isBegin*/ true,
272  InEvent,
273  worker.getWorker()->description(),
274  ost.str());
275  //If we didn't rethrow, then we effectively skipped
276  worker.skipWorker(iEP);
277  finalException = std::exception_ptr();
278  } catch (...) {
279  shouldContinue = false;
280  finalException = std::current_exception();
281  //set the exception early to avoid case where another Path is waiting
282  // on a module in this Path and not running the module will lead to a
283  // different but related exception in the other Path. We want this
284  // Paths exception to be the one that gets reported.
285  waitingTasks_.presetTaskAsFailed(finalException);
286  }
287  }
289  shouldContinue = false;
290  }
291  auto const nextIndex = iModuleIndex + 1;
292  if (shouldContinue and nextIndex < workers_.size()) {
293  if (not worker.runConcurrently()) {
294  --modulesToRun_;
295  runNextWorkerAsync(nextIndex, iEP, iES, iToken, iID, iContext);
296  return;
297  }
298  }
299 
300  if (not shouldContinue) {
301  threadsafe_setFailedModuleInfo(iModuleIndex, finalException);
302  }
303  if (not shouldContinue and not worker.runConcurrently()) {
304  //we are leaving the path early
305  for (auto it = workers_.begin() + nextIndex, itEnd = workers_.end(); it != itEnd; ++it) {
306  --modulesToRun_;
307  it->skipWorker(iEP);
308  }
309  }
310  if (--modulesToRun_ == 0) {
311  //The path should only be marked as finished once all outstanding modules finish
312  finished(finalException, iContext, iEP, iES, iID);
313  }
314  }

References cms::Exception::clone(), CMS_SA_ALLOW, finished(), handleWorkerFailure(), edm::EventPrincipal::id(), edm::InEvent, modulesToRun_, edm::WaitingTaskList::presetTaskAsFailed(), runNextWorkerAsync(), stopProcessingEvent_, threadsafe_setFailedModuleInfo(), waitingTasks_, and workers_.

Referenced by runNextWorkerAsync().

Member Data Documentation

◆ act_table_

ExceptionToActionTable const* const edm::Path::act_table_
private

Definition at line 121 of file Path.h.

Referenced by handleWorkerFailure().

◆ actReg_

const std::shared_ptr<ActivityRegistry> edm::Path::actReg_
private

Definition at line 120 of file Path.h.

Referenced by finished(), and processOneOccurrenceAsync().

◆ bitpos_

const int edm::Path::bitpos_
private

Definition at line 117 of file Path.h.

Referenced by bitPosition(), and recordStatus().

◆ failedModuleIndex_

int edm::Path::failedModuleIndex_
private

Definition at line 114 of file Path.h.

Referenced by finished(), processOneOccurrenceAsync(), and threadsafe_setFailedModuleInfo().

◆ modulesToRun_

std::atomic<unsigned int> edm::Path::modulesToRun_
private

Definition at line 128 of file Path.h.

Referenced by Path(), processOneOccurrenceAsync(), and workerFinished().

◆ pathContext_

PathContext edm::Path::pathContext_
private

Definition at line 125 of file Path.h.

Referenced by finished(), handleWorkerFailure(), name(), Path(), and processOneOccurrenceAsync().

◆ pathStatusInserter_

PathStatusInserter* edm::Path::pathStatusInserter_
private

Definition at line 130 of file Path.h.

Referenced by finished(), and setPathStatusInserter().

◆ pathStatusInserterWorker_

Worker* edm::Path::pathStatusInserterWorker_
private

Definition at line 131 of file Path.h.

Referenced by finished(), and setPathStatusInserter().

◆ state_

State edm::Path::state_
private

Definition at line 115 of file Path.h.

Referenced by finished(), processOneOccurrenceAsync(), and threadsafe_setFailedModuleInfo().

◆ stateLock_

std::atomic<bool> edm::Path::stateLock_ = false
private

Definition at line 113 of file Path.h.

Referenced by threadsafe_setFailedModuleInfo().

◆ stopProcessingEvent_

std::atomic<bool>* const edm::Path::stopProcessingEvent_
private

Definition at line 127 of file Path.h.

Referenced by handleWorkerFailure(), and workerFinished().

◆ timesExcept_

int edm::Path::timesExcept_
private

Definition at line 109 of file Path.h.

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

◆ timesFailed_

int edm::Path::timesFailed_
private

Definition at line 108 of file Path.h.

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

◆ timesPassed_

int edm::Path::timesPassed_
private

Definition at line 107 of file Path.h.

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

◆ timesRun_

int edm::Path::timesRun_
private

Definition at line 106 of file Path.h.

Referenced by clearCounters(), processOneOccurrenceAsync(), and timesRun().

◆ trptr_

const TrigResPtr edm::Path::trptr_
private

Definition at line 118 of file Path.h.

Referenced by recordStatus().

◆ waitingTasks_

WaitingTaskList edm::Path::waitingTasks_
private

Definition at line 126 of file Path.h.

Referenced by finished(), processOneOccurrenceAsync(), and workerFinished().

◆ workers_

WorkersInPath edm::Path::workers_
private
edm::Path::pathStatusInserterWorker_
Worker * pathStatusInserterWorker_
Definition: Path.h:131
edm::Path::pathStatusInserter_
PathStatusInserter * pathStatusInserter_
Definition: Path.h:130
mps_fire.i
i
Definition: mps_fire.py:355
edm::Path::getWorker
Worker const * getWorker(size_type i) const
Definition: Path.h:95
cms::Exception::addContext
void addContext(std::string const &context)
Definition: Exception.cc:165
edm::Path::stateLock_
std::atomic< bool > stateLock_
Definition: Path.h:113
edm::Path::threadsafe_setFailedModuleInfo
void threadsafe_setFailedModuleInfo(int nwrwue, std::exception_ptr)
Definition: Path.cc:147
edm::exception_actions::Rethrow
Definition: ExceptionActions.h:11
edm::Path::waitingTasks_
WaitingTaskList waitingTasks_
Definition: Path.h:126
mps_update.status
status
Definition: mps_update.py:69
edm::Path::modulesToRun_
std::atomic< unsigned int > modulesToRun_
Definition: Path.h:128
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::printCmsExceptionWarning
void printCmsExceptionWarning(char const *behavior, cms::Exception const &e)
Definition: ExceptionMessages.cc:25
edm::WaitingTaskList::add
void add(WaitingTask *)
Adds task to the waiting list.
Definition: WaitingTaskList.cc:89
edm::Path::bitpos_
const int bitpos_
Definition: Path.h:117
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::InRun
Definition: BranchType.h:11
CMS_SA_ALLOW
#define CMS_SA_ALLOW
Definition: thread_safety_macros.h:5
edm::Path::timesFailed_
int timesFailed_
Definition: Path.h:108
edm::Path::finished
void finished(std::exception_ptr, StreamContext const *, EventPrincipal const &iEP, EventSetupImpl const &iES, StreamID const &streamID)
Definition: Path.cc:316
edm::Path::timesExcept_
int timesExcept_
Definition: Path.h:109
edm::WaitingTaskList::reset
void reset()
Resets access to the resource so that added tasks will wait.
Definition: WaitingTaskList.cc:51
edm::for_all
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
edm::WaitingTaskList::presetTaskAsFailed
void presetTaskAsFailed(std::exception_ptr iExcept)
Definition: WaitingTaskList.cc:124
edm::errors::ProductNotFound
Definition: EDMException.h:33
edm::Path::stopProcessingEvent_
std::atomic< bool > *const stopProcessingEvent_
Definition: Path.h:127
edm::Path::updateCounters
void updateCounters(hlt::HLTState state)
Definition: Path.cc:179
edm::Path::pathContext_
PathContext pathContext_
Definition: Path.h:125
TrackValidation_cff.task
task
Definition: TrackValidation_cff.py:252
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
edm::InEvent
Definition: BranchType.h:11
edm::exception_actions::SkipEvent
Definition: ExceptionActions.h:11
edm::make_waiting_task
FunctorWaitingTask< F > * make_waiting_task(ALLOC &&iAlloc, F f)
Definition: WaitingTask.h:87
edm::Path::trptr_
const TrigResPtr trptr_
Definition: Path.h:118
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::PathStatusInserter::setPathStatus
void setPathStatus(StreamID const &, HLTPathStatus const &)
Definition: PathStatusInserter.cc:12
edm::ServiceRegistry::Operate
friend class Operate
Definition: ServiceRegistry.h:54
edm::hlt::Fail
reject
Definition: HLTenums.h:19
edm::Path::size
size_type size() const
Definition: Path.h:90
edm::InLumi
Definition: BranchType.h:11
edm::Path::act_table_
ExceptionToActionTable const *const act_table_
Definition: Path.h:121
edm::Path::workers_
WorkersInPath workers_
Definition: Path.h:123
edm::Path::exceptionContext
static void exceptionContext(cms::Exception &ex, bool isEvent, bool begin, BranchType branchType, ModuleDescription const &, std::string const &id, PathContext const &)
Definition: Path.cc:117
edm::hlt::Ready
not [yet] run
Definition: HLTenums.h:17
edm::Path::actReg_
const std::shared_ptr< ActivityRegistry > actReg_
Definition: Path.h:120
writedatasetfile.action
action
Definition: writedatasetfile.py:8
edm::Path::failedModuleIndex_
int failedModuleIndex_
Definition: Path.h:114
edm::PathContext::pathName
std::string const & pathName() const
Definition: PathContext.h:30
alignCSCRings.r
r
Definition: alignCSCRings.py:93
edm::WorkerInPath::clearCounters
void clearCounters()
Definition: WorkerInPath.h:45
edm::Exception::codeToString
static const std::string & codeToString(Code)
-----------— implementation details ---------------—
Definition: EDMException.cc:52
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
T
long double T
Definition: Basic3DVectorLD.h:48
cms::Exception::clone
virtual Exception * clone() const
Definition: Exception.cc:181
edm::ExceptionToActionTable::find
exception_actions::ActionCodes find(const std::string &category) const
Definition: ExceptionActions.cc:85
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
actions
roAction_t actions[nactions]
Definition: GenABIO.cc:181
edm::Worker::runModuleDirectly
std::exception_ptr runModuleDirectly(typename T::MyPrincipal const &ep, EventSetupImpl const &es, StreamID streamID, ParentContext const &parentContext, typename T::Context const *context)
Definition: Worker.h:1137
cms::Exception
Definition: Exception.h:70
edm::Path::handleWorkerFailure
bool handleWorkerFailure(cms::Exception &e, int nwrwue, bool isEvent, bool begin, BranchType branchType, ModuleDescription const &, std::string const &id) const
Definition: Path.cc:68
edm::hlt::Exception
error
Definition: HLTenums.h:20
edm::Path::timesRun_
int timesRun_
Definition: Path.h:106
edm::hlt::Pass
accept
Definition: HLTenums.h:18
edm::Path::recordStatus
void recordStatus(int nwrwue, hlt::HLTState state)
Definition: Path.cc:173
edm::Path::workerFinished
void workerFinished(std::exception_ptr const *iException, unsigned int iModuleIndex, EventPrincipal const &iEP, EventSetupImpl const &iES, ServiceToken const &iToken, StreamID const &iID, StreamContext const *iContext)
Definition: Path.cc:243
edm::Path::state_
State state_
Definition: Path.h:115
EcalCalibMonitorClient_cfi.workers
workers
Definition: EcalCalibMonitorClient_cfi.py:19
begin
#define begin
Definition: vmac.h:32
edm::Path::runNextWorkerAsync
void runNextWorkerAsync(unsigned int iNextModuleIndex, EventPrincipal const &, EventSetupImpl const &, ServiceToken const &, StreamID const &, StreamContext const *)
Definition: Path.cc:345
edm::exception_actions::ActionCodes
ActionCodes
Definition: ExceptionActions.h:11
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316
edm::Path::timesPassed_
int timesPassed_
Definition: Path.h:107