CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RunInfoHandler.cc
Go to the documentation of this file.
5 #include <iostream>
6 #include <vector>
7 
9  : m_since(pset.getParameter<unsigned long long>("runNumber")),
10  m_name(pset.getUntrackedParameter<std::string>("name", "RunInfoHandler")),
11  m_runinfo_schema(pset.getUntrackedParameter<std::string>("RunInfoSchema", "CMS_RUNINFO")),
12  m_dcsenv_schema(pset.getUntrackedParameter<std::string>("DCSEnvSchema", "CMS_DCS_ENV_PVSS_COND")),
13  m_connectionString(pset.getParameter<std::string>("connect")),
14  m_connectionPset(pset.getParameter<edm::ParameterSet>("DBParameters")) {}
15 
17 
19  //check whats already inside of database
20  edm::LogInfo("RunInfoHandler") << "["
21  << "RunInfoHandler::" << __func__ << "]:" << m_name << ": "
22  << "Destination Tag Info: name " << tagInfo().name << ", size " << tagInfo().size
23  << ", last object valid since " << tagInfo().lastInterval.since << ", hash "
24  << tagInfo().lastInterval.payloadId << std::endl;
25  edm::LogInfo("RunInfoHandler") << "["
26  << "RunInfoHandler::" << __func__ << "]:" << m_name
27  << ": runnumber/first since = " << m_since << std::endl;
28 
29  //check if a transfer is needed:
30  //if the new run number is smaller than or equal to the latest IOV, exit.
31  //This is needed as now the IOV Editor does not always protect for insertions:
32  //ANY and VALIDATION sychronizations are allowed to write in the past.
33  if (tagInfo().size > 0 && tagInfo().lastInterval.since >= m_since) {
34  edm::LogWarning("RunInfoHandler") << "["
35  << "RunInfoHandler::" << __func__ << "]:" << m_name << ": "
36  << "last IOV " << tagInfo().lastInterval.since
37  << (tagInfo().lastInterval.since == m_since ? " is equal to" : " is larger than")
38  << " the run proposed for insertion " << m_since << ". No transfer needed."
39  << std::endl;
40  return;
41  }
42 
43  RunInfo* r = new RunInfo();
44 
45  //fill with null runinfo if empty run are found beetween the two last valid ones
46  size_t n_empty_run = 0;
47  if (tagInfo().size > 0 && (tagInfo().lastInterval.since + 1) < m_since) {
48  n_empty_run = m_since - tagInfo().lastInterval.since - 1;
49  edm::LogInfo("RunInfoHandler") << "["
50  << "RunInfoHandler::" << __func__ << "]:" << m_name << ": "
51  << "entering fake run from " << tagInfo().lastInterval.since + 1 << " to "
52  << m_since - 1 << std::endl;
53  }
54  std::ostringstream ss;
55  // transfer fake run for 1 to since for the first time
56  if (tagInfo().size == 0 && m_since != 1) {
57  m_to_transfer.push_back(std::make_pair((RunInfo*)(r->Fake_RunInfo()), 1));
58  ss << "fake run number: " << 1 << ", ";
59  }
60  if (n_empty_run != 0) {
61  m_to_transfer.push_back(std::make_pair((RunInfo*)(r->Fake_RunInfo()), tagInfo().lastInterval.since + 1));
62  ss << "fake run number: " << tagInfo().lastInterval.since + 1 << ", ";
63  }
64 
65  //reading from omds
68  m_to_transfer.push_back(std::make_pair((RunInfo*)r, m_since));
69  ss << "run number: " << m_since << ";";
70  m_userTextLog = ss.str();
71  edm::LogInfo("RunInfoHandler") << "["
72  << "RunInfoHandler::" << __func__ << "]:" << m_name << ": END." << std::endl;
73  // update runinfo table in conditions db
74  RunInfoUpdate updater(dbSession());
75  updater.appendNewRun(*r);
76 }
cond::persistency::Session & dbSession() const
unsigned long long m_since
std::string m_connectionString
Iov_t lastInterval
Definition: Types.h:73
void getNewObjects() override
Time_t since
Definition: Types.h:53
size_t size
Definition: Types.h:74
edm::ParameterSet m_connectionPset
RunInfo readData(const std::string &runinfo_schema, const std::string &dcsenv_schema, const int r_number)
Definition: RunInfoRead.cc:49
std::string name
Definition: Types.h:72
RunInfoHandler(const edm::ParameterSet &pset)
std::vector< std::pair< RunInfo *, Time_t > > m_to_transfer
Hash payloadId
Definition: Types.h:55
void appendNewRun(const RunInfo &run)
Log< level::Info, false > LogInfo
std::string m_name
static RunInfo * Fake_RunInfo()
Definition: RunInfo.cc:4
~RunInfoHandler() override
Log< level::Warning, false > LogWarning
std::string m_dcsenv_schema
tuple size
Write out results.
std::string m_runinfo_schema
cond::TagInfo_t const & tagInfo() const