38 : m_logger(iConfig.getUntrackedParameter<
std::
string>(
"jobName",
"DBOutputService")),
41 m_transactionActive(
false),
42 m_dbInitialised(
false),
47 m_autoCommit = iConfig.getUntrackedParameter<
bool>(
"autoCommit",
false);
48 m_writeTransactionDelay = iConfig.getUntrackedParameter<
unsigned int>(
"writeTransactionDelay", 0);
51 m_connection.setParameters(connectionPset);
52 m_connection.setLogDestination(m_logger);
53 m_connection.configure();
56 bool saveLogsOnDb = iConfig.getUntrackedParameter<
bool>(
"saveLogsOnDB",
false);
62 typedef std::vector<edm::ParameterSet>
Parameters;
64 for (Parameters::iterator itToPut =
toPut.begin(); itToPut !=
toPut.end(); ++itToPut)
65 fillRecord(*itToPut, timetypestr);
106 if (!m_transactionActive) {
107 m_session.transaction().start(
false);
108 m_transactionActive =
true;
113 if (m_transactionActive) {
114 m_session.transaction().commit();
115 m_transactionActive =
false;
120 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
121 doStartTransaction();
125 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
126 doCommitTransaction();
130 if (!m_dbInitialised) {
131 if (!m_session.existsDatabase())
132 m_session.createDatabase();
134 for (
auto& iR : m_records) {
135 if (m_session.existsIov(iR.second.m_tag))
136 iR.second.m_isNewTag =
false;
139 m_dbInitialised =
true;
160 for (
auto&
time : m_currentTimes) {
166 for (
auto&
time : m_currentTimes) {
174 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
175 doStartTransaction();
197 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
202 m_logger.logInfo() <<
"Creating new tag " << myrecord.
m_tag <<
", adding iov with since " << firstSinceTime
203 <<
" pointing to payload id " << firstPayloadId;
204 doStartTransaction();
211 editor.
insert(firstSinceTime, firstPayloadId);
225 m_logger.logInfo() <<
"Creating new tag " << myrecord.
m_tag <<
" for payload type " <<
payloadType
226 <<
", adding iov with since " << firstSinceTime;
231 editor.
insert(firstSinceTime, firstPayloadId);
240 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
244 "PoolDBOutputService::appendSinceTime");
247 doStartTransaction();
250 ret = appendSinceTime(payloadId,
time, myrecord);
261 m_logger.logInfo() <<
"Updating existing tag " << myrecord.
m_tag <<
", adding iov with since " <<
time;
278 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
282 "PoolDBOutputService::appendSinceTime");
284 m_logger.logInfo() <<
"Updating existing tag " << myrecord.
m_tag <<
", removing iov with since " << sinceTime
285 <<
" pointing to payload id " << payloadId;
286 doStartTransaction();
290 editor.
erase(sinceTime, payloadId);
302 std::map<std::string, Record>::iterator it = m_records.find(
recordName);
303 if (it == m_records.end()) {
305 "PoolDBOutputService::lookUpRecord");
311 std::map<std::string, cond::UserLogInfo>::iterator it = m_logheaders.find(
recordName);
312 if (it == m_logheaders.end())
314 " from PoolDBOutputService::lookUpUserLogInfo");
319 std::lock_guard<std::recursive_mutex>
lock(m_mutex);
323 "PoolDBOutputService::closeIOV");
325 m_logger.logInfo() <<
"Updating existing tag " << myrecord.
m_tag <<
", closing with end of validity " << lastTill;
326 doStartTransaction();
331 editor.
flush(
"Tag closed.");
350 m_logger.logDebug() <<
"Fetching tag info for " <<
record.m_tag;
351 doStartTransaction();
356 if (m_session.existsIov(
record.m_tag)) {
370 std::lock_guard<std::recursive_mutex>
lock(m_mutex);