CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ProductResolvers.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_ProductResolvers_h
2 #define FWCore_Framework_ProductResolvers_h
3 
4 /*----------------------------------------------------------------------
5 
6 ProductResolver: A collection of information related to a single WrapperBase or
7 a set of related EDProducts. This is the storage unit of such information.
8 
9 ----------------------------------------------------------------------*/
23 
24 #include <memory>
25 #include <atomic>
26 
27 #include <string>
28 
29 namespace edm {
30  class MergeableRunProductMetadata;
31  class ProductProvenanceRetriever;
32  class DelayedReader;
33  class ModuleCallingContext;
35  class Principal;
37  class Worker;
38  class ServiceToken;
39 
41  public:
43 
44  // Give AliasProductResolver and SwitchBaseProductResolver access by moving this method to public
45  void resetProductData_(bool deleteEarly) override = 0;
46  virtual ProductData const& getProductData() const = 0;
47  };
48 
50  public:
52 
53  DataManagingProductResolver(std::shared_ptr<BranchDescription const> bd, ProductStatus iDefaultStatus)
56  theStatus_(iDefaultStatus),
57  defaultStatus_(iDefaultStatus) {}
58 
59  void connectTo(ProductResolverBase const&, Principal const*) final;
60 
62 
63  void resetProductData_(bool deleteEarly) override;
64 
65  protected:
66  void setProduct(std::unique_ptr<WrapperBase> edp) const;
67  void setProduct(std::shared_ptr<WrapperBase> edp) const;
68  ProductStatus status() const { return theStatus_; }
71  //Handle the boilerplate code needed for resolveProduct_
72  template <bool callResolver, typename FUNC>
73  Resolution resolveProductImpl(FUNC resolver) const;
74  ProductData const& getProductData() const final { return productData_; }
76 
77  void checkType(WrapperBase const& prod) const;
78 
79  private:
80  void throwProductDeletedException() const;
81  virtual bool isFromCurrentProcess() const = 0;
82 
83  bool productUnavailable_() const final;
84  bool productResolved_() const final;
85  bool productWasDeleted_() const final;
86  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final;
87 
89  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) final {
91  }
92  Provenance const* provenance_() const final { return &productData_.provenance(); }
93 
94  std::string const& resolvedModuleLabel_() const final { return moduleLabel(); }
95  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) final;
96  void setProductID_(ProductID const& pid) final;
98  bool singleProduct_() const final;
99 
101  mutable std::atomic<ProductStatus> theStatus_;
103  };
104 
106  public:
107  MergeableInputProductResolver(std::shared_ptr<BranchDescription const> bd, ProductStatus iDefaultStatus)
108  : DataManagingProductResolver(bd, iDefaultStatus) {}
109 
110  protected:
111  void setOrMergeProduct(std::shared_ptr<WrapperBase> prod,
112  MergeableRunProductMetadata const* mergeableRunProductMetadata) const;
113 
114  // merges the product with the pre-existing product
115  void mergeProduct(std::shared_ptr<WrapperBase> edp, MergeableRunProductMetadata const*) const;
116  };
117 
119  public:
120  explicit DelayedReaderInputProductResolver(std::shared_ptr<BranchDescription const> bd)
121  : MergeableInputProductResolver(bd, ProductStatus::ResolveNotRun), m_prefetchRequested{false}, aux_{nullptr} {
122  assert(bd->onDemand());
123  assert(not bd->produced());
124  }
125 
126  void setupUnscheduled(UnscheduledConfigurator const&) final;
127 
128  private:
129  bool isFromCurrentProcess() const final;
130 
131  Resolution resolveProduct_(Principal const& principal,
132  bool skipCurrentProcess,
134  ModuleCallingContext const* mcc) const override;
135  void prefetchAsync_(WaitingTaskHolder waitTask,
136  Principal const& principal,
137  bool skipCurrentProcess,
140  ModuleCallingContext const* mcc) const override;
141 
142  void retrieveAndMerge_(Principal const& principal,
143  MergeableRunProductMetadata const* mergeableRunProductMetadata) const override;
144 
145  void setMergeableRunProductMetadata_(MergeableRunProductMetadata const*) override;
146 
147  bool unscheduledWasNotRun_() const final { return false; }
148 
149  void resetProductData_(bool deleteEarly) override;
150 
151  mutable std::atomic<bool> m_prefetchRequested;
153  UnscheduledAuxiliary const* aux_; //provides access to the delayedGet signals
154  };
155 
157  public ProductPutterBase,
158  public ProductPutOrMergerBase {
159  public:
160  PutOnReadInputProductResolver(std::shared_ptr<BranchDescription const> bd)
161  : MergeableInputProductResolver(bd, ProductStatus::ResolveNotRun) {
162  assert(not bd->produced());
163  assert(not bd->onDemand());
164  }
165 
166  protected:
167  void putProduct(std::unique_ptr<WrapperBase> edp) const override;
168  void putOrMergeProduct(std::unique_ptr<WrapperBase> prod) const override;
169 
170  Resolution resolveProduct_(Principal const& principal,
171  bool skipCurrentProcess,
173  ModuleCallingContext const* mcc) const final;
174  void prefetchAsync_(WaitingTaskHolder waitTask,
175  Principal const& principal,
176  bool skipCurrentProcess,
177  ServiceToken const& token,
179  ModuleCallingContext const* mcc) const final;
180  bool unscheduledWasNotRun_() const final { return false; }
181 
182  private:
183  bool isFromCurrentProcess() const final;
184  };
185 
187  public:
188  ProducedProductResolver(std::shared_ptr<BranchDescription const> bd, ProductStatus iDefaultStatus)
189  : DataManagingProductResolver(bd, iDefaultStatus) {
190  assert(bd->produced());
191  }
192 
193  protected:
194  void putProduct(std::unique_ptr<WrapperBase> edp) const override;
195 
196  private:
197  bool isFromCurrentProcess() const final;
198  };
199 
201  public:
202  explicit PuttableProductResolver(std::shared_ptr<BranchDescription const> bd)
203  : ProducedProductResolver(bd, ProductStatus::NotPut), worker_(nullptr), prefetchRequested_(false) {}
204 
205  void setupUnscheduled(UnscheduledConfigurator const&) final;
206 
207  private:
208  Resolution resolveProduct_(Principal const& principal,
209  bool skipCurrentProcess,
211  ModuleCallingContext const* mcc) const override;
212  void prefetchAsync_(WaitingTaskHolder waitTask,
213  Principal const& principal,
214  bool skipCurrentProcess,
215  ServiceToken const& token,
217  ModuleCallingContext const* mcc) const override;
218  bool unscheduledWasNotRun_() const override { return false; }
219 
220  void putProduct(std::unique_ptr<WrapperBase> edp) const override;
221  void resetProductData_(bool deleteEarly) override;
222 
225  mutable std::atomic<bool> prefetchRequested_;
226  };
227 
229  public:
230  explicit UnscheduledProductResolver(std::shared_ptr<BranchDescription const> bd)
231  : ProducedProductResolver(bd, ProductStatus::ResolveNotRun) {}
232 
233  void setupUnscheduled(UnscheduledConfigurator const&) final;
234 
235  private:
236  Resolution resolveProduct_(Principal const& principal,
237  bool skipCurrentProcess,
239  ModuleCallingContext const* mcc) const override;
240  void prefetchAsync_(WaitingTaskHolder waitTask,
241  Principal const& principal,
242  bool skipCurrentProcess,
243  ServiceToken const& token,
245  ModuleCallingContext const* mcc) const override;
246  bool unscheduledWasNotRun_() const override { return status() == ProductStatus::ResolveNotRun; }
247 
248  void resetProductData_(bool deleteEarly) override;
249 
251  UnscheduledAuxiliary const* aux_ = nullptr;
252  Worker* worker_ = nullptr;
253  mutable std::atomic<bool> prefetchRequested_ = false;
254  };
255 
257  public:
259  explicit AliasProductResolver(std::shared_ptr<BranchDescription const> bd,
261  : DataManagingOrAliasProductResolver(), realProduct_(realProduct), bd_(bd) {}
262 
263  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final {
264  realProduct_.connectTo(iOther, iParentPrincipal);
265  };
266 
267  private:
269  bool skipCurrentProcess,
271  ModuleCallingContext const* mcc) const override {
272  return realProduct_.resolveProduct(principal, skipCurrentProcess, sra, mcc);
273  }
275  Principal const& principal,
276  bool skipCurrentProcess,
277  ServiceToken const& token,
279  ModuleCallingContext const* mcc) const override {
280  realProduct_.prefetchAsync(waitTask, principal, skipCurrentProcess, token, sra, mcc);
281  }
282  bool unscheduledWasNotRun_() const override { return realProduct_.unscheduledWasNotRun(); }
283  bool productUnavailable_() const override { return realProduct_.productUnavailable(); }
284  bool productResolved_() const final { return realProduct_.productResolved(); }
285  bool productWasDeleted_() const override { return realProduct_.productWasDeleted(); }
286  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final {
287  return realProduct_.productWasFetchedAndIsValid(iSkipCurrentProcess);
288  }
289 
290  BranchDescription const& branchDescription_() const override { return *bd_; }
291  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override { bd_ = bd; }
292  Provenance const* provenance_() const final { return realProduct_.provenance(); }
293 
294  std::string const& resolvedModuleLabel_() const override { return realProduct_.moduleLabel(); }
295  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
296  void setProductID_(ProductID const& pid) override;
297  ProductProvenance const* productProvenancePtr_() const override;
298  void resetProductData_(bool deleteEarly) override;
299  ProductData const& getProductData() const final { return realProduct_.getProductData(); }
300  bool singleProduct_() const override;
301 
303  std::shared_ptr<BranchDescription const> bd_;
304  };
305 
306  // Switch is a mixture of DataManaging (for worker and provenance) and Alias (for product)
308  public:
310  SwitchBaseProductResolver(std::shared_ptr<BranchDescription const> bd,
312 
313  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final;
314  void setupUnscheduled(UnscheduledConfigurator const& iConfigure) final;
315 
316  protected:
318  WaitingTaskList& waitingTasks() const { return waitingTasks_; }
319  Worker* worker() const { return worker_; }
320  DataManagingOrAliasProductResolver const& realProduct() const { return realProduct_; }
321  std::atomic<bool>& prefetchRequested() const { return prefetchRequested_; }
322  void unsafe_setWrapperAndProvenance() const;
323  void resetProductData_(bool deleteEarly) override;
324 
325  private:
326  bool productResolved_() const final;
327  bool productWasDeleted_() const final { return realProduct_.productWasDeleted(); }
328  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final {
329  return realProduct_.productWasFetchedAndIsValid(iSkipCurrentProcess);
330  }
333  ;
334  }
335  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) final {
337  }
338  Provenance const* provenance_() const final { return &productData_.provenance(); }
339  std::string const& resolvedModuleLabel_() const final { return moduleLabel(); }
340  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) final;
341  void setProductID_(ProductID const& pid) final;
343  ProductData const& getProductData() const final { return productData_; }
344  bool singleProduct_() const final { return true; }
345 
346  // for "alias" view
348  // for "product" view
350  Worker* worker_ = nullptr;
352  mutable std::atomic<bool> prefetchRequested_;
353  // for provenance
355  };
356 
357  // For the case when SwitchProducer is on a Path
359  public:
360  SwitchProducerProductResolver(std::shared_ptr<BranchDescription const> bd,
362 
363  private:
364  Resolution resolveProduct_(Principal const& principal,
365  bool skipCurrentProcess,
367  ModuleCallingContext const* mcc) const final;
368  void prefetchAsync_(WaitingTaskHolder waitTask,
369  Principal const& principal,
370  bool skipCurrentProcess,
371  ServiceToken const& token,
373  ModuleCallingContext const* mcc) const final;
374  void putProduct(std::unique_ptr<WrapperBase> edp) const final;
375  bool unscheduledWasNotRun_() const final { return false; }
376  bool productUnavailable_() const final;
377  void resetProductData_(bool deleteEarly) final;
378 
379  constexpr static const ProductStatus defaultStatus_ = ProductStatus::NotPut;
380 
381  // for filter in a Path
382  // The variable is only modified or read at times where the
383  // framework has guaranteed synchronization between write and read
385  };
386 
387  // For the case when SwitchProducer is not on any Path
389  public:
390  SwitchAliasProductResolver(std::shared_ptr<BranchDescription const> bd,
392  : SwitchBaseProductResolver(std::move(bd), realProduct) {}
393 
394  private:
395  Resolution resolveProduct_(Principal const& principal,
396  bool skipCurrentProcess,
398  ModuleCallingContext const* mcc) const final;
399  void prefetchAsync_(WaitingTaskHolder waitTask,
400  Principal const& principal,
401  bool skipCurrentProcess,
402  ServiceToken const& token,
404  ModuleCallingContext const* mcc) const final;
405  bool unscheduledWasNotRun_() const final { return realProduct().unscheduledWasNotRun(); }
406  bool productUnavailable_() const final { return realProduct().productUnavailable(); }
407  };
408 
410  public:
412  explicit ParentProcessProductResolver(std::shared_ptr<BranchDescription const> bd)
413  : ProductResolverBase(), realProduct_(nullptr), bd_(bd), provRetriever_(nullptr), parentPrincipal_(nullptr) {}
414 
415  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final {
416  realProduct_ = &iOther;
417  parentPrincipal_ = iParentPrincipal;
418  };
419 
420  private:
422  bool skipCurrentProcess,
424  ModuleCallingContext const* mcc) const override {
425  skipCurrentProcess = false;
426  return realProduct_->resolveProduct(*parentPrincipal_, skipCurrentProcess, sra, mcc);
427  }
429  Principal const& principal,
430  bool skipCurrentProcess,
431  ServiceToken const& token,
433  ModuleCallingContext const* mcc) const override {
434  skipCurrentProcess = false;
435  realProduct_->prefetchAsync(waitTask, *parentPrincipal_, skipCurrentProcess, token, sra, mcc);
436  }
437  bool unscheduledWasNotRun_() const override {
438  if (realProduct_)
439  return realProduct_->unscheduledWasNotRun();
440  throwNullRealProduct();
441  return false;
442  }
443  bool productUnavailable_() const override { return realProduct_->productUnavailable(); }
444  bool productResolved_() const final { return realProduct_->productResolved(); }
445  bool productWasDeleted_() const override { return realProduct_->productWasDeleted(); }
446  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override {
447  iSkipCurrentProcess = false;
448  return realProduct_->productWasFetchedAndIsValid(iSkipCurrentProcess);
449  }
450 
451  BranchDescription const& branchDescription_() const override { return *bd_; }
452  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override { bd_ = bd; }
453  Provenance const* provenance_() const final { return realProduct_->provenance(); }
454  std::string const& resolvedModuleLabel_() const override { return realProduct_->moduleLabel(); }
455  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
456  void setProductID_(ProductID const& pid) override;
457  ProductProvenance const* productProvenancePtr_() const override;
458  void resetProductData_(bool deleteEarly) override;
459  bool singleProduct_() const override;
460  void throwNullRealProduct() const;
461 
463  std::shared_ptr<BranchDescription const> bd_;
466  };
467 
469  public:
471  NoProcessProductResolver(std::vector<ProductResolverIndex> const& matchingHolders,
472  std::vector<bool> const& ambiguous,
473  bool madeAtEnd);
474 
475  void connectTo(ProductResolverBase const& iOther, Principal const*) final;
476 
477  void tryPrefetchResolverAsync(unsigned int iProcessingIndex,
478  Principal const& principal,
479  bool skipCurrentProcess,
481  ModuleCallingContext const* mcc,
483  tbb::task_group*) const;
484 
485  bool dataValidFromResolver(unsigned int iProcessingIndex,
486  Principal const& principal,
487  bool iSkipCurrentProcess) const;
488 
489  void prefetchFailed(unsigned int iProcessingIndex,
490  Principal const& principal,
491  bool iSkipCurrentProcess,
492  std::exception_ptr iExceptPtr) const;
493 
494  private:
495  unsigned int unsetIndexValue() const;
496  Resolution resolveProduct_(Principal const& principal,
497  bool skipCurrentProcess,
499  ModuleCallingContext const* mcc) const override;
500  void prefetchAsync_(WaitingTaskHolder waitTask,
501  Principal const& principal,
502  bool skipCurrentProcess,
503  ServiceToken const& token,
505  ModuleCallingContext const* mcc) const override;
506  bool unscheduledWasNotRun_() const override;
507  bool productUnavailable_() const override;
508  bool productWasDeleted_() const override;
509  bool productResolved_() const final;
510  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override;
511 
513  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
514  Provenance const* provenance_() const override;
515 
516  std::string const& resolvedModuleLabel_() const override { return moduleLabel(); }
517  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
518  void setProductID_(ProductID const& pid) override;
519  ProductProvenance const* productProvenancePtr_() const override;
520  void resetProductData_(bool deleteEarly) override;
521  bool singleProduct_() const override;
522 
523  Resolution tryResolver(unsigned int index,
524  Principal const& principal,
525  bool skipCurrentProcess,
527  ModuleCallingContext const* mcc) const;
528 
529  void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const;
530 
531  std::vector<ProductResolverIndex> matchingHolders_;
532  std::vector<bool> ambiguous_;
535  mutable std::atomic<unsigned int> lastCheckIndex_;
536  mutable std::atomic<unsigned int> lastSkipCurrentCheckIndex_;
537  mutable std::atomic<bool> prefetchRequested_;
538  mutable std::atomic<bool> skippingPrefetchRequested_;
539  const bool madeAtEnd_;
540  };
541 
543  public:
546  : ProductResolverBase(), realResolverIndex_(iChoice) {}
547 
548  void connectTo(ProductResolverBase const& iOther, Principal const*) final;
549 
550  private:
551  Resolution resolveProduct_(Principal const& principal,
552  bool skipCurrentProcess,
554  ModuleCallingContext const* mcc) const override;
555  void prefetchAsync_(WaitingTaskHolder waitTask,
556  Principal const& principal,
557  bool skipCurrentProcess,
558  ServiceToken const& token,
560  ModuleCallingContext const* mcc) const override;
561  bool unscheduledWasNotRun_() const override;
562  bool productUnavailable_() const override;
563  bool productWasDeleted_() const override;
564  bool productResolved_() const final;
565  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override;
566 
568  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
569  Provenance const* provenance_() const override;
570 
571  std::string const& resolvedModuleLabel_() const override { return moduleLabel(); }
572  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
573  void setProductID_(ProductID const& pid) override;
574  ProductProvenance const* productProvenancePtr_() const override;
575  void resetProductData_(bool deleteEarly) override;
576  bool singleProduct_() const override;
577 
579  };
580 
581 } // namespace edm
582 
583 #endif
edm::SwitchAliasProductResolver::SwitchAliasProductResolver
SwitchAliasProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
Definition: ProductResolvers.h:390
edm::ProductResolverBase::provenance
Provenance const * provenance() const
Definition: ProductResolverBase.cc:31
edm::SharedResourcesAcquirer
Definition: SharedResourcesAcquirer.h:34
edm::DataManagingOrAliasProductResolver::DataManagingOrAliasProductResolver
DataManagingOrAliasProductResolver()
Definition: ProductResolvers.h:42
edm::DataManagingProductResolver::resolvedModuleLabel_
std::string const & resolvedModuleLabel_() const final
Definition: ProductResolvers.h:94
edm::DataManagingProductResolver::productWasFetchedAndIsValid_
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
Definition: ProductResolvers.cc:565
edm::ParentProcessProductResolver::ParentProcessProductResolver
ParentProcessProductResolver(std::shared_ptr< BranchDescription const > bd)
Definition: ProductResolvers.h:412
edm::ProducedProductResolver::ProducedProductResolver
ProducedProductResolver(std::shared_ptr< BranchDescription const > bd, ProductStatus iDefaultStatus)
Definition: ProductResolvers.h:188
edm::AliasProductResolver::resetBranchDescription_
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
Definition: ProductResolvers.h:291
ProductResolverBase.h
edm::ProductResolverIndex
unsigned int ProductResolverIndex
Definition: ProductResolverIndex.h:8
edm::DelayedReaderInputProductResolver
Definition: ProductResolvers.h:118
funct::false
false
Definition: Factorize.h:29
edm::DataManagingProductResolver::DataManagingProductResolver
DataManagingProductResolver(std::shared_ptr< BranchDescription const > bd, ProductStatus iDefaultStatus)
Definition: ProductResolvers.h:53
edm::AliasProductResolver::connectTo
void connectTo(ProductResolverBase const &iOther, Principal const *iParentPrincipal) final
Definition: ProductResolvers.h:263
edm::NoProcessProductResolver::matchingHolders_
std::vector< ProductResolverIndex > matchingHolders_
Definition: ProductResolvers.h:531
edm::ParentProcessProductResolver::bd_
std::shared_ptr< BranchDescription const > bd_
Definition: ProductResolvers.h:463
edm::SwitchBaseProductResolver::singleProduct_
bool singleProduct_() const final
Definition: ProductResolvers.h:344
bd
deep_tau::DeepTauBase::BasicDiscriminator bd
Definition: DeepTauId.cc:1082
WaitingTaskHolder.h
edm::ParentProcessProductResolver::productResolved_
bool productResolved_() const final
Definition: ProductResolvers.h:444
edm::NoProcessProductResolver::ambiguous_
std::vector< bool > ambiguous_
Definition: ProductResolvers.h:532
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::DataManagingOrAliasProductResolver
Definition: ProductResolvers.h:40
edm::SingleChoiceNoProcessProductResolver::ProductStatus
ProducedProductResolver::ProductStatus ProductStatus
Definition: ProductResolvers.h:544
deep_tau::DeepTauBase::BasicDiscriminator
BasicDiscriminator
Definition: DeepTauBase.h:115
edm::Provenance::productProvenance
ProductProvenance const * productProvenance() const
Definition: Provenance.cc:24
edm::NoProcessProductResolver::lastSkipCurrentCheckIndex_
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
Definition: ProductResolvers.h:536
edm::SwitchBaseProductResolver::waitingTasks_
WaitingTaskList waitingTasks_
Definition: ProductResolvers.h:351
ProductResolverIndex.h
BranchID.h
edm::PuttableProductResolver::PuttableProductResolver
PuttableProductResolver(std::shared_ptr< BranchDescription const > bd)
Definition: ProductResolvers.h:202
edm::DataManagingProductResolver::theStatus_
std::atomic< ProductStatus > theStatus_
Definition: ProductResolvers.h:101
edm::MergeableInputProductResolver::MergeableInputProductResolver
MergeableInputProductResolver(std::shared_ptr< BranchDescription const > bd, ProductStatus iDefaultStatus)
Definition: ProductResolvers.h:107
edm::SwitchBaseProductResolver::worker
Worker * worker() const
Definition: ProductResolvers.h:319
ProductPutOrMergerBase.h
cms::cuda::assert
assert(be >=bs)
TypeID.h
edm::PutOnReadInputProductResolver::PutOnReadInputProductResolver
PutOnReadInputProductResolver(std::shared_ptr< BranchDescription const > bd)
Definition: ProductResolvers.h:160
edm::Principal
Definition: Principal.h:56
edm::SwitchAliasProductResolver::unscheduledWasNotRun_
bool unscheduledWasNotRun_() const final
Definition: ProductResolvers.h:405
edm::ProductPutOrMergerBase
Definition: ProductPutOrMergerBase.h:17
edm::ProductResolverBase::prefetchAsync_
virtual void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const =0
edm::DataManagingProductResolver::setMergeableRunProductMetadataInProductData
void setMergeableRunProductMetadataInProductData(MergeableRunProductMetadata const *)
Definition: ProductResolvers.cc:583
edm::DataManagingProductResolver::ProductStatus::ProductDeleted
edm::ParentProcessProductResolver::provRetriever_
ProductProvenanceRetriever const * provRetriever_
Definition: ProductResolvers.h:464
edm::ParentProcessProductResolver::realProduct_
ProductResolverBase const * realProduct_
Definition: ProductResolvers.h:462
edm::NoProcessProductResolver::lastCheckIndex_
std::atomic< unsigned int > lastCheckIndex_
Definition: ProductResolvers.h:535
edm::ParentProcessProductResolver
Definition: ProductResolvers.h:409
watchdog.const
const
Definition: watchdog.py:83
edm::DataManagingProductResolver::defaultStatus_
const ProductStatus defaultStatus_
Definition: ProductResolvers.h:102
edm::DataManagingProductResolver::defaultStatus
ProductStatus defaultStatus() const
Definition: ProductResolvers.h:69
edm::SwitchBaseProductResolver::productWasFetchedAndIsValid_
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
Definition: ProductResolvers.h:328
edm::SwitchBaseProductResolver::waitingTasks
WaitingTaskList & waitingTasks() const
Definition: ProductResolvers.h:318
edm::SingleChoiceNoProcessProductResolver
Definition: ProductResolvers.h:542
edm::ProductData::provenance
Provenance const & provenance() const
Definition: ProductData.h:33
edm::AliasProductResolver::productWasFetchedAndIsValid_
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
Definition: ProductResolvers.h:286
edm::DataManagingProductResolver::ProductStatus::NotPut
edm::ProductResolverBase::productUnavailable
bool productUnavailable() const
Definition: ProductResolverBase.h:87
edm::DataManagingProductResolver::productData_
ProductData productData_
Definition: ProductResolvers.h:100
edm::AliasProductResolver::bd_
std::shared_ptr< BranchDescription const > bd_
Definition: ProductResolvers.h:303
edm::WaitingTaskList
Definition: WaitingTaskList.h:84
edm::NoProcessProductResolver::skippingPrefetchRequested_
std::atomic< bool > skippingPrefetchRequested_
Definition: ProductResolvers.h:538
edm::ServiceToken
Definition: ServiceToken.h:42
edm::ParentProcessProductResolver::productWasFetchedAndIsValid_
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override
Definition: ProductResolvers.h:446
edm::AliasProductResolver::productResolved_
bool productResolved_() const final
Definition: ProductResolvers.h:284
edm::AliasProductResolver::provenance_
Provenance const * provenance_() const final
Definition: ProductResolvers.h:292
edm::ProductData::resetBranchDescription
void resetBranchDescription(std::shared_ptr< BranchDescription const > bd)
Definition: ProductData.cc:20
edm::DataManagingProductResolver::setProduct
void setProduct(std::unique_ptr< WrapperBase > edp) const
Definition: ProductResolvers.cc:527
edm::ProductProvenance
Definition: ProductProvenance.h:24
edm::ParentProcessProductResolver::parentPrincipal_
Principal const * parentPrincipal_
Definition: ProductResolvers.h:465
edm::SwitchAliasProductResolver::productUnavailable_
bool productUnavailable_() const final
Definition: ProductResolvers.h:406
edm::AliasProductResolver::ProductStatus
ProducedProductResolver::ProductStatus ProductStatus
Definition: ProductResolvers.h:258
edm::ProductResolverBase::unscheduledWasNotRun
bool unscheduledWasNotRun() const
Definition: ProductResolverBase.h:97
edm::ProductResolverBase::unscheduledWasNotRun_
virtual bool unscheduledWasNotRun_() const =0
edm::DataManagingProductResolver::resolveProductImpl
Resolution resolveProductImpl(FUNC resolver) const
Provenance.h
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
edm::DataManagingProductResolver::productUnavailable_
bool productUnavailable_() const final
Definition: ProductResolvers.cc:549
edm::MergeableRunProductMetadata
Definition: MergeableRunProductMetadata.h:52
edm::PutOnReadInputProductResolver::unscheduledWasNotRun_
bool unscheduledWasNotRun_() const final
Definition: ProductResolvers.h:180
edm::SwitchBaseProductResolver::realProduct
DataManagingOrAliasProductResolver const & realProduct() const
Definition: ProductResolvers.h:320
WaitingTaskHolder
edm::Hash< ParentageType >
edm::UnscheduledProductResolver::waitingTasks_
WaitingTaskList waitingTasks_
Definition: ProductResolvers.h:250
edm::ParentProcessProductResolver::ProductStatus
ProducedProductResolver::ProductStatus ProductStatus
Definition: ProductResolvers.h:411
CMS_THREAD_SAFE
#define CMS_THREAD_SAFE
Definition: thread_safety_macros.h:4
edm::Worker
Definition: Worker.h:90
edm::DataManagingProductResolver::throwProductDeletedException
void throwProductDeletedException() const
Definition: ProductResolvers.cc:34
edm::DelayedReaderInputProductResolver::m_prefetchRequested
std::atomic< bool > m_prefetchRequested
Definition: ProductResolvers.h:151
edm::SingleChoiceNoProcessProductResolver::realResolverIndex_
ProductResolverIndex realResolverIndex_
Definition: ProductResolvers.h:578
edm::ProducedProductResolver
Definition: ProductResolvers.h:186
ProductPutterBase.h
edm::DataManagingOrAliasProductResolver::getProductData
virtual ProductData const & getProductData() const =0
edm::AliasProductResolver::resolveProduct_
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
Definition: ProductResolvers.h:268
edm::DataManagingProductResolver::setProductProvenanceRetriever_
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) final
Definition: ProductResolvers.cc:577
WrapperBase.h
edm::AliasProductResolver::unscheduledWasNotRun_
bool unscheduledWasNotRun_() const override
Definition: ProductResolvers.h:282
SharedResourcesAcquirer
edm::SwitchBaseProductResolver::realProduct_
DataManagingOrAliasProductResolver & realProduct_
Definition: ProductResolvers.h:347
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ProductPutterBase
Definition: ProductPutterBase.h:16
edm::PuttableProductResolver::unscheduledWasNotRun_
bool unscheduledWasNotRun_() const override
Definition: ProductResolvers.h:218
edm::DelayedReaderInputProductResolver::m_waitingTasks
WaitingTaskList m_waitingTasks
Definition: ProductResolvers.h:152
edm::AliasProductResolver::branchDescription_
BranchDescription const & branchDescription_() const override
Definition: ProductResolvers.h:290
edm::ProductResolverBase::setMergeableRunProductMetadata_
virtual void setMergeableRunProductMetadata_(MergeableRunProductMetadata const *)
Definition: ProductResolverBase.cc:35
edm::DataManagingProductResolver::provenance_
Provenance const * provenance_() const final
Definition: ProductResolvers.h:92
Resolution
Definition: trackSplitPlot.h:33
BranchDescription.h
edm::SwitchBaseProductResolver::prefetchRequested_
std::atomic< bool > prefetchRequested_
Definition: ProductResolvers.h:352
edm::SwitchAliasProductResolver
Definition: ProductResolvers.h:388
edm::DataManagingProductResolver::ProductStatus
ProductStatus
Definition: ProductResolvers.h:51
edm::SwitchBaseProductResolver::productData_
ProductData productData_
Definition: ProductResolvers.h:349
edm::WaitingTaskHolder
Definition: WaitingTaskHolder.h:32
edm::UnscheduledProductResolver
Definition: ProductResolvers.h:228
edm::DataManagingProductResolver
Definition: ProductResolvers.h:49
UnscheduledAuxiliary
edm::UnscheduledProductResolver::unscheduledWasNotRun_
bool unscheduledWasNotRun_() const override
Definition: ProductResolvers.h:246
thread_safety_macros.h
edm::ParentProcessProductResolver::connectTo
void connectTo(ProductResolverBase const &iOther, Principal const *iParentPrincipal) final
Definition: ProductResolvers.h:415
edm::DataManagingProductResolver::ProductStatus::ProductSet
edm::PuttableProductResolver::prefetchRequested_
std::atomic< bool > prefetchRequested_
Definition: ProductResolvers.h:225
edm::SwitchProducerProductResolver
Definition: ProductResolvers.h:358
edm::SwitchProducerProductResolver::unscheduledWasNotRun_
bool unscheduledWasNotRun_() const final
Definition: ProductResolvers.h:375
edm::SingleChoiceNoProcessProductResolver::SingleChoiceNoProcessProductResolver
SingleChoiceNoProcessProductResolver(ProductResolverIndex iChoice)
Definition: ProductResolvers.h:545
edm::DataManagingProductResolver::setProductID_
void setProductID_(ProductID const &pid) final
Definition: ProductResolvers.cc:581
edm::DataManagingOrAliasProductResolver::resetProductData_
void resetProductData_(bool deleteEarly) override=0
edm::NoProcessProductResolver::ProductStatus
ProducedProductResolver::ProductStatus ProductStatus
Definition: ProductResolvers.h:470
edm::ParentProcessProductResolver::resetBranchDescription_
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
Definition: ProductResolvers.h:452
edm::DataManagingProductResolver::ProductStatus::ResolveNotRun
ProductData.h
edm::WrapperBase
Definition: WrapperBase.h:23
edm::ParentProcessProductResolver::resolveProduct_
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
Definition: ProductResolvers.h:421
edm::AliasProductResolver::productWasDeleted_
bool productWasDeleted_() const override
Definition: ProductResolvers.h:285
edm::PuttableProductResolver::m_waitingTasks
WaitingTaskList m_waitingTasks
Definition: ProductResolvers.h:223
edm::UnscheduledConfigurator
Definition: UnscheduledConfigurator.h:32
edm::PutOnReadInputProductResolver
Definition: ProductResolvers.h:156
edm::NoProcessProductResolver::madeAtEnd_
const bool madeAtEnd_
Definition: ProductResolvers.h:539
edm::UnscheduledAuxiliary
Definition: UnscheduledAuxiliary.h:33
ServiceToken
edm::ParentProcessProductResolver::productUnavailable_
bool productUnavailable_() const override
Definition: ProductResolvers.h:443
edm::NoProcessProductResolver::waitingTasks_
WaitingTaskList waitingTasks_
Definition: ProductResolvers.h:533
edm::SwitchBaseProductResolver::resolvedModuleLabel_
std::string const & resolvedModuleLabel_() const final
Definition: ProductResolvers.h:339
edm::ProductResolverBase::moduleLabel
std::string const & moduleLabel() const
Definition: ProductResolverBase.h:119
edm::DataManagingProductResolver::resetProductData_
void resetProductData_(bool deleteEarly) override
Definition: ProductResolvers.cc:592
edm::ProductResolverBase::retrieveAndMerge_
virtual void retrieveAndMerge_(Principal const &principal, MergeableRunProductMetadata const *mergeableRunProductMetadata) const
Definition: ProductResolverBase.cc:33
edm::DataManagingProductResolver::singleProduct_
bool singleProduct_() const final
Definition: ProductResolvers.cc:603
edm::PuttableProductResolver
Definition: ProductResolvers.h:200
edm::AliasProductResolver::productUnavailable_
bool productUnavailable_() const override
Definition: ProductResolvers.h:283
edm::AliasProductResolver
Definition: ProductResolvers.h:256
edm::DataManagingProductResolver::branchDescription_
BranchDescription const & branchDescription_() const final
Definition: ProductResolvers.h:88
edm::ProductProvenanceRetriever
Definition: ProductProvenanceRetriever.h:56
edm::DataManagingProductResolver::checkType
void checkType(WrapperBase const &prod) const
Definition: ProductResolvers.cc:515
edm::DataManagingProductResolver::status
ProductStatus status() const
Definition: ProductResolvers.h:68
edm::AliasProductResolver::resolvedModuleLabel_
std::string const & resolvedModuleLabel_() const override
Definition: ProductResolvers.h:294
edm::ProductResolverBase::resolveProduct_
virtual Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const =0
edm::DataManagingProductResolver::getProductData
ProductData const & getProductData() const final
Definition: ProductResolvers.h:74
edm::AliasProductResolver::AliasProductResolver
AliasProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
Definition: ProductResolvers.h:259
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
edm::NoProcessProductResolver::skippingWaitingTasks_
WaitingTaskList skippingWaitingTasks_
Definition: ProductResolvers.h:534
edm::SwitchBaseProductResolver::resetBranchDescription_
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) final
Definition: ProductResolvers.h:335
edm::ParentProcessProductResolver::resolvedModuleLabel_
std::string const & resolvedModuleLabel_() const override
Definition: ProductResolvers.h:454
edm::SwitchBaseProductResolver::getProductData
ProductData const & getProductData() const final
Definition: ProductResolvers.h:343
edm::ParentProcessProductResolver::provenance_
Provenance const * provenance_() const final
Definition: ProductResolvers.h:453
edm::ProductResolverBase
Definition: ProductResolverBase.h:34
edm::ParentProcessProductResolver::branchDescription_
BranchDescription const & branchDescription_() const override
Definition: ProductResolvers.h:451
edm::ProductData::branchDescription
std::shared_ptr< BranchDescription const > const & branchDescription() const
Definition: ProductData.h:29
edm::SwitchBaseProductResolver::branchDescription_
BranchDescription const & branchDescription_() const final
Definition: ProductResolvers.h:331
edm::SwitchBaseProductResolver::parentageID_
ParentageID parentageID_
Definition: ProductResolvers.h:354
edm::ProductData
Definition: ProductData.h:20
UnscheduledConfigurator
edm::DataManagingProductResolver::setFailedStatus
void setFailedStatus() const
Definition: ProductResolvers.h:70
edm::PuttableProductResolver::worker_
Worker * worker_
Definition: ProductResolvers.h:224
edm::NoProcessProductResolver
Definition: ProductResolvers.h:468
edm::AliasProductResolver::getProductData
ProductData const & getProductData() const final
Definition: ProductResolvers.h:299
edm::ProductResolverBase::setupUnscheduled
virtual void setupUnscheduled(UnscheduledConfigurator const &)
Definition: ProductResolverBase.cc:43
edm::ParentProcessProductResolver::productWasDeleted_
bool productWasDeleted_() const override
Definition: ProductResolvers.h:445
edm::NoProcessProductResolver::prefetchRequested_
std::atomic< bool > prefetchRequested_
Definition: ProductResolvers.h:537
edm::DataManagingProductResolver::resetBranchDescription_
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) final
Definition: ProductResolvers.h:89
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
edm::DataManagingProductResolver::resetStatus
void resetStatus()
Definition: ProductResolvers.h:61
edm::SwitchBaseProductResolver::prefetchRequested
std::atomic< bool > & prefetchRequested() const
Definition: ProductResolvers.h:321
edm::BranchDescription
Definition: BranchDescription.h:32
edm::AliasProductResolver::realProduct_
DataManagingOrAliasProductResolver & realProduct_
Definition: ProductResolvers.h:302
edm::DataManagingProductResolver::connectTo
void connectTo(ProductResolverBase const &, Principal const *) final
Definition: ProductResolvers.cc:513
edm::DelayedReaderInputProductResolver::aux_
UnscheduledAuxiliary const * aux_
Definition: ProductResolvers.h:153
edm::UnscheduledProductResolver::UnscheduledProductResolver
UnscheduledProductResolver(std::shared_ptr< BranchDescription const > bd)
Definition: ProductResolvers.h:230
WaitingTaskList.h
edm::DataManagingProductResolver::productResolved_
bool productResolved_() const final
Definition: ProductResolvers.cc:557
edm::DataManagingProductResolver::productProvenancePtr_
ProductProvenance const * productProvenancePtr_() const final
Definition: ProductResolvers.cc:588
edm::DelayedReaderInputProductResolver::DelayedReaderInputProductResolver
DelayedReaderInputProductResolver(std::shared_ptr< BranchDescription const > bd)
Definition: ProductResolvers.h:120
edm::SwitchBaseProductResolver::provenance_
Provenance const * provenance_() const final
Definition: ProductResolvers.h:338
edm::ProductResolverBase::Resolution
Definition: ProductResolverBase.h:36
edm::Provenance
Definition: Provenance.h:34
edm::MergeableInputProductResolver
Definition: ProductResolvers.h:105
edm::ParentProcessProductResolver::unscheduledWasNotRun_
bool unscheduledWasNotRun_() const override
Definition: ProductResolvers.h:437
edm::SwitchBaseProductResolver::productProvenancePtr_
ProductProvenance const * productProvenancePtr_() const final
Definition: ProductResolvers.h:342
edm::ParentProcessProductResolver::prefetchAsync_
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
Definition: ProductResolvers.h:428
edm::DataManagingProductResolver::productWasDeleted_
bool productWasDeleted_() const final
Definition: ProductResolvers.cc:563
edm::SwitchBaseProductResolver
Definition: ProductResolvers.h:307
edm::DataManagingProductResolver::isFromCurrentProcess
virtual bool isFromCurrentProcess() const =0
edm::ProductID
Definition: ProductID.h:27
edm::DataManagingProductResolver::ProductStatus::ResolveFailed
edm::ModuleCallingContext
Definition: ModuleCallingContext.h:29
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316
edm::AliasProductResolver::prefetchAsync_
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
Definition: ProductResolvers.h:274