35 exception <<
"DataManagingProductResolver::resolveProduct_: The product matching all criteria was already deleted\n" 37 <<
"Looking for module label: " <<
moduleLabel() <<
"\n" 40 <<
"This means there is a configuration error.\n" 41 <<
"The module which is asking for this data must be configured to state that it will read this data.";
46 template <
bool callResolver,
typename FUNC>
51 auto presentStatus =
status();
56 auto failedStatusSetter = [
this](
ProductStatus* iPresentStatus) {
60 *iPresentStatus = this->
status();
62 std::unique_ptr<ProductStatus, decltype(failedStatusSetter)> failedStatusGuard(&presentStatus,
71 if (pd->wrapper()->isPresent()) {
96 if (
original->isPresent() != iFrom->isPresent()) {
99 <<
"Was trying to merge objects where one product had been put in the input file and the other had not " 102 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n" 103 <<
"that need to be merged in the first place.\n";
107 if (mergeableRunProductMetadata ==
nullptr ||
desc.branchType() !=
InRun) {
108 original->mergeProduct(iFrom.get());
113 original->mergeProduct(iFrom.get());
128 }
else if (
original->hasIsProductEqual()) {
129 if (
original->isPresent() && iFrom->isPresent()) {
130 if (!
original->isProductEqual(iFrom.get())) {
133 <<
"ProductResolver::mergeTheProduct\n" 134 <<
"Two run/lumi products for the same run/lumi which should be equal are not\n" 135 <<
"Using the first, ignoring the second\n" 136 <<
"className = " << bd.className() <<
"\n" 137 <<
"moduleLabel = " << bd.moduleLabel() <<
"\n" 138 <<
"instance = " << bd.productInstanceName() <<
"\n" 139 <<
"process = " << bd.processName() <<
"\n";
141 }
else if (!
original->isPresent() && iFrom->isPresent()) {
147 edm::LogWarning(
"RunLumiMerging") <<
"ProductResolver::mergeTheProduct\n" 148 <<
"Run/lumi product has neither a mergeProduct nor isProductEqual function\n" 149 <<
"Using the first, ignoring the second in merge\n" 150 <<
"className = " << bd.className() <<
"\n" 151 <<
"moduleLabel = " << bd.moduleLabel() <<
"\n" 152 <<
"instance = " << bd.productInstanceName() <<
"\n" 153 <<
"process = " << bd.processName() <<
"\n";
154 if (!
original->isPresent() && iFrom->isPresent()) {
172 return resolveProductImpl<true>([
this, &principal, mcc]() {
173 auto branchType = principal.branchType();
189 if (
auto reader = principal.reader()) {
190 std::unique_lock<std::recursive_mutex> guard;
191 if (
auto sr =
reader->sharedResources().second) {
192 guard = std::unique_lock<std::recursive_mutex>(*sr);
214 std::unique_lock<std::recursive_mutex> guard;
215 if (
auto sr =
reader->sharedResources().second) {
216 guard = std::unique_lock<std::recursive_mutex>(*sr);
223 if (edp.get() !=
nullptr) {
228 <<
"Mergeable data types written to a Run must have the swap member function defined" 237 <<
"The product branch was dropped in the first run or lumi fragment and present in a later one" 239 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n" 240 <<
"that need to be merged in the first place.\n";
247 <<
"The product branch was present in first run or lumi fragment and dropped in a later one" 249 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n" 250 <<
"that need to be merged in the first place.\n";
273 bool skipCurrentProcess,
278 bool expected =
false;
279 bool prefetchRequested = m_prefetchRequested.compare_exchange_strong(expected,
true);
280 m_waitingTasks.add(waitTask);
282 if (prefetchRequested) {
284 auto workToDo = [
this, mcc, &principal, weakToken]() {
289 resolveProductImpl<true>([
this, &principal, mcc]() {
290 if (principal.branchType() !=
InEvent && principal.branchType() !=
InProcess) {
293 if (
auto reader = principal.reader()) {
294 std::unique_lock<std::recursive_mutex> guard;
295 if (
auto sr =
reader->sharedResources().second) {
296 guard = std::unique_lock<std::recursive_mutex>(*sr);
298 if (not productResolved()) {
301 setProduct(
reader->getProduct(branchDescription().branchID(), &principal, mcc));
303 extendException(
e, branchDescription(), mcc);
307 extendException(newExcept, branchDescription(), mcc);
314 this->m_waitingTasks.doneWaiting(std::current_exception());
317 this->m_waitingTasks.doneWaiting(
nullptr);
321 if (
auto reader = principal.reader()) {
322 if (
auto shared_res =
reader->sharedResources().first) {
323 queue = &(shared_res->serialQueueChain());
327 queue->push(*waitTask.group(), workToDo);
331 waitTask.group()->run([
t]() {
340 if (not deleteEarly) {
365 bool skipCurrentProcess,
368 return resolveProductImpl<false>([]() {
return; });
373 bool skipCurrentProcess,
383 bool skipCurrentProcess,
386 if (!skipCurrentProcess) {
388 return resolveProductImpl<false>([]() {
return; });
395 bool skipCurrentProcess,
399 if (not skipCurrentProcess) {
400 if (branchDescription().branchType() ==
InProcess &&
407 if (branchDescription().availableOnlyAtEndTransition() and mcc) {
418 waitingTasks_->add(waitTask);
436 bool skipCurrentProcess,
439 if (!skipCurrentProcess and
worker_) {
440 return resolveProductImpl<false>([] {});
447 bool skipCurrentProcess,
451 if (skipCurrentProcess) {
456 bool expected =
false;
457 bool prefetchRequested = prefetchRequested_.compare_exchange_strong(expected,
true);
458 waitingTasks_.add(waitTask);
459 if (prefetchRequested) {
467 resolveProductImpl<true>([iPtr]() {
469 std::rethrow_exception(*iPtr);
473 waitingTasks_.doneWaiting(std::current_exception());
476 waitingTasks_.doneWaiting(
nullptr);
485 info.principal().streamID(),
492 if (not deleteEarly) {
510 bool skipCurrentProcess,
513 if (!skipCurrentProcess and
worker_) {
514 return resolveProductImpl<false>([] {});
532 bool skipCurrentProcess,
536 if (skipCurrentProcess) {
539 assert(worker_ !=
nullptr);
541 bool expected =
false;
542 bool prefetchRequested = prefetchRequested_.compare_exchange_strong(expected,
true);
543 waitingTasks_.add(waitTask);
544 if (prefetchRequested) {
552 resolveProductImpl<true>([iPtr]() {
554 std::rethrow_exception(*iPtr);
558 waitingTasks_.doneWaiting(std::current_exception());
561 waitingTasks_.doneWaiting(
nullptr);
574 info.principal().streamID(),
581 if (not deleteEarly) {
609 <<
"It is actually of type " << typeID.className() <<
".\n";
636 auto presentStatus =
status();
707 : realProduct_(realProduct), productData_(
std::
move(bd)), prefetchRequested_(
false) {
717 <<
"SwitchBaseProductResolver::connectTo() not implemented and should never be called.\n" 718 <<
"Contact a Framework developer\n";
726 if (
res.data() ==
nullptr)
751 if (not deleteEarly) {
769 bool skipCurrentProcess,
780 bool skipCurrentProcess,
784 if (skipCurrentProcess) {
792 bool expected =
false;
793 bool doPrefetchRequested = prefetchRequested().compare_exchange_strong(expected,
true);
794 waitingTasks().add(waitTask);
796 if (doPrefetchRequested) {
802 if (
nullptr != iException) {
803 waitingTasks().doneWaiting(*iException);
805 unsafe_setWrapperAndProvenance();
806 waitingTasks().doneWaiting(std::exception_ptr());
817 <<
"This makes no sense for SwitchProducerProductResolver.\nContact a Framework developer";
822 bool expected =
false;
839 if (not deleteEarly) {
845 bool skipCurrentProcess,
853 bool skipCurrentProcess,
857 if (skipCurrentProcess) {
862 bool expected =
false;
863 bool doPrefetchRequested = prefetchRequested().compare_exchange_strong(expected,
true);
864 waitingTasks().add(waitTask);
866 if (doPrefetchRequested) {
872 if (
nullptr != iException) {
873 waitingTasks().doneWaiting(*iException);
875 unsafe_setWrapperAndProvenance();
876 waitingTasks().doneWaiting(std::exception_ptr());
879 realProduct().prefetchAsync(
915 <<
"ParentProcessProductResolver::throwNullRealProduct RealProduct pointer not set in this context.\n" 916 <<
"Contact a Framework developer\n";
920 std::vector<bool>
const& ambiguous,
922 : matchingHolders_(matchingHolders),
923 ambiguous_(ambiguous),
925 lastSkipCurrentCheckIndex_(lastCheckIndex_.
load()),
926 prefetchRequested_(
false),
927 skippingPrefetchRequested_(
false),
928 madeAtEnd_{madeAtEnd} {
929 assert(ambiguous_.size() == matchingHolders_.size());
934 bool skipCurrentProcess,
938 return productResolver->
resolveProduct(principal, skipCurrentProcess, sra, mcc);
942 bool skipCurrentProcess,
947 const unsigned int choiceSize =
ambiguous_.size();
950 if ((not skipCurrentProcess) and (
madeAtEnd_ and mcc)) {
951 skipCurrentProcess = not mcc->parent().isAtEndTransition();
961 return tryResolver(checkCacheIndex, principal, skipCurrentProcess, sra, mcc);
967 for (
unsigned int k : lookupProcessOrder) {
978 updateCacheIndex =
k;
990 bool skipCurrentProcess,
994 bool timeToMakeAtEnd =
true;
995 if (madeAtEnd_ and mcc) {
996 timeToMakeAtEnd = mcc->parent().isAtEndTransition();
1000 if (not skipCurrentProcess and timeToMakeAtEnd) {
1002 bool expected =
false;
1003 bool prefetchRequested = prefetchRequested_.compare_exchange_strong(expected,
true);
1004 waitingTasks_.add(waitTask);
1006 if (prefetchRequested) {
1008 tryPrefetchResolverAsync(0, principal,
false, sra, mcc,
token, waitTask.group());
1011 skippingWaitingTasks_.add(waitTask);
1012 bool expected =
false;
1013 if (skippingPrefetchRequested_.compare_exchange_strong(expected,
true)) {
1015 tryPrefetchResolverAsync(0, principal,
true, sra, mcc,
token, waitTask.group());
1022 std::exception_ptr iExceptPtr)
const {
1023 if (not iSkipCurrentProcess) {
1036 unsigned int iResolverIndex,
1040 bool iSkipCurrentProcess,
1042 oneapi::tbb::task_group* iGroup) noexcept
1043 : resolver_(iResolver),
1044 principal_(iPrincipal),
1048 serviceToken_(iToken),
1049 index_(iResolverIndex),
1050 skipCurrentProcess_(iSkipCurrentProcess) {}
1052 void execute() final {
1053 auto exceptPtr = exceptionPtr();
1055 resolver_->prefetchFailed(index_, *principal_, skipCurrentProcess_, exceptPtr);
1057 if (not resolver_->dataValidFromResolver(index_, *principal_, skipCurrentProcess_)) {
1058 resolver_->tryPrefetchResolverAsync(
1059 index_ + 1, *principal_, skipCurrentProcess_, sra_, mcc_, serviceToken_.lock(), group_);
1065 NoProcessProductResolver
const* resolver_;
1066 Principal
const* principal_;
1068 ModuleCallingContext
const* mcc_;
1069 oneapi::tbb::task_group* group_;
1070 ServiceWeakToken serviceToken_;
1071 unsigned int index_;
1072 bool skipCurrentProcess_;
1078 bool iSkipCurrentProcess,
1079 std::exception_ptr iExceptPtr)
const {
1080 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1081 auto k = lookupProcessOrder[iProcessingIndex];
1083 setCache(iSkipCurrentProcess,
k, iExceptPtr);
1088 bool iSkipCurrentProcess)
const {
1089 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1090 auto k = lookupProcessOrder[iProcessingIndex];
1094 setCache(iSkipCurrentProcess,
k,
nullptr);
1102 bool skipCurrentProcess,
1106 oneapi::tbb::task_group*
group)
const noexcept {
1107 std::vector<unsigned int>
const& lookupProcessOrder = principal.lookupProcessOrder();
1108 auto index = iProcessingIndex;
1110 const unsigned int choiceSize = ambiguous_.size();
1112 while (
index < lookupProcessOrder.size()) {
1113 auto k = lookupProcessOrder[
index];
1117 assert(
k < ambiguous_.size());
1118 if (ambiguous_[
k]) {
1125 auto task =
new TryNextResolverWaitingTask(
this,
index, &principal, sra, mcc, skipCurrentProcess,
token,
group);
1127 ProductResolverBase const* productResolver = principal.getProductResolverByIndex(matchingHolders_[
k]);
1132 productResolver->
prefetchAsync(hTask, principal, skipCurrentProcess,
token, sra, mcc);
1138 setCache(skipCurrentProcess, newCacheIndex,
nullptr);
1166 <<
"NoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n" 1167 <<
"Contact a Framework developer\n";
1172 <<
"NoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n" 1173 <<
"Contact a Framework developer\n";
1178 <<
"NoProcessProductResolver::productResolved_() not implemented and should never be called.\n" 1179 <<
"Contact a Framework developer\n";
1184 <<
"NoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n" 1185 <<
"Contact a Framework developer\n";
1190 <<
"NoProcessProductResolver::productWasFetchedAndIsValid_() not implemented and should never be called.\n" 1191 <<
"Contact a Framework developer\n";
1196 <<
"NoProcessProductResolver::branchDescription_() not implemented and should never be called.\n" 1197 <<
"Contact a Framework developer\n";
1202 <<
"NoProcessProductResolver::resetBranchDescription_() not implemented and should never be called.\n" 1203 <<
"Contact a Framework developer\n";
1208 <<
"NoProcessProductResolver::provenance_() not implemented and should never be called.\n" 1209 <<
"Contact a Framework developer\n";
1214 <<
"NoProcessProductResolver::connectTo() not implemented and should never be called.\n" 1215 <<
"Contact a Framework developer\n";
1221 bool skipCurrentProcess,
1227 ->resolveProduct(principal, skipCurrentProcess, sra, mcc);
1232 bool skipCurrentProcess,
1236 principal.getProductResolverByIndex(realResolverIndex_)
1237 ->prefetchAsync(waitTask, principal, skipCurrentProcess,
token, sra, mcc);
1252 <<
"SingleChoiceNoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n" 1253 <<
"Contact a Framework developer\n";
1258 <<
"SingleChoiceNoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n" 1259 <<
"Contact a Framework developer\n";
1264 <<
"SingleChoiceNoProcessProductResolver::productResolved_() not implemented and should never be called.\n" 1265 <<
"Contact a Framework developer\n";
1270 <<
"SingleChoiceNoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n" 1271 <<
"Contact a Framework developer\n";
1276 "implemented and should never be called.\n" 1277 <<
"Contact a Framework developer\n";
1282 <<
"SingleChoiceNoProcessProductResolver::branchDescription_() not implemented and should never be called.\n" 1283 <<
"Contact a Framework developer\n";
1288 "implemented and should never be called.\n" 1289 <<
"Contact a Framework developer\n";
1294 <<
"SingleChoiceNoProcessProductResolver::provenance_() not implemented and should never be called.\n" 1295 <<
"Contact a Framework developer\n";
1300 <<
"SingleChoiceNoProcessProductResolver::connectTo() not implemented and should never be called.\n" 1301 <<
"Contact a Framework developer\n";
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
void connectTo(ProductResolverBase const &iOther, Principal const *) final
void setProductID(ProductID const &pid)
ProductData const & getProductData() const final
ProductProvenance const * productProvenancePtr_() const override
BranchDescription const & branchDescription_() const override
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) final
std::string const & productInstanceName() const
std::unique_ptr< T, F > make_sentry(T *iObject, F iFunc)
NOTE: if iObject is null, then iFunc will not be called.
void resetProductData_(bool deleteEarly) override
bool productWasDeleted_() const override
static constexpr unsigned int kAmbiguousOffset
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
void prefetchAsync(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const noexcept
bool singleProduct_() const override
void exceptionContext(cms::Exception &, ESModuleCallingContext const &)
unsigned int ProductResolverIndex
ProductProvenance const * productProvenance() const
static constexpr unsigned int kMissingOffset
std::shared_ptr< BranchDescription const > bd_
Provenance const & provenance() const
void resetProductData_(bool deleteEarly) override
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const noexcept override
BranchType const & branchType() const
void setProductID_(ProductID const &pid) final
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
Worker * findWorker(std::string const &iLabel) const
void putProduct(std::unique_ptr< WrapperBase > edp) const final
bool dataValidFromResolver(unsigned int iProcessingIndex, Principal const &principal, bool iSkipCurrentProcess) const
void checkType(WrapperBase const &prod) const
std::atomic< bool > prefetchRequested_
ProductStatus status() const
void resetProductData_(bool deleteEarly) final
WaitingTaskList & waitingTasks() const
Resolution resolveProduct(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Provenance const * provenance() const
TypeID unwrappedTypeID() const
std::string const & processName() const
GlobalContext const * globalContext() const noexcept(false)
bool singleProduct_() const final
WaitingTaskList skippingWaitingTasks_
SwitchProducerProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
void resetProductData_(bool deleteEarly) override
void setFailedStatus() const
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override
bool unscheduledWasNotRun_() const override
bool isAtEndTransition() const noexcept
bool singleProduct_() const override
Log< level::Error, false > LogError
bool productUnavailable_() const override
TypeWithDict const & unwrappedType() const
void reset()
Resets access to the resource so that added tasks will wait.
ProductProvenanceRetriever const * provRetriever_
void connectTo(ProductResolverBase const &iOther, Principal const *) final
ConstProductResolverPtr getProductResolverByIndex(ProductResolverIndex const &oid) const noexcept
std::string const & processName() const
ProductData const & getProductData() const final
WrapperBase const * wrapper() const
void resetProductData_(bool deleteEarly) override
WaitingTaskList waitingTasks_
void connectTo(ProductResolverBase const &, Principal const *) final
void setProductID(ProductID const &pid)
DataManagingOrAliasProductResolver & realProduct_
bool productUnavailable_() const final
WaitingTaskList * waitingTasks_
ProductProvenance const * productProvenancePtr_() const override
bool productResolved() const
void tryPrefetchResolverAsync(unsigned int iProcessingIndex, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc, ServiceToken token, oneapi::tbb::task_group *) const noexcept
WaitingTaskList waitingTasks_
bool singleProduct_() const override
void emit(Args &&... args) const
ProductProvenanceLookup const * store() const
void setProductID_(ProductID const &pid) override
UnscheduledAuxiliary const * aux_
void doneWaiting(std::exception_ptr iPtr)
Signals that the resource is now available and tasks should be spawned.
bool productWasDeleted_() const final
virtual bool isFromCurrentProcess() const =0
void setupUnscheduled(UnscheduledConfigurator const &iConfigure) final
bool productUnavailable() const
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const noexcept override
std::string const & moduleLabel() const
bool productResolved_() const final
SwitchBaseProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
std::string const & className() const
ProductProvenance const * productProvenancePtr_() const final
void throwNullRealProduct() const
std::string const & branchName() const
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
std::atomic< bool > prefetchRequested_
std::string const & productInstanceName() const
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
DataManagingOrAliasProductResolver const & realProduct() const
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
void resetProductData_(bool deleteEarly) override
void resetProductData_(bool deleteEarly) override
void unsafe_setWrapperAndProvenance() const
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
bool isFromCurrentProcess() const final
bool productResolved_() const final
bool productWasFetchedAndIsValid(bool iSkipCurrentProcess) const
static constexpr const ProductStatus defaultStatus_
FunctorWaitingTask< F > * make_waiting_task(F f)
std::atomic< bool > prefetchRequested_
std::atomic< unsigned int > lastCheckIndex_
void setProductID_(ProductID const &pid) override
ProductProvenance const * branchIDToProvenance(BranchID const &bid) const
void setMergeableRunProductMetadata(MergeableRunProductMetadataBase const *mrpm)
ProductProvenance const * productProvenancePtr_() const override
WrapperBase * unsafe_wrapper() const
void setProductID_(ProductID const &pid) final
ServiceToken lock() const
void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
NoProcessProductResolver(std::vector< ProductResolverIndex > const &matchingHolders, std::vector< bool > const &ambiguous, bool madeAtEnd)
std::vector< unsigned int > const & lookupProcessOrder() const noexcept
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const noexcept final
std::atomic< bool > skippingPrefetchRequested_
Resolution resolveProductImpl(Resolution) const
std::atomic< ProductStatus > theStatus_
std::vector< bool > ambiguous_
std::type_info const & unvalidatedTypeInfo() const
StreamContext const * getStreamContext() const noexcept(false)
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
static constexpr unsigned int kUnsetOffset
bool productResolved_() const final
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
Provenance const * provenance_() const override
bool singleProduct_() const override
void setupUnscheduled(UnscheduledConfigurator const &) final
ParentContext const & parent() const noexcept
void setMergeableRunProductMetadataInProductData(MergeableRunProductMetadata const *)
void setProvenance(ProductProvenanceLookup const *provRetriever)
FunctorTask< F > * make_functor_task(F f)
ProductStatus defaultStatus() const
BranchDescription const & branchDescription() const
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const noexcept override
void prefetchFailed(unsigned int iProcessingIndex, Principal const &principal, bool iSkipCurrentProcess, std::exception_ptr iExceptPtr) const
void setProductID_(ProductID const &pid) override
DataManagingOrAliasProductResolver & realProduct_
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> preModuleDelayedGetSignal_
Transition transition() const
std::vector< ProductResolverIndex > matchingHolders_
Resolution tryResolver(unsigned int index, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
unsigned int unsetIndexValue() const
bool unscheduledWasNotRun_() const override
void setProduct(std::unique_ptr< WrapperBase > edp) const
void unsafe_setWrapper(std::unique_ptr< WrapperBase > iValue) const
Provenance const * provenance_() const override
bool productWasDeleted_() const override
void setupUnscheduled(UnscheduledConfigurator const &) final
Resolution resolveProductImpl(FUNC resolver) const
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const noexcept override
void resetProductData_(bool deleteEarly) override=0
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
Log< level::Warning, false > LogWarning
void resetProductData_(bool deleteEarly) override
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> postModuleDelayedGetSignal_
UnscheduledAuxiliary const * auxiliary() const
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const noexcept final
bool productResolved_() const final
bool productWasDeleted() const
std::atomic< bool > & prefetchRequested() const
static ParentageRegistry * instance()
bool productUnavailable_() const override
BranchDescription const & branchDescription_() const override
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override
void throwProductDeletedException() const
static Resolution makeAmbiguous()
std::string const & moduleLabel() const
void setProductID_(ProductID const &pid) override
ProductProvenance const * productProvenancePtr_() const override
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
WaitingTaskList waitingTasks_
bool insertMapped(value_type const &v)
virtual size_t transformIndex(edm::BranchDescription const &) const noexcept=0
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) final
DelayedReader * reader() const
void putProduct(std::unique_ptr< WrapperBase > edp) const override
void setProductProvenanceRetriever(ProductProvenanceRetriever const *provRetriever)
bool productUnavailable_() const final
void insertIntoSet(ProductProvenance provenanceProduct) const
static HepMC::HEPEVT_Wrapper wrapper
ProductResolverIndex realResolverIndex_
BranchID const & originalBranchID() const
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
void connectTo(ProductResolverBase const &iOther, Principal const *iParentPrincipal) final