38 : m_currentTimes{}, m_session(), m_transactionActive(
false), m_dbInitialised(
false), m_records(), m_logheaders() {
41 m_autoCommit = iConfig.getUntrackedParameter<
bool>(
"autoCommit",
false);
42 m_writeTransactionDelay = iConfig.getUntrackedParameter<
unsigned int>(
"writeTransactionDelay", 0);
45 m_connection.setParameters(connectionPset);
46 m_connection.configure();
52 typedef std::vector<edm::ParameterSet>
Parameters;
54 for (Parameters::iterator itToPut =
toPut.begin(); itToPut !=
toPut.end(); ++itToPut)
55 fillRecord(*itToPut, timetypestr);
96 if (!m_transactionActive) {
97 m_session.transaction().start(
false);
98 m_transactionActive =
true;
103 if (m_transactionActive) {
104 m_session.transaction().commit();
105 m_transactionActive =
false;
110 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
111 doStartTransaction();
115 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
116 doCommitTransaction();
120 if (!m_dbInitialised) {
121 if (!m_session.existsDatabase())
122 m_session.createDatabase();
124 for (
auto& iR : m_records) {
125 if (m_session.existsIov(iR.second.m_tag))
126 iR.second.m_isNewTag =
false;
129 m_dbInitialised =
true;
150 for (
auto&
time : m_currentTimes) {
156 for (
auto&
time : m_currentTimes) {
164 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
165 doStartTransaction();
187 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
192 edm::LogInfo(MSGSOURCE) <<
"Creating new tag " << myrecord.
m_tag <<
", adding iov with since " << firstSinceTime
193 <<
" pointing to payload id " << firstPayloadId;
194 doStartTransaction();
201 editor.
insert(firstSinceTime, firstPayloadId);
216 <<
", adding iov with since " << firstSinceTime;
221 editor.
insert(firstSinceTime, firstPayloadId);
230 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
234 "PoolDBOutputService::appendSinceTime");
237 doStartTransaction();
240 ret = appendSinceTime(payloadId,
time, myrecord);
251 edm::LogInfo(MSGSOURCE) <<
"Updating existing tag " << myrecord.
m_tag <<
", adding iov with since " <<
time;
268 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
272 "PoolDBOutputService::appendSinceTime");
274 edm::LogInfo(MSGSOURCE) <<
"Updating existing tag " << myrecord.
m_tag <<
", removing iov with since " << sinceTime
275 <<
" pointing to payload id " << payloadId;
276 doStartTransaction();
280 editor.
erase(sinceTime, payloadId);
292 std::map<std::string, Record>::iterator it = m_records.find(
recordName);
293 if (it == m_records.end()) {
295 "PoolDBOutputService::lookUpRecord");
301 std::map<std::string, cond::UserLogInfo>::iterator it = m_logheaders.find(
recordName);
302 if (it == m_logheaders.end())
304 " from PoolDBOutputService::lookUpUserLogInfo");
309 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
313 "PoolDBOutputService::closeIOV");
315 edm::LogInfo(MSGSOURCE) <<
"Updating existing tag " << myrecord.
m_tag <<
", closing with end of validity "
317 doStartTransaction();
322 editor.
flush(
"Tag closed.");
342 doStartTransaction();
347 if (m_session.existsIov(
record.m_tag)) {
361 std::lock_guard<std::recursive_mutex>
lock(m_mutex);