CMS 3D CMS Logo

StreamSchedule.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_StreamSchedule_h
2 #define FWCore_Framework_StreamSchedule_h
3 
4 /*
5  Author: Jim Kowalkowski 28-01-06
6 
7  A class for creating a schedule based on paths in the configuration file.
8  The schedule is maintained as a sequence of paths.
9  After construction, events can be fed to the object and passed through
10  all the modules in the schedule. All accounting about processing
11  of events by modules and paths is contained here or in object held
12  by containment.
13 
14  The trigger results producer and product are generated and managed here.
15  This class also manages endpaths and calls to endjob and beginjob.
16  Endpaths are just treated as a simple list of modules that need to
17  do processing of the event and do not participate in trigger path
18  activities.
19 
20  This class requires the high-level process pset. It uses @process_name.
21  If the high-level pset contains an "options" pset, then the
22  following optional parameter can be present:
23  bool wantSummary = true/false # default false
24 
25  wantSummary indicates whether or not the pass/fail/error stats
26  for modules and paths should be printed at the end-of-job.
27 
28  A TriggerResults object will always be inserted into the event
29  for any schedule. The producer of the TriggerResults EDProduct
30  is always the first module in the endpath. The TriggerResultInserter
31  is given a fixed label of "TriggerResults".
32 
33  Processing of an event happens by pushing the event through the Paths.
34  The scheduler performs the reset() on each of the workers independent
35  of the Path objects.
36 
37  ------------------------
38 
39  About Paths:
40  Paths fit into two categories:
41  1) trigger paths that contribute directly to saved trigger bits
42  2) end paths
43  The StreamSchedule holds these paths in two data structures:
44  1) main path list
45  2) end path list
46 
47  Trigger path processing always precedes endpath processing.
48  The order of the paths from the input configuration is
49  preserved in the main paths list.
50 
51  ------------------------
52 
53  The StreamSchedule uses the TriggerNamesService to get the names of the
54  trigger paths and end paths. When a TriggerResults object is created
55  the results are stored in the same order as the trigger names from
56  TriggerNamesService.
57 
58 */
59 
90 
91 #include <map>
92 #include <memory>
93 #include <set>
94 #include <string>
95 #include <vector>
96 #include <sstream>
97 #include <atomic>
98 
99 namespace edm {
100 
101  class ActivityRegistry;
102  class BranchIDListHelper;
103  class ExceptionCollector;
104  class ExceptionToActionTable;
105  class OutputModuleCommunicator;
106  class ProcessContext;
108  class WorkerInPath;
109  class ModuleRegistry;
110  class TriggerResultInserter;
111  class PathStatusInserter;
112  class EndPathStatusInserter;
113  class PreallocationConfiguration;
114  class WaitingTaskHolder;
115 
116  namespace service {
117  class TriggerNamesService;
118  }
119 
120  namespace {
121  template <typename T>
122  class StreamScheduleSignalSentry {
123  public:
124  StreamScheduleSignalSentry(ActivityRegistry* a, typename T::Context const* context)
125  : a_(a), context_(context), allowThrow_(false) {
126  if (a_)
127  T::preScheduleSignal(a_, context_);
128  }
129  ~StreamScheduleSignalSentry() noexcept(false) {
130  // Caught exception is rethrown (when allowed)
131  CMS_SA_ALLOW try {
132  if (a_) {
133  T::postScheduleSignal(a_, context_);
134  }
135  } catch (...) {
136  if (allowThrow_) {
137  throw;
138  }
139  }
140  }
141 
142  void allowThrow() { allowThrow_ = true; }
143 
144  private:
145  // We own none of these resources.
146  ActivityRegistry* a_; // We do not use propagate_const because the registry itself is mutable.
147  typename T::Context const* context_;
148  bool allowThrow_;
149  };
150  } // namespace
151 
153  public:
154  typedef std::vector<std::string> vstring;
155  typedef std::vector<Path> TrigPaths;
156  typedef std::vector<Path> NonTrigPaths;
157  typedef std::shared_ptr<HLTGlobalStatus> TrigResPtr;
158  typedef std::shared_ptr<HLTGlobalStatus const> TrigResConstPtr;
159  typedef std::shared_ptr<Worker> WorkerPtr;
160  typedef std::vector<Worker*> AllWorkers;
161 
162  typedef std::vector<Worker*> Workers;
163 
164  typedef std::vector<WorkerInPath> PathWorkers;
165 
166  StreamSchedule(std::shared_ptr<TriggerResultInserter> inserter,
167  std::vector<edm::propagate_const<std::shared_ptr<PathStatusInserter>>>& pathStatusInserters,
168  std::vector<edm::propagate_const<std::shared_ptr<EndPathStatusInserter>>>& endPathStatusInserters,
169  std::shared_ptr<ModuleRegistry>,
170  ParameterSet& proc_pset,
171  service::TriggerNamesService const& tns,
172  PreallocationConfiguration const& prealloc,
173  ProductRegistry& pregistry,
174  BranchIDListHelper& branchIDListHelper,
176  std::shared_ptr<ActivityRegistry> areg,
177  std::shared_ptr<ProcessConfiguration> processConfiguration,
178  bool allowEarlyDelete,
180  ProcessContext const* processContext);
181 
182  StreamSchedule(StreamSchedule const&) = delete;
183 
185  WaitingTaskHolder iTask,
187  ServiceToken const& token,
188  std::vector<edm::propagate_const<std::shared_ptr<PathStatusInserter>>>& pathStatusInserters);
189 
190  template <typename T>
192  typename T::TransitionInfoType& transitionInfo,
193  ServiceToken const& token,
194  bool cleaningUpAfterException = false);
195 
196  void beginStream();
197  void endStream();
198 
199  StreamID streamID() const { return streamID_; }
200 
203 
207  std::vector<ModuleDescription const*> getAllModuleDescriptions() const;
208 
210  void availablePaths(std::vector<std::string>& oLabelsToFill) const;
211 
213  void modulesInPath(std::string const& iPathLabel, std::vector<std::string>& oLabelsToFill) const;
214 
215  void moduleDescriptionsInPath(std::string const& iPathLabel,
216  std::vector<ModuleDescription const*>& descriptions,
217  unsigned int hint) const;
218 
219  void moduleDescriptionsInEndPath(std::string const& iEndPathLabel,
220  std::vector<ModuleDescription const*>& descriptions,
221  unsigned int hint) const;
222 
226  int totalEvents() const { return total_events_; }
227 
230  int totalEventsPassed() const { return total_passed_; }
231 
234  int totalEventsFailed() const { return totalEvents() - totalEventsPassed(); }
235 
238  void enableEndPaths(bool active);
239 
242  bool endPathsEnabled() const;
243 
246  void getTriggerReport(TriggerReport& rep) const;
247 
249  void clearCounters();
250 
252  void replaceModule(maker::ModuleHolder* iMod, std::string const& iLabel);
253 
255  void deleteModule(std::string const& iLabel);
256 
258  AllWorkers const& allWorkers() const { return workerManager_.allWorkers(); }
259 
261 
262  StreamContext const& context() const { return streamContext_; }
263 
264  private:
265  //Sentry class to only send a signal if an
266  // exception occurs. An exception is identified
267  // by the destructor being called without first
268  // calling completedSuccessfully().
270  public:
272  : reg_(iReg), context_(iContext) {}
274  if (reg_) {
276  }
277  }
278  void completedSuccessfully() { reg_ = nullptr; }
279 
280  private:
281  edm::ActivityRegistry* reg_; // We do not use propagate_const because the registry itself is mutable.
283  };
284 
287 
288  void resetAll();
289 
290  void finishedPaths(std::atomic<std::exception_ptr*>&, WaitingTaskHolder, EventTransitionInfo&);
291 
292  std::exception_ptr finishProcessOneEvent(std::exception_ptr);
293 
294  void reportSkipped(EventPrincipal const& ep) const;
295 
296  void fillWorkers(ParameterSet& proc_pset,
297  ProductRegistry& preg,
298  PreallocationConfiguration const* prealloc,
299  std::shared_ptr<ProcessConfiguration const> processConfiguration,
300  std::string const& name,
301  bool ignoreFilters,
302  PathWorkers& out,
303  std::vector<std::string> const& endPathNames);
304  void fillTrigPath(ParameterSet& proc_pset,
305  ProductRegistry& preg,
306  PreallocationConfiguration const* prealloc,
307  std::shared_ptr<ProcessConfiguration const> processConfiguration,
308  int bitpos,
309  std::string const& name,
310  TrigResPtr,
311  std::vector<std::string> const& endPathNames);
312  void fillEndPath(ParameterSet& proc_pset,
313  ProductRegistry& preg,
314  PreallocationConfiguration const* prealloc,
315  std::shared_ptr<ProcessConfiguration const> processConfiguration,
316  int bitpos,
317  std::string const& name,
318  std::vector<std::string> const& endPathNames);
319 
320  void addToAllWorkers(Worker* w);
321 
322  void resetEarlyDelete();
324  edm::ParameterSet const& opts,
325  edm::ProductRegistry const& preg,
326  bool allowEarlyDelete);
327 
330 
332  std::vector<edm::propagate_const<std::shared_ptr<PathStatusInserter>>>& pathStatusInserters,
333  std::vector<edm::propagate_const<std::shared_ptr<EndPathStatusInserter>>>& endPathStatusInserters,
335 
337  std::shared_ptr<ActivityRegistry> actReg_; // We do not use propagate_const because the registry itself is mutable.
338 
340 
342  std::vector<edm::propagate_const<WorkerPtr>> pathStatusInserterWorkers_;
343  std::vector<edm::propagate_const<WorkerPtr>> endPathStatusInserterWorkers_;
344 
347  std::vector<int> empty_trig_paths_;
348  std::vector<int> empty_end_paths_;
349 
350  //For each branch that has been marked for early deletion
351  // keep track of how many modules are left that read this data but have
352  // not yet been run in this event
353  std::vector<BranchToCount> earlyDeleteBranchToCount_;
354  //NOTE the following is effectively internal data for each EarlyDeleteHelper
355  // but putting it into one vector makes for better allocation as well as
356  // faster iteration when used to reset the earlyDeleteBranchToCount_
357  // Each EarlyDeleteHelper hold a begin and end range into this vector. The values
358  // of this vector correspond to indexes into earlyDeleteBranchToCount_ so
359  // tell which EarlyDeleteHelper is associated with which BranchIDs.
360  std::vector<unsigned int> earlyDeleteHelperToBranchIndicies_;
361  //There is one EarlyDeleteHelper per Module which are reading data that
362  // has been marked for early deletion
363  std::vector<EarlyDeleteHelper> earlyDeleteHelpers_;
364 
368 
371  volatile bool endpathsAreActive_;
372  std::atomic<bool> skippingEvent_;
373  };
374 
375  void inline StreamSchedule::reportSkipped(EventPrincipal const& ep) const {
376  Service<JobReport> reportSvc;
377  reportSvc->reportSkippedEvent(ep.id().run(), ep.id().event());
378  }
379 
380  template <typename T>
382  typename T::TransitionInfoType& transitionInfo,
383  ServiceToken const& token,
384  bool cleaningUpAfterException) {
385  auto const& principal = transitionInfo.principal();
386  T::setStreamContext(streamContext_, principal);
387 
388  auto id = principal.id();
389  ServiceWeakToken weakToken = token;
390  auto doneTask = make_waiting_task(
391  [this, iHolder, id, cleaningUpAfterException, weakToken](std::exception_ptr const* iPtr) mutable {
392  std::exception_ptr excpt;
393  if (iPtr) {
394  excpt = *iPtr;
395  //add context information to the exception and print message
396  try {
397  convertException::wrap([&]() { std::rethrow_exception(excpt); });
398  } catch (cms::Exception& ex) {
399  //TODO: should add the transition type info
400  std::ostringstream ost;
401  if (ex.context().empty()) {
402  ost << "Processing " << T::transitionName() << " " << id;
403  }
404  ServiceRegistry::Operate op(weakToken.lock());
405  addContextAndPrintException(ost.str().c_str(), ex, cleaningUpAfterException);
406  excpt = std::current_exception();
407  }
408 
409  ServiceRegistry::Operate op(weakToken.lock());
410  actReg_->preStreamEarlyTerminationSignal_(streamContext_, TerminationOrigin::ExceptionFromThisContext);
411  }
412  // Caught exception is propagated via WaitingTaskHolder
413  CMS_SA_ALLOW try {
414  ServiceRegistry::Operate op(weakToken.lock());
415  T::postScheduleSignal(actReg_.get(), &streamContext_);
416  } catch (...) {
417  if (not excpt) {
418  excpt = std::current_exception();
419  }
420  }
421  iHolder.doneWaiting(excpt);
422  });
423 
424  auto task = make_functor_task(
425  [this, h = WaitingTaskHolder(*iHolder.group(), doneTask), info = transitionInfo, weakToken]() mutable {
426  auto token = weakToken.lock();
428  // Caught exception is propagated via WaitingTaskHolder
429  CMS_SA_ALLOW try {
430  T::preScheduleSignal(actReg_.get(), &streamContext_);
431 
433  } catch (...) {
434  h.doneWaiting(std::current_exception());
435  return;
436  }
437 
438  for (auto& p : end_paths_) {
439  p.runAllModulesAsync<T>(h, info, token, streamID_, &streamContext_);
440  }
441 
442  for (auto& p : trig_paths_) {
443  p.runAllModulesAsync<T>(h, info, token, streamID_, &streamContext_);
444  }
445 
447  });
448 
449  if (streamID_.value() == 0) {
450  //Enqueueing will start another thread if there is only
451  // one thread in the job. Having stream == 0 use spawn
452  // avoids starting up another thread when there is only one stream.
453  iHolder.group()->run([task]() {
454  TaskSentry s{task};
455  task->execute();
456  });
457  } else {
458  tbb::task_arena arena{tbb::task_arena::attach()};
459  arena.enqueue([task]() {
460  TaskSentry s{task};
461  task->execute();
462  });
463  }
464  }
465 } // namespace edm
466 
467 #endif
edm::StreamSchedule::fillEndPath
void fillEndPath(ParameterSet &proc_pset, ProductRegistry &preg, PreallocationConfiguration const *prealloc, std::shared_ptr< ProcessConfiguration const > processConfiguration, int bitpos, std::string const &name, std::vector< std::string > const &endPathNames)
Definition: StreamSchedule.cc:501
edm::EventTransitionInfo
Definition: TransitionInfoTypes.h:26
edm::StreamSchedule::addToAllWorkers
void addToAllWorkers(Worker *w)
Definition: StreamSchedule.cc:904
edm::StreamID
Definition: StreamID.h:30
WorkerManager.h
service
Definition: service.py:1
edm::TerminationOrigin::ExceptionFromThisContext
edm::StreamSchedule::endPathStatusInserterWorkers_
std::vector< edm::propagate_const< WorkerPtr > > endPathStatusInserterWorkers_
Definition: StreamSchedule.h:343
edm::StreamSchedule::empty_end_paths_
std::vector< int > empty_end_paths_
Definition: StreamSchedule.h:348
edm::StreamSchedule::clearCounters
void clearCounters()
Clear all the counters in the trigger report.
Definition: StreamSchedule.cc:891
edm::StreamSchedule::getTriggerReport
void getTriggerReport(TriggerReport &rep) const
Definition: StreamSchedule.cc:881
MessageLogger.h
funct::false
false
Definition: Factorize.h:29
edm::StreamSchedule::beginStream
void beginStream()
Definition: StreamSchedule.cc:530
edm::StreamSchedule::results
TrigResConstPtr results() const
Definition: StreamSchedule.h:328
edm::StreamSchedule::makePathStatusInserters
void makePathStatusInserters(std::vector< edm::propagate_const< std::shared_ptr< PathStatusInserter >>> &pathStatusInserters, std::vector< edm::propagate_const< std::shared_ptr< EndPathStatusInserter >>> &endPathStatusInserters, ExceptionToActionTable const &actions)
Definition: StreamSchedule.cc:920
edm::StreamSchedule::results
TrigResPtr & results()
Definition: StreamSchedule.h:329
edm::ServiceWeakToken
Definition: ServiceToken.h:86
EDProducer.h
BranchType.h
ActivityRegistry
propagate_const.h
Path.h
WaitingTaskHolder.h
edm::StreamSchedule::fillWorkers
void fillWorkers(ParameterSet &proc_pset, ProductRegistry &preg, PreallocationConfiguration const *prealloc, std::shared_ptr< ProcessConfiguration const > processConfiguration, std::string const &name, bool ignoreFilters, PathWorkers &out, std::vector< std::string > const &endPathNames)
Definition: StreamSchedule.cc:400
edm::WorkerManager::resetAll
void resetAll()
Definition: WorkerManager.cc:131
edm::StreamSchedule::workerManager_
WorkerManager workerManager_
Definition: StreamSchedule.h:336
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::ProcessContext
Definition: ProcessContext.h:27
edm::StreamSchedule::streamContext_
StreamContext streamContext_
Definition: StreamSchedule.h:370
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
h
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
Definition: L1TUtmAlgorithmRcd.h:4
edm::StreamSchedule::earlyDeleteBranchToCount_
std::vector< BranchToCount > earlyDeleteBranchToCount_
Definition: StreamSchedule.h:353
UnscheduledCallProducer.h
edm::StreamSchedule::total_events_
int total_events_
Definition: StreamSchedule.h:365
edm::StreamSchedule::SendTerminationSignalIfException::completedSuccessfully
void completedSuccessfully()
Definition: StreamSchedule.h:278
HLTGlobalStatus.h
FunctorTask.h
edm::StreamSchedule::PathWorkers
std::vector< WorkerInPath > PathWorkers
Definition: StreamSchedule.h:164
Algorithms.h
edm::StreamSchedule::totalEventsPassed
int totalEventsPassed() const
Definition: StreamSchedule.h:230
edm::StreamSchedule::TrigResConstPtr
std::shared_ptr< HLTGlobalStatus const > TrigResConstPtr
Definition: StreamSchedule.h:158
edm::StreamSchedule::StreamSchedule
StreamSchedule(std::shared_ptr< TriggerResultInserter > inserter, std::vector< edm::propagate_const< std::shared_ptr< PathStatusInserter >>> &pathStatusInserters, std::vector< edm::propagate_const< std::shared_ptr< EndPathStatusInserter >>> &endPathStatusInserters, std::shared_ptr< ModuleRegistry >, ParameterSet &proc_pset, service::TriggerNamesService const &tns, PreallocationConfiguration const &prealloc, ProductRegistry &pregistry, BranchIDListHelper &branchIDListHelper, ExceptionToActionTable const &actions, std::shared_ptr< ActivityRegistry > areg, std::shared_ptr< ProcessConfiguration > processConfiguration, bool allowEarlyDelete, StreamID streamID, ProcessContext const *processContext)
Definition: StreamSchedule.cc:138
UnscheduledCallProducer
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
edm::StreamSchedule::allWorkers
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: StreamSchedule.h:258
edm::WorkerManager::actionTable
ExceptionToActionTable const & actionTable() const
Definition: WorkerManager.h:86
edm::maker::ModuleHolder
Definition: ModuleHolder.h:37
edm::StreamID::value
unsigned int value() const
Definition: StreamID.h:43
edm::get_underlying_safe
constexpr std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
Definition: get_underlying_safe.h:41
edm::StreamSchedule::WorkerPtr
std::shared_ptr< Worker > WorkerPtr
Definition: StreamSchedule.h:159
edm::WaitingTaskHolder::doneWaiting
void doneWaiting(std::exception_ptr iExcept)
Definition: WaitingTaskHolder.h:93
edm::TaskSentry
Definition: TaskBase.h:50
CMS_SA_ALLOW
#define CMS_SA_ALLOW
Definition: thread_safety_macros.h:5
edm::StreamSchedule::vstring
std::vector< std::string > vstring
Definition: StreamSchedule.h:154
edm::StreamSchedule::results_inserter_
edm::propagate_const< WorkerPtr > results_inserter_
Definition: StreamSchedule.h:341
edm::ProductRegistry
Definition: ProductRegistry.h:37
ModuleDescription.h
edm::make_functor_task
FunctorTask< F > * make_functor_task(F f)
Definition: FunctorTask.h:44
edm::ServiceToken
Definition: ServiceToken.h:42
alignCSCRings.s
s
Definition: alignCSCRings.py:92
edm::propagate_const
Definition: propagate_const.h:32
edm::StreamSchedule::number_of_unscheduled_modules_
unsigned int number_of_unscheduled_modules_
Definition: StreamSchedule.h:367
edm::EventPrincipal
Definition: EventPrincipal.h:46
edm::StreamContext
Definition: StreamContext.h:31
edm::StreamSchedule::totalEvents
int totalEvents() const
Definition: StreamSchedule.h:226
edm::StreamSchedule::moduleDescriptionsInEndPath
void moduleDescriptionsInEndPath(std::string const &iEndPathLabel, std::vector< ModuleDescription const * > &descriptions, unsigned int hint) const
Definition: StreamSchedule.cc:806
EarlyDeleteHelper.h
edm::StreamSchedule::processOneEventAsync
void processOneEventAsync(WaitingTaskHolder iTask, EventTransitionInfo &, ServiceToken const &token, std::vector< edm::propagate_const< std::shared_ptr< PathStatusInserter >>> &pathStatusInserters)
Definition: StreamSchedule.cc:563
edm::StreamSchedule::endPathsEnabled
bool endPathsEnabled() const
Definition: StreamSchedule.cc:837
EventPrincipal.h
Service.h
w
const double w
Definition: UKUtility.cc:23
edm::convertException::wrap
auto wrap(F iFunc) -> decltype(iFunc())
Definition: ConvertException.h:19
edm::StreamSchedule::context
StreamContext const & context() const
Definition: StreamSchedule.h:262
TrackValidation_cff.task
task
Definition: TrackValidation_cff.py:252
edm::ActivityRegistry
Definition: ActivityRegistry.h:134
edm::WorkerManager::allWorkers
AllWorkers const & allWorkers() const
Definition: WorkerManager.h:82
edm::StreamSchedule::enableEndPaths
void enableEndPaths(bool active)
Definition: StreamSchedule.cc:835
WaitingTaskHolder
edm::StreamSchedule::replaceModule
void replaceModule(maker::ModuleHolder *iMod, std::string const &iLabel)
clone the type of module with label iLabel but configure with iPSet.
Definition: StreamSchedule.cc:534
edm::StreamSchedule::actionTable
ExceptionToActionTable const & actionTable() const
returns the action table
Definition: StreamSchedule.h:286
h
ConvertException.h
edm::Worker
Definition: Worker.h:90
edm::StreamSchedule::results_
edm::propagate_const< TrigResPtr > results_
Definition: StreamSchedule.h:339
edm::StreamSchedule::empty_trig_paths_
std::vector< int > empty_trig_paths_
Definition: StreamSchedule.h:347
edm::StreamSchedule::initializeEarlyDelete
void initializeEarlyDelete(ModuleRegistry &modReg, edm::ParameterSet const &opts, edm::ProductRegistry const &preg, bool allowEarlyDelete)
Definition: StreamSchedule.cc:244
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::StreamSchedule::moduleDescriptionsInPath
void moduleDescriptionsInPath(std::string const &iPathLabel, std::vector< ModuleDescription const * > &descriptions, unsigned int hint) const
Definition: StreamSchedule.cc:777
edm::ParameterSet
Definition: ParameterSet.h:47
a
double a
Definition: hdecay.h:119
cms::Exception::context
std::list< std::string > const & context() const
Definition: Exception.cc:147
edm::make_waiting_task
FunctorWaitingTask< F > * make_waiting_task(F f)
Definition: WaitingTask.h:101
edm::WaitingTaskHolder
Definition: WaitingTaskHolder.h:32
edm::StreamSchedule::skippingEvent_
std::atomic< bool > skippingEvent_
Definition: StreamSchedule.h:372
edm::StreamSchedule::actReg_
std::shared_ptr< ActivityRegistry > actReg_
Definition: StreamSchedule.h:337
ExceptionMessages.h
thread_safety_macros.h
edm::BranchIDListHelper
Definition: BranchIDListHelper.h:15
edm::Service
Definition: Service.h:30
edm::addContextAndPrintException
void addContextAndPrintException(char const *context, cms::Exception &ex, bool disablePrint)
Definition: ExceptionHelpers.cc:11
edm::StreamSchedule::fillTrigPath
void fillTrigPath(ParameterSet &proc_pset, ProductRegistry &preg, PreallocationConfiguration const *prealloc, std::shared_ptr< ProcessConfiguration const > processConfiguration, int bitpos, std::string const &name, TrigResPtr, std::vector< std::string > const &endPathNames)
Definition: StreamSchedule.cc:471
cuy.rep
rep
Definition: cuy.py:1190
edm::StreamSchedule::end_paths_
TrigPaths end_paths_
Definition: StreamSchedule.h:346
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
ExceptionActions.h
edm::StreamSchedule::Workers
std::vector< Worker * > Workers
Definition: StreamSchedule.h:162
edm::ServiceWeakToken::lock
ServiceToken lock() const
Definition: ServiceToken.h:101
edm::ExceptionToActionTable
Definition: ExceptionActions.h:16
edm::TriggerReport
Definition: TriggerReport.h:56
edm::StreamSchedule::streamID_
StreamID streamID_
Definition: StreamSchedule.h:369
edm::StreamSchedule::processOneStreamAsync
void processOneStreamAsync(WaitingTaskHolder iTask, typename T::TransitionInfoType &transitionInfo, ServiceToken const &token, bool cleaningUpAfterException=false)
Definition: StreamSchedule.h:381
edm::StreamSchedule::NonTrigPaths
std::vector< Path > NonTrigPaths
Definition: StreamSchedule.h:156
edm::StreamSchedule::getAllModuleDescriptions
std::vector< ModuleDescription const * > getAllModuleDescriptions() const
Definition: StreamSchedule.cc:552
edm::service::TriggerNamesService
Definition: TriggerNamesService.h:42
OccurrenceTraits.h
edm::PreallocationConfiguration
Definition: PreallocationConfiguration.h:27
edm::StreamSchedule::TrigPaths
std::vector< Path > TrigPaths
Definition: StreamSchedule.h:155
edm::StreamSchedule::resetAll
void resetAll()
Definition: StreamSchedule.cc:899
edm::StreamSchedule::finishedPaths
void finishedPaths(std::atomic< std::exception_ptr * > &, WaitingTaskHolder, EventTransitionInfo &)
Definition: StreamSchedule.cc:666
edm::StreamSchedule::earlyDeleteHelpers_
std::vector< EarlyDeleteHelper > earlyDeleteHelpers_
Definition: StreamSchedule.h:363
edm::ModuleRegistry
Definition: ModuleRegistry.h:40
edm::StreamSchedule::TrigResPtr
std::shared_ptr< HLTGlobalStatus > TrigResPtr
Definition: StreamSchedule.h:157
ExceptionHelpers.h
edm::StreamSchedule::numberOfUnscheduledModules
unsigned int numberOfUnscheduledModules() const
Definition: StreamSchedule.h:260
Frameworkfwd.h
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
T
long double T
Definition: Basic3DVectorLD.h:48
edm::StreamSchedule::AllWorkers
std::vector< Worker * > AllWorkers
Definition: StreamSchedule.h:160
Worker.h
edm::StreamSchedule::trig_paths_
TrigPaths trig_paths_
Definition: StreamSchedule.h:345
WorkerRegistry.h
edm::StreamSchedule::resetEarlyDelete
void resetEarlyDelete()
Definition: StreamSchedule.cc:906
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
edm::StreamSchedule::SendTerminationSignalIfException
Definition: StreamSchedule.h:269
Exception.h
edm::StreamSchedule::endStream
void endStream()
Definition: StreamSchedule.cc:532
edm::StreamSchedule::SendTerminationSignalIfException::context_
StreamContext const * context_
Definition: StreamSchedule.h:282
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
edm::WorkerManager::processOneOccurrenceAsync
void processOneOccurrenceAsync(WaitingTaskHolder, typename T::TransitionInfoType &, ServiceToken const &, StreamID, typename T::Context const *topContext, U const *context)
Definition: WorkerManager.h:105
actions
roAction_t actions[nactions]
Definition: GenABIO.cc:181
cms::Exception
Definition: Exception.h:70
TransitionInfoTypes.h
edm::StreamSchedule::streamID
StreamID streamID() const
Definition: StreamSchedule.h:199
JobReport.h
edm::ActivityRegistry::preStreamEarlyTerminationSignal_
PreStreamEarlyTermination preStreamEarlyTerminationSignal_
Definition: ActivityRegistry.h:482
StreamContext.h
edm::StreamSchedule
Definition: StreamSchedule.h:152
edm::StreamSchedule::pathStatusInserterWorkers_
std::vector< edm::propagate_const< WorkerPtr > > pathStatusInserterWorkers_
Definition: StreamSchedule.h:342
edm::StreamSchedule::availablePaths
void availablePaths(std::vector< std::string > &oLabelsToFill) const
adds to oLabelsToFill the labels for all paths in the process
Definition: StreamSchedule.cc:756
edm::StreamSchedule::earlyDeleteHelperToBranchIndicies_
std::vector< unsigned int > earlyDeleteHelperToBranchIndicies_
Definition: StreamSchedule.h:360
get_underlying_safe.h
edm::StreamSchedule::SendTerminationSignalIfException::reg_
edm::ActivityRegistry * reg_
Definition: StreamSchedule.h:281
edm::StreamSchedule::finishProcessOneEvent
std::exception_ptr finishProcessOneEvent(std::exception_ptr)
Definition: StreamSchedule.cc:724
StreamID.h
edm::ServiceRegistry::Operate
Definition: ServiceRegistry.h:40
edm::StreamSchedule::totalEventsFailed
int totalEventsFailed() const
Definition: StreamSchedule.h:234
edm::WorkerManager
Definition: WorkerManager.h:35
edm::StreamSchedule::modulesInPath
void modulesInPath(std::string const &iPathLabel, std::vector< std::string > &oLabelsToFill) const
adds to oLabelsToFill in execution order the labels of all modules in path iPathLabel
Definition: StreamSchedule.cc:764
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
edm::StreamSchedule::SendTerminationSignalIfException::~SendTerminationSignalIfException
~SendTerminationSignalIfException()
Definition: StreamSchedule.h:273
edm::StreamSchedule::endpathsAreActive_
volatile bool endpathsAreActive_
Definition: StreamSchedule.h:371
edm::WaitingTaskHolder::group
tbb::task_group * group() const noexcept
Definition: WaitingTaskHolder.h:77
geometryDiff.opts
opts
Definition: geometryDiff.py:11
edm::StreamSchedule::total_passed_
int total_passed_
Definition: StreamSchedule.h:366
edm::StreamSchedule::reportSkipped
void reportSkipped(EventPrincipal const &ep) const
Definition: StreamSchedule.h:375
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316
edm::StreamSchedule::SendTerminationSignalIfException::SendTerminationSignalIfException
SendTerminationSignalIfException(edm::ActivityRegistry *iReg, edm::StreamContext const *iContext)
Definition: StreamSchedule.h:271
edm::StreamSchedule::deleteModule
void deleteModule(std::string const &iLabel)
Delete the module with label iLabel.
Definition: StreamSchedule.cc:550