diff --git a/FWCore/Concurrency/scripts/edmStreamStallGrapher.py b/FWCore/Concurrency/scripts/edmStreamStallGrapher.py index 5b4ddbe1376f8..51d7a7a51d778 100755 --- a/FWCore/Concurrency/scripts/edmStreamStallGrapher.py +++ b/FWCore/Concurrency/scripts/edmStreamStallGrapher.py @@ -179,7 +179,7 @@ def __init__(self,f): self._f = f if numStreams == 0: - numStreams = numStreamsFromSource +1 + numStreams = numStreamsFromSource +2 self.numStreams =numStreams self._moduleNames = moduleNames self._esModuleNames = esModuleNames diff --git a/FWCore/Concurrency/test/streamGrapher_stallMonitor_cfg.py b/FWCore/Concurrency/test/streamGrapher_stallMonitor_cfg.py index b6a84624972ee..22fd4c3e2eeff 100644 --- a/FWCore/Concurrency/test/streamGrapher_stallMonitor_cfg.py +++ b/FWCore/Concurrency/test/streamGrapher_stallMonitor_cfg.py @@ -5,19 +5,19 @@ process.source = cms.Source("PoolSource", fileNames = cms.untracked.vstring("file:file_for_grapher.root")) process.busy1 = cms.EDProducer("BusyWaitIntProducer",ivalue = cms.int32(1), iterations = cms.uint32(100*1000*1000)) -process.legacy1 = cms.EDProducer("BusyWaitIntLegacyProducer",ivalue = cms.int32(12), iterations = cms.uint32(3000*1000)) +process.shared1 = cms.EDProducer("BusyWaitIntOneSharedProducer",ivalue = cms.int32(12), iterations = cms.uint32(3000*1000)) process.adder1 = cms.EDProducer("AddIntsProducer", - labels = cms.VInputTag("a","busy1","legacy1")) + labels = cms.VInputTag("a","busy1","shared1")) process.busy2 = cms.EDProducer("BusyWaitIntProducer", ivalue = cms.int32(7), iterations = cms.uint32(4*1000*1000)) process.busy3 = cms.EDProducer("BusyWaitIntProducer", ivalue = cms.int32(2), iterations = cms.uint32(1000*1000)) -process.legacy2 = cms.EDProducer("BusyWaitIntLegacyProducer", ivalue=cms.int32(-1), iterations = cms.uint32(6000*1000)) +process.shared2 = cms.EDProducer("BusyWaitIntOneSharedProducer", ivalue=cms.int32(-1), iterations = cms.uint32(6000*1000)) process.strt = cms.EDProducer("AddIntsProducer", - labels = cms.VInputTag("busy2","busy3","legacy2","b", "adder1")) + labels = cms.VInputTag("busy2","busy3","shared2","b", "adder1")) -process.t = cms.Task(process.busy1, process.legacy1, process.adder1, process.busy2, process.busy3, process.legacy2) +process.t = cms.Task(process.busy1, process.shared1, process.adder1, process.busy2, process.busy3, process.shared2) process.p = cms.Path(process.strt, process.t) diff --git a/FWCore/Framework/interface/StreamSchedule.h b/FWCore/Framework/interface/StreamSchedule.h index 2ccd8c8732126..0ac2a1d72614f 100644 --- a/FWCore/Framework/interface/StreamSchedule.h +++ b/FWCore/Framework/interface/StreamSchedule.h @@ -66,7 +66,6 @@ #include "FWCore/Framework/interface/OccurrenceTraits.h" #include "FWCore/Framework/interface/UnscheduledCallProducer.h" #include "FWCore/Framework/interface/WorkerManager.h" -#include "FWCore/Framework/interface/EDProducer.h" #include "FWCore/Framework/interface/Path.h" #include "FWCore/Framework/interface/TransitionInfoTypes.h" #include "FWCore/Framework/interface/maker/Worker.h" diff --git a/FWCore/Framework/test/stubs/ToyIntProducers.cc b/FWCore/Framework/test/stubs/ToyIntProducers.cc index 35bcdfb1ed545..93267a3d9facf 100644 --- a/FWCore/Framework/test/stubs/ToyIntProducers.cc +++ b/FWCore/Framework/test/stubs/ToyIntProducers.cc @@ -9,7 +9,6 @@ Toy EDProducers of Ints for testing purposes only. #include "DataFormats/Common/interface/TriggerResults.h" #include "DataFormats/TestObjects/interface/ToyProducts.h" // -#include "FWCore/Framework/interface/EDProducer.h" #include "FWCore/Framework/interface/stream/EDProducer.h" #include "FWCore/Framework/interface/global/EDProducer.h" #include "FWCore/Framework/interface/limited/EDProducer.h" @@ -139,19 +138,33 @@ namespace edmtest { // // Produces an IntProduct instance. // - class IntLegacyProducer : public edm::EDProducer { + class IntOneSharedProducer : public edm::one::EDProducer { public: - explicit IntLegacyProducer(edm::ParameterSet const& p) : value_(p.getParameter("ivalue")) { + explicit IntOneSharedProducer(edm::ParameterSet const& p) : value_(p.getParameter("ivalue")) { produces(); + for (auto const& r : p.getUntrackedParameter>("resourceNames")) { + usesResource(r); + } + } + explicit IntOneSharedProducer(int i) : value_(i) { + produces(); + usesResource("IntOneShared"); } - explicit IntLegacyProducer(int i) : value_(i) { produces(); } void produce(edm::Event& e, edm::EventSetup const& c) override; + static void fillDescriptions(edm::ConfigurationDescriptions& iConfig) { + edm::ParameterSetDescription desc; + desc.add("ivalue"); + desc.addUntracked>("resourceNames", std::vector{}); + + iConfig.addDefault(desc); + } + private: int value_; }; - void IntLegacyProducer::produce(edm::Event& e, edm::EventSetup const&) { + void IntOneSharedProducer::produce(edm::Event& e, edm::EventSetup const&) { // EventSetup is not used. e.put(std::make_unique(value_)); } @@ -243,15 +256,27 @@ namespace edmtest { } //-------------------------------------------------------------------- - class BusyWaitIntLegacyProducer : public edm::EDProducer { + class BusyWaitIntOneSharedProducer : public edm::one::EDProducer { public: - explicit BusyWaitIntLegacyProducer(edm::ParameterSet const& p) + explicit BusyWaitIntOneSharedProducer(edm::ParameterSet const& p) : value_(p.getParameter("ivalue")), iterations_(p.getParameter("iterations")), pi_(std::acos(-1)) { + for (auto const& r : p.getUntrackedParameter>("resourceNames")) { + usesResource(r); + } produces(); } + static void fillDescriptions(edm::ConfigurationDescriptions& iConfig) { + edm::ParameterSetDescription desc; + desc.add("ivalue"); + desc.add("iterations"); + desc.addUntracked>("resourceNames", std::vector{}); + + iConfig.addDefault(desc); + } + void produce(edm::Event& e, edm::EventSetup const& c) override; private: @@ -260,7 +285,7 @@ namespace edmtest { const double pi_; }; - void BusyWaitIntLegacyProducer::produce(edm::Event& e, edm::EventSetup const&) { + void BusyWaitIntOneSharedProducer::produce(edm::Event& e, edm::EventSetup const&) { double sum = 0.; const double stepSize = pi_ / iterations_; for (unsigned int i = 0; i < iterations_; ++i) { @@ -916,14 +941,14 @@ namespace edmtest { using edmtest::AddAllIntsProducer; using edmtest::AddIntsProducer; -using edmtest::BusyWaitIntLegacyProducer; using edmtest::BusyWaitIntLimitedProducer; +using edmtest::BusyWaitIntOneSharedProducer; using edmtest::BusyWaitIntProducer; using edmtest::ConsumingIntProducer; using edmtest::EventNumberIntProducer; using edmtest::FailingProducer; using edmtest::Int16_tProducer; -using edmtest::IntLegacyProducer; +using edmtest::IntOneSharedProducer; using edmtest::IntProducer; using edmtest::IntProducerBeginProcessBlock; using edmtest::IntProducerEndProcessBlock; @@ -939,10 +964,10 @@ DEFINE_FWK_MODULE(edmtest::FailingInLumiProducer); DEFINE_FWK_MODULE(edmtest::FailingInRunProducer); DEFINE_FWK_MODULE(NonProducer); DEFINE_FWK_MODULE(IntProducer); -DEFINE_FWK_MODULE(IntLegacyProducer); +DEFINE_FWK_MODULE(IntOneSharedProducer); DEFINE_FWK_MODULE(BusyWaitIntProducer); DEFINE_FWK_MODULE(BusyWaitIntLimitedProducer); -DEFINE_FWK_MODULE(BusyWaitIntLegacyProducer); +DEFINE_FWK_MODULE(BusyWaitIntOneSharedProducer); DEFINE_FWK_MODULE(ConsumingIntProducer); DEFINE_FWK_MODULE(EventNumberIntProducer); DEFINE_FWK_MODULE(TransientIntProducer); diff --git a/FWCore/Framework/test/test_mayConsumes_deadlocking_cfg.py b/FWCore/Framework/test/test_mayConsumes_deadlocking_cfg.py index 29e737a4760d2..590600cfc535b 100644 --- a/FWCore/Framework/test/test_mayConsumes_deadlocking_cfg.py +++ b/FWCore/Framework/test/test_mayConsumes_deadlocking_cfg.py @@ -17,12 +17,14 @@ resourceName = cms.untracked.string("B") ) -process.one = cms.EDProducer("IntLegacyProducer", - ivalue = cms.int32(1) +process.one = cms.EDProducer("IntOneSharedProducer", + ivalue = cms.int32(1), + resourceNames = cms.untracked.vstring("A", "B") ) -process.two = cms.EDProducer("IntLegacyProducer", - ivalue = cms.int32(2) +process.two = cms.EDProducer("IntOneSharedProducer", + ivalue = cms.int32(2), + resourceNames = cms.untracked.vstring("A", "B") ) process.options = dict( diff --git a/FWCore/Framework/test/test_no_concurrent_module_cfg.py b/FWCore/Framework/test/test_no_concurrent_module_cfg.py index 8bc316d4c6628..a15c3cd4b45fc 100644 --- a/FWCore/Framework/test/test_no_concurrent_module_cfg.py +++ b/FWCore/Framework/test/test_no_concurrent_module_cfg.py @@ -12,11 +12,12 @@ process.maxEvents.input = 20 -process.i1 = cms.EDProducer("BusyWaitIntLegacyProducer", ivalue = cms.int32(1), - iterations = cms.uint32(300*1000)) -process.i2 = cms.EDProducer("BusyWaitIntLegacyProducer", ivalue = cms.int32(2), - iterations = cms.uint32(300*1000)) - +process.i1 = cms.EDProducer("BusyWaitIntOneSharedProducer", ivalue = cms.int32(1), + iterations = cms.uint32(300*1000), + resourceNames = cms.untracked.vstring("foo")) +process.i2 = cms.EDProducer("BusyWaitIntOneSharedProducer", ivalue = cms.int32(2), + iterations = cms.uint32(300*1000), + resourceNames = cms.untracked.vstring("foo")) process.c1 = cms.EDAnalyzer("ConsumingOneSharedResourceAnalyzer", valueMustMatch = cms.untracked.int32(1), moduleLabel = cms.untracked.InputTag("i1"),