CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
cond::service::PoolDBOutputService Class Reference

#include <PoolDBOutputService.h>

Inheritance diagram for cond::service::PoolDBOutputService:
cond::service::OnlineDBOutputService

Classes

struct  Record
 

Public Member Functions

template<typename T >
void appendOneIOV (const T &payload, cond::Time_t sinceTime, const std::string &recordName)
 
template<typename T >
void appendSinceTime (const T *payloadPtr, cond::Time_t sinceTime, const std::string &recordName)
 
bool appendSinceTime (const std::string &payloadId, cond::Time_t sinceTime, const std::string &recordName)
 
cond::Time_t beginOfTime () const
 
void closeIOV (Time_t lastTill, const std::string &recordName)
 
void commitTransaction ()
 
template<typename T >
void createNewIOV (const T *payloadPtr, cond::Time_t firstSinceTime, cond::Time_t, const std::string &recordName)
 
void createNewIOV (const std::string &firstPayloadId, cond::Time_t firstSinceTime, const std::string &recordName)
 
template<typename T >
void createOneIOV (const T &payload, cond::Time_t firstSinceTime, const std::string &recordName)
 
cond::Time_t currentTime () const
 
cond::Time_t endOfTime () const
 
void eraseSinceTime (const std::string &payloadId, cond::Time_t sinceTime, const std::string &recordName)
 
void forceInit ()
 
bool isNewTagRequest (const std::string &recordName)
 
void lockRecords ()
 
cond::persistency::Loggerlogger ()
 
cond::persistency::Session newReadOnlySession (const std::string &connectionString, const std::string &transactionId)
 
 PoolDBOutputService (const edm::ParameterSet &iConfig, edm::ActivityRegistry &iAR)
 
void postEndJob ()
 
void releaseLocks ()
 
cond::persistency::Session session () const
 
void setLogHeaderForRecord (const std::string &recordName, const std::string &provenance, const std::string &usertext)
 
void startTransaction ()
 
std::string tag (const std::string &recordName)
 
bool tagInfo (const std::string &recordName, cond::TagInfo_t &result)
 
template<typename T >
void writeMany (const std::map< Time_t, std::shared_ptr< T > > &iovAndPayloads, const std::string &recordName)
 
template<typename T >
Hash writeOne (const T *payloadPtr, Time_t time, const std::string &recordName)
 
template<typename T >
Hash writeOneIOV (const T &payload, Time_t time, const std::string &recordName)
 
virtual ~PoolDBOutputService ()
 

Private Member Functions

bool appendSinceTime (const std::string &payloadId, cond::Time_t sinceTime, Record &record)
 
void createNewIOV (const std::string &firstPayloadId, const std::string payloadType, cond::Time_t firstSinceTime, Record &record)
 
void doCommitTransaction ()
 
void doStartTransaction ()
 
void fillRecord (edm::ParameterSet &pset, const std::string &gTimeTypeStr)
 
bool getTagInfo (const std::string &recordName, cond::TagInfo_t &result)
 
void initDB ()
 
RecordlookUpRecord (const std::string &recordName)
 
cond::UserLogInfolookUpUserLogInfo (const std::string &recordName)
 
void postModuleEvent (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preEventProcessing (edm::StreamContext const &)
 
void preGlobalBeginLumi (edm::GlobalContext const &)
 
void preGlobalBeginRun (edm::GlobalContext const &)
 
void preModuleEvent (edm::StreamContext const &, edm::ModuleCallingContext const &)
 

Private Attributes

bool m_autoCommit
 
cond::persistency::ConnectionPool m_connection
 
std::vector< cond::Time_tm_currentTimes
 
bool m_dbInitialised
 
cond::persistency::Logger m_logger
 
std::map< std::string,
cond::UserLogInfo
m_logheaders
 
std::recursive_mutex m_mutex
 
std::map< std::string, Recordm_records
 
cond::persistency::Session m_session
 
cond::TimeType m_timetype
 
bool m_transactionActive
 
unsigned int m_writeTransactionDelay = 0
 

Detailed Description

Definition at line 33 of file PoolDBOutputService.h.

Constructor & Destructor Documentation

PoolDBOutputService::PoolDBOutputService ( const edm::ParameterSet iConfig,
edm::ActivityRegistry iAR 
)

Definition at line 37 of file PoolDBOutputService.cc.

38  : m_logger(iConfig.getUntrackedParameter<std::string>("jobName", "DBOutputService")),
40  m_session(),
41  m_transactionActive(false),
42  m_dbInitialised(false),
43  m_records(),
44  m_logheaders() {
45  std::string timetypestr = iConfig.getUntrackedParameter<std::string>("timetype", "runnumber");
47  m_autoCommit = iConfig.getUntrackedParameter<bool>("autoCommit", false);
48  m_writeTransactionDelay = iConfig.getUntrackedParameter<unsigned int>("writeTransactionDelay", 0);
49  edm::ParameterSet connectionPset = iConfig.getParameter<edm::ParameterSet>("DBParameters");
50  m_connection.setParameters(connectionPset);
54  m_session = m_connection.createSession(connectionString, true);
55  bool saveLogsOnDb = iConfig.getUntrackedParameter<bool>("saveLogsOnDB", false);
56  if (saveLogsOnDb)
57  m_logger.setDbDestination(connectionString);
58  // implicit start
60  typedef std::vector<edm::ParameterSet> Parameters;
61  Parameters toPut = iConfig.getParameter<Parameters>("toPut");
62  for (Parameters::iterator itToPut = toPut.begin(); itToPut != toPut.end(); ++itToPut)
63  fillRecord(*itToPut, timetypestr);
64 
66  iAR.watchPreallocate(
67  [this](edm::service::SystemBounds const& iBounds) { m_currentTimes.resize(iBounds.maxNumberOfStreams()); });
68  if (m_timetype == cond::timestamp) { //timestamp
72  } else if (m_timetype == cond::runnumber) { //runnumber
73  //NOTE: this assumes only one run is being processed at a time.
74  // This is true for 7_1_X but plan are to allow multiple in flight at a time
75  s_streamIndex = 0;
77  } else if (m_timetype == cond::lumiid) {
78  //NOTE: this assumes only one lumi is being processed at a time.
79  // This is true for 7_1_X but plan are to allow multiple in flight at a time
80  s_streamIndex = 0;
82  }
83 }
static thread_local int s_streamIndex
void setLogDestination(Logger &logger)
T getUntrackedParameter(std::string const &, T const &) const
void watchPreEvent(PreEvent::slot_type const &iSlot)
void watchPreallocate(Preallocate::slot_type const &iSlot)
void watchPostEndJob(PostEndJob::slot_type const &iSlot)
void preEventProcessing(edm::StreamContext const &)
void fillRecord(edm::ParameterSet &pset, const std::string &gTimeTypeStr)
void watchPreModuleEvent(PreModuleEvent::slot_type const &iSlot)
std::map< std::string, cond::UserLogInfo > m_logheaders
void watchPreGlobalBeginLumi(PreGlobalBeginLumi::slot_type const &iSlot)
std::vector< cond::Time_t > m_currentTimes
void watchPostModuleEvent(PostModuleEvent::slot_type const &iSlot)
void preGlobalBeginLumi(edm::GlobalContext const &)
void setParameters(const edm::ParameterSet &connectionPset)
unsigned int maxNumberOfStreams() const
Definition: SystemBounds.h:35
vector< ParameterSet > Parameters
TimeType timeTypeFromName(const std::string &name)
Definition: Time.cc:25
cond::persistency::ConnectionPool m_connection
Session createSession(const std::string &connectionString, bool writeCapable=false)
cond::persistency::Session m_session
std::map< std::string, Record > m_records
void watchPreGlobalBeginRun(PreGlobalBeginRun::slot_type const &iSlot)
cond::persistency::Logger m_logger
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
void preGlobalBeginRun(edm::GlobalContext const &)
void postModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
void setDbDestination(const std::string &connectionString)
Definition: Logger.cc:66
void preModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
PoolDBOutputService::~PoolDBOutputService ( )
virtual

Definition at line 199 of file PoolDBOutputService.cc.

199 {}

Member Function Documentation

template<typename T >
void cond::service::PoolDBOutputService::appendOneIOV ( const T payload,
cond::Time_t  sinceTime,
const std::string &  recordName 
)
inline

Definition at line 202 of file PoolDBOutputService.h.

References appendSinceTime(), doStartTransaction(), cppFunctionSkipper::exception, CommonMethods::lock(), lookUpRecord(), cond::service::PoolDBOutputService::Record::m_isNewTag, m_mutex, m_session, cond::service::PoolDBOutputService::Record::m_tag, cond::persistency::Session::storePayload(), AlCaHLTBitMon_QueryRunRegistry::string, cond::throwException(), and cond::persistency::Session::transaction().

Referenced by DBWriter::analyze(), SiStripPedestalsBuilder::analyze(), SiStripThresholdBuilder::analyze(), SiStripNoisesBuilder::analyze(), SiStripSummaryBuilder::analyze(), SiStripApvGainBuilder::analyze(), SiStripDetVOffFakeBuilder::analyze(), cms::SiPixelPerformanceSummaryBuilder::analyze(), SiPixelVCalDB::analyze(), SiPixelLorentzAngleDB::analyze(), SiPixelDynamicInefficiencyDB::analyze(), SiStripNoiseNormalizedWithApvGainBuilder::analyze(), SiStripApvGainBuilderFromTag::analyze(), SiPixelCalibConfigurationObjectMaker::analyze(), EcalTestDevDB::analyze(), SiStripFedCablingBuilder::beginRun(), SiPixelGainCalibScaler::computeAndStorePalyoads(), CocoaDBMgr::DumpCocoaResults(), BeamSpotWrite2DB::endJob(), StoreESCondition::endJob(), BeamSpotOnlineRecordsWriter::endJob(), StoreEcalCondition::endJob(), SiStripFedCablingManipulator::endRun(), SiPixelGainCalibrationReadDQMFile::fillDatabase(), SiPixelGainCalibrationRejectNoisyAndDead::fillDatabase(), SiStripBadChannelBuilder::getNewObject(), CaloGeometryDBWriter::write(), BeamFitter::write2DB(), and CaloGeometryDBWriter::writeIndexed().

202  {
203  std::lock_guard<std::recursive_mutex> lock(m_mutex);
204  Record& myrecord = this->lookUpRecord(recordName);
205  if (myrecord.m_isNewTag) {
206  cond::throwException(std::string("Cannot append to non-existing tag ") + myrecord.m_tag,
207  "PoolDBOutputService::appendSinceTime");
208  }
211  try {
212  appendSinceTime(m_session.storePayload(payload), sinceTime, myrecord);
213  } catch (const std::exception& er) {
214  cond::throwException(std::string(er.what()), "PoolDBOutputService::appendSinceTime");
215  }
216  scope.close();
217  }
tuple recordName
Definition: align_cfg.py:66
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
void appendSinceTime(const T *payloadPtr, cond::Time_t sinceTime, const std::string &recordName)
Record & lookUpRecord(const std::string &recordName)
cond::persistency::Session m_session
cond::Hash storePayload(const T &payload, const boost::posix_time::ptime &creationTime=boost::posix_time::microsec_clock::universal_time())
Definition: Session.h:186
template<typename T >
void cond::service::PoolDBOutputService::appendSinceTime ( const T payloadPtr,
cond::Time_t  sinceTime,
const std::string &  recordName 
)
inline

Definition at line 221 of file PoolDBOutputService.h.

References jetCorrFactors_cfi::payload, align_cfg::recordName, and cond::throwException().

Referenced by appendOneIOV(), PhysicsPerformanceDBWriterTFormula_fromfile_WPandPL::beginJob(), PhysicsPerformanceDBWriterFromFile_WPandPayload::beginJob(), PhysicsPerformanceDBWriterFromFile_WPandPayload_IOV::beginJob(), l1t::DataWriter::updateIOV(), l1t::DataWriterExt::updateIOV(), and writeOneIOV().

221  {
222  if (!payloadPtr)
223  throwException("Provided payload pointer is invalid.", "PoolDBOutputService::appendSinceTime");
224  std::unique_ptr<const T> payload(payloadPtr);
225  this->appendOneIOV<T>(*payload, sinceTime, recordName);
226  }
tuple recordName
Definition: align_cfg.py:66
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
bool PoolDBOutputService::appendSinceTime ( const std::string &  payloadId,
cond::Time_t  sinceTime,
const std::string &  recordName 
)

Definition at line 265 of file PoolDBOutputService.cc.

References cppFunctionSkipper::exception, CommonMethods::lock(), cond::service::PoolDBOutputService::Record::m_isNewTag, cond::service::PoolDBOutputService::Record::m_tag, runTheMatrix::ret, AlCaHLTBitMon_QueryRunRegistry::string, and cond::throwException().

267  {
268  std::lock_guard<std::recursive_mutex> lock(m_mutex);
269  Record& myrecord = this->lookUpRecord(recordName);
270  if (myrecord.m_isNewTag) {
271  cond::throwException(std::string("Cannot append to non-existing tag ") + myrecord.m_tag,
272  "PoolDBOutputService::appendSinceTime");
273  }
274  bool ret = false;
277  try {
278  ret = appendSinceTime(payloadId, time, myrecord);
279  } catch (const std::exception& er) {
280  cond::throwException(std::string(er.what()), "PoolDBOutputService::appendSinceTime");
281  }
282  scope.close();
283  return ret;
284 }
tuple ret
prodAgent to be discontinued
tuple recordName
Definition: align_cfg.py:66
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
void appendSinceTime(const T *payloadPtr, cond::Time_t sinceTime, const std::string &recordName)
Record & lookUpRecord(const std::string &recordName)
cond::persistency::Session m_session
bool PoolDBOutputService::appendSinceTime ( const std::string &  payloadId,
cond::Time_t  sinceTime,
Record record 
)
private

Definition at line 286 of file PoolDBOutputService.cc.

References a, cppFunctionSkipper::exception, cond::persistency::IOVEditor::flush(), cond::persistency::IOVEditor::insert(), cond::service::PoolDBOutputService::Record::m_idName, cond::service::PoolDBOutputService::Record::m_tag, AlCaHLTBitMon_QueryRunRegistry::string, cond::throwException(), and cond::UserLogInfo::usertext.

288  {
289  m_logger.logInfo() << "Updating existing tag " << myrecord.m_tag << ", adding iov with since " << time;
290  try {
291  cond::persistency::IOVEditor editor = m_session.editIov(myrecord.m_tag);
292  editor.insert(time, payloadId);
293  cond::UserLogInfo a = this->lookUpUserLogInfo(myrecord.m_idName);
294  editor.flush(a.usertext);
295  } catch (const std::exception& er) {
296  cond::throwException(std::string(er.what()), "PoolDBOutputService::appendSinceTime");
297  }
298  return true;
299 }
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
cond::persistency::Session m_session
cond::persistency::Logger m_logger
IOVEditor editIov(const std::string &tag)
Definition: Session.cc:130
void insert(cond::Time_t since, const cond::Hash &payloadHash, bool checkType=false)
Definition: IOVEditor.cc:159
std::string usertext
Definition: Types.h:24
double a
Definition: hdecay.h:119
EchoedLogStream< edm::LogInfo > logInfo()
Definition: Logger.cc:157
cond::UserLogInfo & lookUpUserLogInfo(const std::string &recordName)
cond::Time_t PoolDBOutputService::beginOfTime ( ) const

Definition at line 215 of file PoolDBOutputService.cc.

References cond::TimeTypeSpecs::beginValue, and cond::timeTypeSpecs.

Referenced by DBWriter::analyze(), L1KeyListWriter::analyze(), L1KeyWriter::analyze(), L1TMuonOverlapParamsWriter::analyze(), L1TCaloParamsUpdater::analyze(), SiStripPedestalsBuilder::analyze(), SiStripThresholdBuilder::analyze(), L1TCaloStage2ParamsWriter::analyze(), L1TGlobalPrescalesVetosWriter::analyze(), L1TMuonGlobalParamsWriter::analyze(), SiStripNoisesBuilder::analyze(), SiStripSummaryBuilder::analyze(), L1MenuWriter::analyze(), L1TMuonEndCapForestWriter::analyze(), L1TMuonEndCapParamsWriter::analyze(), SiStripApvGainBuilder::analyze(), L1TMuonBarrelParamsWriter::analyze(), SurveyInputTrackerFromDB::analyze(), L1TMuonOverlapFwVersionTester::analyze(), EcalPFRecHitThresholdsMaker::analyze(), SiStripDetVOffFakeBuilder::analyze(), GBRForestWriter::analyze(), cms::SiPixelPerformanceSummaryBuilder::analyze(), PPSGeometryBuilder::analyze(), SiPixelLorentzAngleDB::analyze(), SiPixelVCalDB::analyze(), SiPixelDynamicInefficiencyDB::analyze(), SiStripNoiseNormalizedWithApvGainBuilder::analyze(), SiStripApvGainBuilderFromTag::analyze(), SiPixelGenErrorDBObjectUploader::analyze(), SiPixel2DTemplateDBObjectUploader::analyze(), SiPixelCalibConfigurationObjectMaker::analyze(), SiPixelTemplateDBObjectUploader::analyze(), EcalTestDevDB::analyze(), TrackerGeometryCompare::analyze(), TrackerSystematicMisalignments::analyze(), BTagCalibrationDbCreator::beginJob(), PhysicsPerformanceDBWriterTFormula_fromfile_WPandPL::beginJob(), PhysicsPerformanceDBWriterFromFile_WPandPayload::beginJob(), JetResolutionDBWriter::beginJob(), JetCorrectorDBWriter::beginJob(), XMLGeometryBuilder::beginJob(), QGLikelihoodSystematicsDBWriter::beginJob(), QGLikelihoodDBWriter::beginJob(), PTrackerAdditionalParametersPerDetDBBuilder::beginRun(), PTrackerParametersDBBuilder::beginRun(), HcalParametersDBBuilder::beginRun(), RPCRecoIdealDBLoader::beginRun(), CSCRecoIdealDBLoader::beginRun(), ME0RecoIdealDBLoader::beginRun(), PHGCalParametersDBBuilder::beginRun(), DTRecoIdealDBLoader::beginRun(), GEMRecoIdealDBLoader::beginRun(), PGeometricDetBuilder::beginRun(), SiStripFedCablingBuilder::beginRun(), SiPixelGainCalibScaler::computeAndStorePalyoads(), ESDBCopy::copyToDB(), EcalTPGDBCopy::copyToDB(), EcalDBCopy::copyToDB(), SiStripBadStripFromQualityDBWriter::dqmEndJob(), CocoaDBMgr::DumpCocoaResults(), BeamSpotWrite2DB::endJob(), StoreESCondition::endJob(), BeamProfile2DB::endJob(), BeamSpotOnlineRecordsWriter::endJob(), StoreEcalCondition::endJob(), SiStripFedCablingManipulator::endRun(), DummyCondDBWriter< TObject, TObjectO, TRecord >::endRun(), LaserAlignment::endRunProduce(), SiPixelGainCalibrationReadDQMFile::fillDatabase(), SiPixelGainCalibrationRejectNoisyAndDead::fillDatabase(), SiStripBadChannelBuilder::getNewObject(), EcalLaserCondTools::processIov(), MuonMisalignedProducer::saveToDB(), ConditionDBWriter< SiStripApvGain >::storeOnDb(), l1t::DataWriter::updateIOV(), l1t::DataWriterExt::updateIOV(), CaloGeometryDBWriter::write(), BeamFitter::write2DB(), CaloGeometryDBWriter::writeIndexed(), and DTCalibDBUtils::writeToDB().

const TimeTypeSpecs timeTypeSpecs[]
Definition: Time.cc:16
Time_t beginValue
Definition: Time.h:41
void PoolDBOutputService::closeIOV ( Time_t  lastTill,
const std::string &  recordName 
)

Definition at line 344 of file PoolDBOutputService.cc.

References cppFunctionSkipper::exception, cond::persistency::IOVEditor::flush(), CommonMethods::lock(), cond::service::PoolDBOutputService::Record::m_isNewTag, cond::service::PoolDBOutputService::Record::m_tag, cond::persistency::IOVEditor::setEndOfValidity(), AlCaHLTBitMon_QueryRunRegistry::string, and cond::throwException().

Referenced by popcon::PopCon::finalize().

344  {
345  std::lock_guard<std::recursive_mutex> lock(m_mutex);
346  Record& myrecord = lookUpRecord(recordName);
347  if (myrecord.m_isNewTag) {
348  cond::throwException(std::string("Cannot close non-existing tag ") + myrecord.m_tag,
349  "PoolDBOutputService::closeIOV");
350  }
351  m_logger.logInfo() << "Updating existing tag " << myrecord.m_tag << ", closing with end of validity " << lastTill;
354  try {
355  cond::persistency::IOVEditor editor = m_session.editIov(myrecord.m_tag);
356  editor.setEndOfValidity(lastTill);
357  editor.flush("Tag closed.");
358  } catch (const std::exception& er) {
359  cond::throwException(std::string(er.what()), "PoolDBOutputService::closeIOV");
360  }
361  scope.close();
362 }
tuple recordName
Definition: align_cfg.py:66
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
Record & lookUpRecord(const std::string &recordName)
cond::persistency::Session m_session
cond::persistency::Logger m_logger
IOVEditor editIov(const std::string &tag)
Definition: Session.cc:130
void setEndOfValidity(cond::Time_t validity)
Definition: IOVEditor.cc:129
EchoedLogStream< edm::LogInfo > logInfo()
Definition: Logger.cc:157
void PoolDBOutputService::commitTransaction ( )

Definition at line 152 of file PoolDBOutputService.cc.

References CommonMethods::lock().

Referenced by cond::service::OnlineDBOutputService::writeIOVForNextLumisection().

152  {
153  std::lock_guard<std::recursive_mutex> lock(m_mutex);
155 }
template<typename T >
void cond::service::PoolDBOutputService::createNewIOV ( const T payloadPtr,
cond::Time_t  firstSinceTime,
cond::Time_t  ,
const std::string &  recordName 
)
inline

Definition at line 194 of file PoolDBOutputService.h.

References jetCorrFactors_cfi::payload, align_cfg::recordName, and cond::throwException().

Referenced by PhysicsPerformanceDBWriterTFormula_fromfile_WPandPL::beginJob(), PhysicsPerformanceDBWriterFromFile_WPandPayload_IOV::beginJob(), PhysicsPerformanceDBWriterFromFile_WPandPayload::beginJob(), createOneIOV(), l1t::DataWriterExt::updateIOV(), l1t::DataWriter::updateIOV(), and writeOneIOV().

194  {
195  if (!payloadPtr)
196  throwException("Provided payload pointer is invalid.", "PoolDBOutputService::createNewIOV");
197  std::unique_ptr<const T> payload(payloadPtr);
198  this->createOneIOV<T>(*payload, firstSinceTime, recordName);
199  }
tuple recordName
Definition: align_cfg.py:66
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
void PoolDBOutputService::createNewIOV ( const std::string &  firstPayloadId,
cond::Time_t  firstSinceTime,
const std::string &  recordName 
)

Definition at line 222 of file PoolDBOutputService.cc.

References a, cppFunctionSkipper::exception, cond::persistency::IOVEditor::flush(), cond::persistency::IOVEditor::insert(), CommonMethods::lock(), cond::service::PoolDBOutputService::Record::m_idName, cond::service::PoolDBOutputService::Record::m_isNewTag, cond::service::PoolDBOutputService::Record::m_tag, cond::service::PoolDBOutputService::Record::m_timetype, cond::persistency::IOVEditor::setDescription(), AlCaHLTBitMon_QueryRunRegistry::string, cond::SYNCH_ANY, cond::throwException(), and cond::UserLogInfo::usertext.

224  {
225  std::lock_guard<std::recursive_mutex> lock(m_mutex);
226  Record& myrecord = this->lookUpRecord(recordName);
227  if (!myrecord.m_isNewTag) {
228  cond::throwException(myrecord.m_tag + " is not a new tag", "PoolDBOutputService::createNewIOV");
229  }
230  m_logger.logInfo() << "Creating new tag " << myrecord.m_tag << ", adding iov with since " << firstSinceTime
231  << " pointing to payload id " << firstPayloadId;
234  try {
235  this->initDB();
237  m_session.createIovForPayload(firstPayloadId, myrecord.m_tag, myrecord.m_timetype, cond::SYNCH_ANY);
238  editor.setDescription("New Tag");
239  editor.insert(firstSinceTime, firstPayloadId);
240  cond::UserLogInfo a = this->lookUpUserLogInfo(myrecord.m_idName);
241  editor.flush(a.usertext);
242  myrecord.m_isNewTag = false;
243  } catch (const std::exception& er) {
244  cond::throwException(std::string(er.what()), "PoolDBOutputService::createNewIov");
245  }
246  scope.close();
247 }
void setDescription(const std::string &description)
Definition: IOVEditor.cc:139
tuple recordName
Definition: align_cfg.py:66
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
Record & lookUpRecord(const std::string &recordName)
cond::persistency::Session m_session
cond::persistency::Logger m_logger
void insert(cond::Time_t since, const cond::Hash &payloadHash, bool checkType=false)
Definition: IOVEditor.cc:159
std::string usertext
Definition: Types.h:24
double a
Definition: hdecay.h:119
IOVEditor createIovForPayload(const Hash &payloadHash, const std::string &tag, cond::TimeType timeType, cond::SynchronizationType synchronizationType=cond::SYNCH_ANY)
Definition: Session.cc:114
EchoedLogStream< edm::LogInfo > logInfo()
Definition: Logger.cc:157
cond::UserLogInfo & lookUpUserLogInfo(const std::string &recordName)
void PoolDBOutputService::createNewIOV ( const std::string &  firstPayloadId,
const std::string  payloadType,
cond::Time_t  firstSinceTime,
Record record 
)
private

Definition at line 249 of file PoolDBOutputService.cc.

References a, cond::persistency::IOVEditor::flush(), cond::persistency::IOVEditor::insert(), cond::service::PoolDBOutputService::Record::m_idName, cond::service::PoolDBOutputService::Record::m_isNewTag, cond::service::PoolDBOutputService::Record::m_tag, cond::service::PoolDBOutputService::Record::m_timetype, cond::persistency::IOVEditor::setDescription(), cond::SYNCH_ANY, and cond::UserLogInfo::usertext.

252  {
253  m_logger.logInfo() << "Creating new tag " << myrecord.m_tag << " for payload type " << payloadType
254  << ", adding iov with since " << firstSinceTime;
255  // FIX ME: synchronization type and description have to be passed as the other parameters?
257  m_session.createIov(payloadType, myrecord.m_tag, myrecord.m_timetype, cond::SYNCH_ANY);
258  editor.setDescription("New Tag");
259  editor.insert(firstSinceTime, firstPayloadId);
260  cond::UserLogInfo a = this->lookUpUserLogInfo(myrecord.m_idName);
261  editor.flush(a.usertext);
262  myrecord.m_isNewTag = false;
263 }
IOVEditor createIov(const std::string &tag, cond::TimeType timeType, cond::SynchronizationType synchronizationType=cond::SYNCH_ANY)
Definition: Session.h:179
void setDescription(const std::string &description)
Definition: IOVEditor.cc:139
cond::persistency::Session m_session
cond::persistency::Logger m_logger
void insert(cond::Time_t since, const cond::Hash &payloadHash, bool checkType=false)
Definition: IOVEditor.cc:159
std::string usertext
Definition: Types.h:24
double a
Definition: hdecay.h:119
EchoedLogStream< edm::LogInfo > logInfo()
Definition: Logger.cc:157
cond::UserLogInfo & lookUpUserLogInfo(const std::string &recordName)
template<typename T >
void cond::service::PoolDBOutputService::createOneIOV ( const T payload,
cond::Time_t  firstSinceTime,
const std::string &  recordName 
)
inline

Definition at line 174 of file PoolDBOutputService.h.

References createNewIOV(), doStartTransaction(), cppFunctionSkipper::exception, initDB(), CommonMethods::lock(), lookUpRecord(), cond::service::PoolDBOutputService::Record::m_isNewTag, m_mutex, m_session, cond::service::PoolDBOutputService::Record::m_tag, cond::persistency::Session::storePayload(), AlCaHLTBitMon_QueryRunRegistry::string, cond::throwException(), and cond::persistency::Session::transaction().

Referenced by SiStripApvSimulationParametersBuilder::analyze(), DBWriter::analyze(), SiStripPedestalsBuilder::analyze(), SiStripThresholdBuilder::analyze(), SiStripNoisesBuilder::analyze(), SiStripSummaryBuilder::analyze(), SiStripApvGainBuilder::analyze(), EcalPFRecHitThresholdsMaker::analyze(), SiStripDetVOffFakeBuilder::analyze(), cms::SiPixelPerformanceSummaryBuilder::analyze(), SiPixelLorentzAngleDB::analyze(), SiPixelVCalDB::analyze(), SiPixelDynamicInefficiencyDB::analyze(), SiStripNoiseNormalizedWithApvGainBuilder::analyze(), SiStripApvGainBuilderFromTag::analyze(), SiPixelCalibConfigurationObjectMaker::analyze(), EcalTestDevDB::analyze(), SiStripChannelGainFromDBMiscalibrator::analyze(), SiStripNoisesFromDBMiscalibrator::analyze(), XMLGeometryBuilder::beginJob(), PTrackerAdditionalParametersPerDetDBBuilder::beginRun(), PTrackerParametersDBBuilder::beginRun(), HcalParametersDBBuilder::beginRun(), ME0RecoIdealDBLoader::beginRun(), PHGCalParametersDBBuilder::beginRun(), RPCRecoIdealDBLoader::beginRun(), CSCRecoIdealDBLoader::beginRun(), DTRecoIdealDBLoader::beginRun(), GEMRecoIdealDBLoader::beginRun(), PGeometricDetBuilder::beginRun(), SiStripFedCablingBuilder::beginRun(), SiPixelGainCalibScaler::computeAndStorePalyoads(), ESDBCopy::copyToDB(), EcalTPGDBCopy::copyToDB(), EcalDBCopy::copyToDB(), CocoaDBMgr::DumpCocoaResults(), BeamSpotWrite2DB::endJob(), StoreESCondition::endJob(), BeamProfile2DB::endJob(), BeamSpotOnlineRecordsWriter::endJob(), StoreEcalCondition::endJob(), SiStripFedCablingManipulator::endRun(), SiPixelGainCalibrationReadDQMFile::fillDatabase(), SiPixelGainCalibrationRejectNoisyAndDead::fillDatabase(), SiStripBadChannelBuilder::getNewObject(), CaloGeometryDBWriter::write(), BeamFitter::write2DB(), and CaloGeometryDBWriter::writeIndexed().

174  {
175  std::lock_guard<std::recursive_mutex> lock(m_mutex);
176  Record& myrecord = this->lookUpRecord(recordName);
177  if (!myrecord.m_isNewTag) {
178  cond::throwException(myrecord.m_tag + " is not a new tag", "PoolDBOutputService::createNewIOV");
179  }
182  try {
183  this->initDB();
184  Hash payloadId = m_session.storePayload(payload);
185  createNewIOV(payloadId, cond::demangledName(typeid(payload)), firstSinceTime, myrecord);
186  } catch (const std::exception& er) {
187  cond::throwException(std::string(er.what()), "PoolDBOutputService::createNewIov");
188  }
189  scope.close();
190  }
tuple recordName
Definition: align_cfg.py:66
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
Record & lookUpRecord(const std::string &recordName)
std::string Hash
Definition: Types.h:43
cond::persistency::Session m_session
cond::Hash storePayload(const T &payload, const boost::posix_time::ptime &creationTime=boost::posix_time::microsec_clock::universal_time())
Definition: Session.h:186
void createNewIOV(const T *payloadPtr, cond::Time_t firstSinceTime, cond::Time_t, const std::string &recordName)
cond::Time_t PoolDBOutputService::currentTime ( ) const

Definition at line 217 of file PoolDBOutputService.cc.

References cms::cuda::assert(), and s_streamIndex.

Referenced by DBWriter::analyze(), L1MuonOverlapParamsDBProducer::analyze(), SiStripPedestalsBuilder::analyze(), SiStripThresholdBuilder::analyze(), SiStripSummaryBuilder::analyze(), SiStripNoisesBuilder::analyze(), L1MuonOverlapPhase1ParamsDBProducer::analyze(), SiStripApvGainBuilder::analyze(), WritePPSAlignmentConfig::analyze(), WritePPSAlignmentConfiguration::analyze(), WritePPSAssociationCuts::analyze(), SiStripDetVOffFakeBuilder::analyze(), cms::SiPixelPerformanceSummaryBuilder::analyze(), SiPixelLorentzAngleDB::analyze(), SiPixelVCalDB::analyze(), BufferedBoostIODBWriter::analyze(), SiPixelDynamicInefficiencyDB::analyze(), PPSTimingCalibrationWriter::analyze(), SiStripNoiseNormalizedWithApvGainBuilder::analyze(), SiStripApvGainBuilderFromTag::analyze(), SiPixelGenErrorDBObjectUploader::analyze(), SiPixel2DTemplateDBObjectUploader::analyze(), SiPixelCalibConfigurationObjectMaker::analyze(), SiPixelTemplateDBObjectUploader::analyze(), EcalSCDynamicDPhiParametersMaker::analyze(), EcalMustacheSCParametersMaker::analyze(), AlignPCLThresholdsWriter::analyze(), FFTJetCorrectorDBWriter::analyze(), BoostIODBWriter< DataType >::analyze(), JetResolutionDBWriter::beginJob(), SiStripFedCablingBuilder::beginRun(), PPSDiamondSampicTimingCalibrationPCLHarvester::calibDb(), SiPixelGainCalibScaler::computeAndStorePalyoads(), SiStripBadStripFromQualityDBWriter::dqmEndJob(), PPSTimingCalibrationPCLHarvester::dqmEndJob(), ECALpedestalPCLHarvester::dqmEndJob(), SiStripGainsPCLHarvester::dqmEndJob(), SiPixelLorentzAnglePCLHarvester::dqmEndJob(), PPSAlignmentHarvester::dqmEndRun(), CocoaDBMgr::DumpCocoaResults(), SurveyDBUploader::endJob(), BeamSpotWrite2DB::endJob(), CentralityTableProducer::endJob(), Mixing2DB::endJob(), BeamSpotOnlineRecordsWriter::endJob(), SiStripFedCablingManipulator::endRun(), DummyCondDBWriter< TObject, TObjectO, TRecord >::endRun(), SiPixelGainCalibrationReadDQMFile::fillDatabase(), SiPixelGainCalibrationRejectNoisyAndDead::fillDatabase(), WriteCTPPSPixGainCalibrations::fillDB(), SiStripBadChannelBuilder::getNewObject(), popcon::L1RPCHwConfigSourceHandler::getNewObjects(), popcon::RPCEMapSourceHandler::getNewObjects(), MisalignedTrackerESProducer::produce(), MuonAlignment::saveCSCSurveyToDB(), MuonAlignment::saveCSCtoDB(), MuonAlignment::saveDTSurveyToDB(), MuonAlignment::saveDTtoDB(), MuonAlignment::saveGEMtoDB(), TrackerAlignment::saveToDB(), ConditionDBWriter< SiStripApvGain >::setTime(), CaloGeometryDBWriter::write(), WriteESAlignments::write(), BeamFitter::write2DB(), GlobalTrackerMuonAlignment::writeGlPosRcd(), CaloGeometryDBWriter::writeIndexed(), and DTCalibDBUtils::writeToDB().

217  {
218  assert(-1 != s_streamIndex);
220 }
static thread_local int s_streamIndex
std::vector< cond::Time_t > m_currentTimes
assert(be >=bs)
void PoolDBOutputService::doCommitTransaction ( )
private

Definition at line 140 of file PoolDBOutputService.cc.

Referenced by writeMany(), and writeOneIOV().

140  {
141  if (m_transactionActive) {
143  m_transactionActive = false;
144  }
145 }
Transaction & transaction()
Definition: Session.cc:52
cond::persistency::Session m_session
void PoolDBOutputService::doStartTransaction ( )
private

Definition at line 133 of file PoolDBOutputService.cc.

Referenced by appendOneIOV(), createOneIOV(), writeMany(), and writeOneIOV().

133  {
134  if (!m_transactionActive) {
135  m_session.transaction().start(false);
136  m_transactionActive = true;
137  }
138 }
void start(bool readOnly=true)
Definition: Session.cc:18
Transaction & transaction()
Definition: Session.cc:52
cond::persistency::Session m_session
cond::Time_t PoolDBOutputService::endOfTime ( ) const
void PoolDBOutputService::eraseSinceTime ( const std::string &  payloadId,
cond::Time_t  sinceTime,
const std::string &  recordName 
)

Definition at line 301 of file PoolDBOutputService.cc.

References a, cond::persistency::IOVEditor::erase(), cppFunctionSkipper::exception, cond::persistency::IOVEditor::flush(), CommonMethods::lock(), cond::service::PoolDBOutputService::Record::m_isNewTag, cond::service::PoolDBOutputService::Record::m_tag, AlCaHLTBitMon_QueryRunRegistry::string, cond::throwException(), and cond::UserLogInfo::usertext.

Referenced by cond::service::OnlineDBOutputService::writeIOVForNextLumisection().

303  {
304  std::lock_guard<std::recursive_mutex> lock(m_mutex);
305  Record& myrecord = this->lookUpRecord(recordName);
306  if (myrecord.m_isNewTag) {
307  cond::throwException(std::string("Cannot delete from non-existing tag ") + myrecord.m_tag,
308  "PoolDBOutputService::appendSinceTime");
309  }
310  m_logger.logInfo() << "Updating existing tag " << myrecord.m_tag << ", removing iov with since " << sinceTime
311  << " pointing to payload id " << payloadId;
314  try {
315  cond::persistency::IOVEditor editor = m_session.editIov(myrecord.m_tag);
316  editor.erase(sinceTime, payloadId);
318  editor.flush(a.usertext);
319 
320  } catch (const std::exception& er) {
321  cond::throwException(std::string(er.what()), "PoolDBOutputService::eraseSinceTime");
322  }
323  scope.close();
324 }
tuple recordName
Definition: align_cfg.py:66
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
Record & lookUpRecord(const std::string &recordName)
cond::persistency::Session m_session
void erase(cond::Time_t since, const cond::Hash &payloadHash)
Definition: IOVEditor.cc:174
cond::persistency::Logger m_logger
IOVEditor editIov(const std::string &tag)
Definition: Session.cc:130
std::string usertext
Definition: Types.h:24
double a
Definition: hdecay.h:119
EchoedLogStream< edm::LogInfo > logInfo()
Definition: Logger.cc:157
cond::UserLogInfo & lookUpUserLogInfo(const std::string &recordName)
void PoolDBOutputService::fillRecord ( edm::ParameterSet pset,
const std::string &  gTimeTypeStr 
)
private

Definition at line 20 of file PoolDBOutputService.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), cond::service::PoolDBOutputService::Record::m_idName, m_logheaders, cond::service::PoolDBOutputService::Record::m_onlyAppendUpdatePolicy, m_records, cond::service::PoolDBOutputService::Record::m_tag, cond::service::PoolDBOutputService::Record::m_timetype, AlCaHLTBitMon_QueryRunRegistry::string, and cond::time::timeTypeFromName().

20  {
21  Record thisrecord;
22 
23  thisrecord.m_idName = recordPset.getParameter<std::string>("record");
24  thisrecord.m_tag = recordPset.getParameter<std::string>("tag");
25 
26  thisrecord.m_timetype =
27  cond::time::timeTypeFromName(recordPset.getUntrackedParameter<std::string>("timetype", gTimeTypeStr));
28 
29  thisrecord.m_onlyAppendUpdatePolicy = recordPset.getUntrackedParameter<bool>("onlyAppendUpdatePolicy", false);
30 
31  m_records.insert(std::make_pair(thisrecord.m_idName, thisrecord));
32 
33  cond::UserLogInfo userloginfo;
34  m_logheaders.insert(std::make_pair(thisrecord.m_idName, userloginfo));
35 }
std::map< std::string, cond::UserLogInfo > m_logheaders
TimeType timeTypeFromName(const std::string &name)
Definition: Time.cc:25
std::map< std::string, Record > m_records
void PoolDBOutputService::forceInit ( )

Definition at line 201 of file PoolDBOutputService.cc.

References cppFunctionSkipper::exception, CommonMethods::lock(), AlCaHLTBitMon_QueryRunRegistry::string, and cond::throwException().

Referenced by popcon::PopCon::initialize(), l1t::DataWriterExt::readObject(), l1t::WriterProxyT< Record, Type >::save(), and l1t::DataWriterExt::writeKeyList().

201  {
202  std::lock_guard<std::recursive_mutex> lock(m_mutex);
205  try {
206  initDB();
207  } catch (const std::exception& er) {
208  cond::throwException(std::string(er.what()), "PoolDBOutputService::forceInit");
209  }
210  scope.close();
211 }
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
cond::persistency::Session m_session
bool PoolDBOutputService::getTagInfo ( const std::string &  recordName,
cond::TagInfo_t result 
)
private

Definition at line 373 of file PoolDBOutputService.cc.

References cppFunctionSkipper::exception, cond::persistency::IOVProxy::getLast(), cond::TagInfo_t::lastInterval, cond::service::PoolDBOutputService::Record::m_tag, cond::TagInfo_t::name, GlobalPosition_Frontier_DevDB_cff::record, runTheMatrix::ret, AlCaHLTBitMon_QueryRunRegistry::string, and cond::throwException().

Referenced by writeMany(), and writeOneIOV().

373  {
375  result.name = record.m_tag;
376  m_logger.logDebug() << "Fetching tag info for " << record.m_tag;
378  bool ret = false;
380  try {
381  //use iovproxy to find out.
382  if (m_session.existsIov(record.m_tag)) {
383  cond::persistency::IOVProxy iov = m_session.readIov(record.m_tag);
384  result.lastInterval = iov.getLast();
385  ret = true;
386  }
387  } catch (const std::exception& er) {
388  cond::throwException(std::string(er.what()), "PoolDBOutputService::tagInfo");
389  }
390  scope.close();
391  return ret;
392 }
tuple ret
prodAgent to be discontinued
Iov_t lastInterval
Definition: Types.h:73
tuple recordName
Definition: align_cfg.py:66
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
std::string name
Definition: Types.h:72
Record & lookUpRecord(const std::string &recordName)
cond::persistency::Session m_session
IOVProxy readIov(const std::string &tag)
Definition: Session.cc:63
cond::persistency::Logger m_logger
EchoedLogStream< edm::LogDebug_ > logDebug()
Definition: Logger.cc:161
bool existsIov(const std::string &tag)
Definition: Session.cc:77
void PoolDBOutputService::initDB ( )
private

Definition at line 157 of file PoolDBOutputService.cc.

Referenced by createOneIOV(), writeMany(), and writeOneIOV().

157  {
158  if (!m_dbInitialised) {
159  if (!m_session.existsDatabase())
161  else {
162  for (auto& iR : m_records) {
163  if (m_session.existsIov(iR.second.m_tag))
164  iR.second.m_isNewTag = false;
165  }
166  }
167  m_dbInitialised = true;
168  }
169 }
cond::persistency::Session m_session
std::map< std::string, Record > m_records
bool existsIov(const std::string &tag)
Definition: Session.cc:77
bool PoolDBOutputService::isNewTagRequest ( const std::string &  recordName)

Definition at line 128 of file PoolDBOutputService.cc.

References cond::service::PoolDBOutputService::Record::m_isNewTag.

Referenced by DBWriter::analyze(), SiStripThresholdBuilder::analyze(), SiStripPedestalsBuilder::analyze(), SiStripNoisesBuilder::analyze(), SiStripSummaryBuilder::analyze(), SiStripApvGainBuilder::analyze(), SiStripDetVOffFakeBuilder::analyze(), cms::SiPixelPerformanceSummaryBuilder::analyze(), SiPixelVCalDB::analyze(), SiPixelLorentzAngleDB::analyze(), SiPixelDynamicInefficiencyDB::analyze(), SiStripNoiseNormalizedWithApvGainBuilder::analyze(), SiStripApvGainBuilderFromTag::analyze(), SiPixelGenErrorDBObjectUploader::analyze(), SiPixelTemplateDBObjectUploader::analyze(), SiPixel2DTemplateDBObjectUploader::analyze(), SiPixelCalibConfigurationObjectMaker::analyze(), EcalTestDevDB::analyze(), PhysicsPerformanceDBWriterTFormula_fromfile_WPandPL::beginJob(), PhysicsPerformanceDBWriterFromFile_WPandPayload::beginJob(), PhysicsPerformanceDBWriterFromFile_WPandPayload_IOV::beginJob(), JetResolutionDBWriter::beginJob(), XMLGeometryBuilder::beginJob(), PTrackerAdditionalParametersPerDetDBBuilder::beginRun(), PTrackerParametersDBBuilder::beginRun(), HcalParametersDBBuilder::beginRun(), ME0RecoIdealDBLoader::beginRun(), RPCRecoIdealDBLoader::beginRun(), PHGCalParametersDBBuilder::beginRun(), CSCRecoIdealDBLoader::beginRun(), DTRecoIdealDBLoader::beginRun(), GEMRecoIdealDBLoader::beginRun(), PGeometricDetBuilder::beginRun(), SiStripFedCablingBuilder::beginRun(), SiPixelGainCalibScaler::computeAndStorePalyoads(), CocoaDBMgr::DumpCocoaResults(), BeamSpotWrite2DB::endJob(), StoreESCondition::endJob(), BeamSpotOnlineRecordsWriter::endJob(), StoreEcalCondition::endJob(), SiStripFedCablingManipulator::endRun(), AlcaBeamSpotHarvester::endRun(), SiPixelGainCalibrationReadDQMFile::fillDatabase(), SiPixelGainCalibrationRejectNoisyAndDead::fillDatabase(), SiStripBadChannelBuilder::getNewObject(), EcalLaserCondTools::processIov(), ConditionDBWriter< SiStripApvGain >::storeOnDb(), l1t::DataWriterExt::updateIOV(), l1t::DataWriter::updateIOV(), CaloGeometryDBWriter::write(), BeamFitter::write2DB(), CaloGeometryDBWriter::writeIndexed(), writeMany(), writeOneIOV(), and DTCalibDBUtils::writeToDB().

128  {
129  Record& myrecord = this->lookUpRecord(recordName);
130  return myrecord.m_isNewTag;
131 }
tuple recordName
Definition: align_cfg.py:66
Record & lookUpRecord(const std::string &recordName)
void PoolDBOutputService::lockRecords ( )

Definition at line 94 of file PoolDBOutputService.cc.

References CommonMethods::lock(), and cond::persistency::IOVEditor::lock().

Referenced by BeamMonitor::dqmBeginRun(), and FakeBeamMonitor::dqmBeginRun().

94  {
95  std::lock_guard<std::recursive_mutex> lock(m_mutex);
98  this->initDB();
99  for (auto& iR : m_records) {
100  if (iR.second.m_isNewTag == false) {
101  cond::persistency::IOVEditor editor = m_session.editIov(iR.second.m_tag);
102  editor.lock();
103  }
104  }
106  scope.close();
107 }
Transaction & transaction()
Definition: Session.cc:52
cond::persistency::Session m_session
std::map< std::string, Record > m_records
IOVEditor editIov(const std::string &tag)
Definition: Session.cc:130
cond::persistency::Logger& cond::service::PoolDBOutputService::logger ( )
inline
cond::service::PoolDBOutputService::Record & PoolDBOutputService::lookUpRecord ( const std::string &  recordName)
private

Definition at line 326 of file PoolDBOutputService.cc.

References cond::throwException().

Referenced by appendOneIOV(), createOneIOV(), writeMany(), and writeOneIOV().

327  {
328  std::map<std::string, Record>::iterator it = m_records.find(recordName);
329  if (it == m_records.end()) {
330  cond::throwException("The record \"" + recordName + "\" has not been registered.",
331  "PoolDBOutputService::lookUpRecord");
332  }
333  return it->second;
334 }
tuple recordName
Definition: align_cfg.py:66
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
std::map< std::string, Record > m_records
cond::UserLogInfo & PoolDBOutputService::lookUpUserLogInfo ( const std::string &  recordName)
private

Definition at line 336 of file PoolDBOutputService.cc.

Referenced by writeMany().

336  {
337  std::map<std::string, cond::UserLogInfo>::iterator it = m_logheaders.find(recordName);
338  if (it == m_logheaders.end())
339  throw cond::Exception("Log db was not set for record " + recordName +
340  " from PoolDBOutputService::lookUpUserLogInfo");
341  return it->second;
342 }
Base exception class for the object to relational access.
Definition: Exception.h:11
std::map< std::string, cond::UserLogInfo > m_logheaders
tuple recordName
Definition: align_cfg.py:66
cond::persistency::Session PoolDBOutputService::newReadOnlySession ( const std::string &  connectionString,
const std::string &  transactionId 
)

Definition at line 85 of file PoolDBOutputService.cc.

References runTheMatrix::ret.

Referenced by cond::service::OnlineDBOutputService::getReadOnlyCache().

86  {
89  return ret;
90 }
tuple ret
prodAgent to be discontinued
cond::persistency::ConnectionPool m_connection
Session createReadOnlySession(const std::string &connectionString, const std::string &transactionId)
void PoolDBOutputService::postEndJob ( )

Definition at line 171 of file PoolDBOutputService.cc.

void PoolDBOutputService::postModuleEvent ( edm::StreamContext const &  iContext,
edm::ModuleCallingContext const &   
)
private

Definition at line 182 of file PoolDBOutputService.cc.

References s_streamIndex.

183  {
184  s_streamIndex = -1;
185 }
static thread_local int s_streamIndex
void PoolDBOutputService::preEventProcessing ( edm::StreamContext const &  iContext)
private

Definition at line 173 of file PoolDBOutputService.cc.

References edm::StreamContext::streamID(), edm::StreamContext::timestamp(), edm::StreamID::value(), and edm::Timestamp::value().

173  {
174  m_currentTimes[iContext.streamID().value()] = iContext.timestamp().value();
175 }
std::vector< cond::Time_t > m_currentTimes
void PoolDBOutputService::preGlobalBeginLumi ( edm::GlobalContext const &  iContext)
private

Definition at line 193 of file PoolDBOutputService.cc.

References edm::GlobalContext::luminosityBlockID(), and edm::LuminosityBlockID::value().

193  {
194  for (auto& time : m_currentTimes) {
195  time = iContext.luminosityBlockID().value();
196  }
197 }
std::vector< cond::Time_t > m_currentTimes
void PoolDBOutputService::preGlobalBeginRun ( edm::GlobalContext const &  iContext)
private

Definition at line 187 of file PoolDBOutputService.cc.

References edm::GlobalContext::luminosityBlockID(), and edm::LuminosityBlockID::run().

187  {
188  for (auto& time : m_currentTimes) {
189  time = iContext.luminosityBlockID().run();
190  }
191 }
std::vector< cond::Time_t > m_currentTimes
void PoolDBOutputService::preModuleEvent ( edm::StreamContext const &  iContext,
edm::ModuleCallingContext const &   
)
private

Definition at line 177 of file PoolDBOutputService.cc.

References s_streamIndex, edm::StreamContext::streamID(), and edm::StreamID::value().

178  {
179  s_streamIndex = iContext.streamID().value();
180 }
static thread_local int s_streamIndex
void PoolDBOutputService::releaseLocks ( )

Definition at line 109 of file PoolDBOutputService.cc.

References CommonMethods::lock(), and cond::persistency::IOVEditor::unlock().

Referenced by BeamMonitor::dqmEndRun(), and FakeBeamMonitor::dqmEndRun().

109  {
110  std::lock_guard<std::recursive_mutex> lock(m_mutex);
113  this->initDB();
114  for (auto& iR : m_records) {
115  if (iR.second.m_isNewTag == false) {
116  cond::persistency::IOVEditor editor = m_session.editIov(iR.second.m_tag);
117  editor.unlock();
118  }
119  }
121  scope.close();
122 }
Transaction & transaction()
Definition: Session.cc:52
cond::persistency::Session m_session
std::map< std::string, Record > m_records
IOVEditor editIov(const std::string &tag)
Definition: Session.cc:130
cond::persistency::Session PoolDBOutputService::session ( ) const
void PoolDBOutputService::setLogHeaderForRecord ( const std::string &  recordName,
const std::string &  provenance,
const std::string &  usertext 
)

Definition at line 364 of file PoolDBOutputService.cc.

References cond::UserLogInfo::provenance, and cond::UserLogInfo::usertext.

Referenced by popcon::PopCon::write().

366  {
367  cond::UserLogInfo& myloginfo = this->lookUpUserLogInfo(recordName);
368  myloginfo.provenance = dataprovenance;
369  myloginfo.usertext = usertext;
370 }
std::string provenance
Definition: Types.h:23
tuple recordName
Definition: align_cfg.py:66
std::string usertext
Definition: Types.h:24
cond::UserLogInfo & lookUpUserLogInfo(const std::string &recordName)
void PoolDBOutputService::startTransaction ( )

Definition at line 147 of file PoolDBOutputService.cc.

References CommonMethods::lock().

147  {
148  std::lock_guard<std::recursive_mutex> lock(m_mutex);
150 }
std::string PoolDBOutputService::tag ( const std::string &  recordName)
bool PoolDBOutputService::tagInfo ( const std::string &  recordName,
cond::TagInfo_t result 
)

Definition at line 395 of file PoolDBOutputService.cc.

References CommonMethods::lock().

Referenced by l1t::DataWriter::lastPayloadToken(), l1t::DataWriterExt::lastPayloadToken(), l1t::DataWriterExt::updateIOV(), and l1t::DataWriter::updateIOV().

395  {
396  std::lock_guard<std::recursive_mutex> lock(m_mutex);
397  return getTagInfo(recordName, result);
398 }
tuple recordName
Definition: align_cfg.py:66
bool getTagInfo(const std::string &recordName, cond::TagInfo_t &result)
template<typename T >
void cond::service::PoolDBOutputService::writeMany ( const std::map< Time_t, std::shared_ptr< T > > &  iovAndPayloads,
const std::string &  recordName 
)
inline

Definition at line 118 of file PoolDBOutputService.h.

References a, cond::persistency::Session::createIov(), doCommitTransaction(), doStartTransaction(), cond::persistency::Session::editIov(), cppFunctionSkipper::exception, cond::persistency::IOVEditor::flush(), getTagInfo(), initDB(), cond::persistency::IOVEditor::insert(), isNewTagRequest(), cond::TagInfo_t::lastInterval, CommonMethods::lock(), cond::persistency::Logger::logInfo(), lookUpRecord(), lookUpUserLogInfo(), m_autoCommit, cond::service::PoolDBOutputService::Record::m_idName, m_logger, m_mutex, cond::service::PoolDBOutputService::Record::m_onlyAppendUpdatePolicy, m_session, cond::service::PoolDBOutputService::Record::m_tag, cond::service::PoolDBOutputService::Record::m_timetype, cond::time::MAX_VAL(), jetCorrFactors_cfi::payload, HLT_FULL_cff::payloadType, cond::persistency::IOVEditor::setDescription(), cond::Iov_t::since, cond::persistency::Session::storePayload(), AlCaHLTBitMon_QueryRunRegistry::string, cond::SYNCH_ANY, cond::throwException(), cond::persistency::Session::transaction(), and cond::UserLogInfo::usertext.

Referenced by popcon::PopCon::write().

118  {
119  if (iovAndPayloads.empty())
120  return;
121  std::lock_guard<std::recursive_mutex> lock(m_mutex);
124  try {
125  this->initDB();
126  Record& myrecord = this->lookUpRecord(recordName);
127  m_logger.logInfo() << "Tag mapped to record " << recordName << ": " << myrecord.m_tag;
128  bool newTag = isNewTagRequest(recordName);
129  cond::Time_t lastSince;
131  if (newTag) {
132  std::string payloadType = cond::demangledName(typeid(T));
133  editor = m_session.createIov(payloadType, myrecord.m_tag, myrecord.m_timetype, cond::SYNCH_ANY);
134  editor.setDescription("New Tag");
135  } else {
136  editor = m_session.editIov(myrecord.m_tag);
137  if (myrecord.m_onlyAppendUpdatePolicy) {
138  cond::TagInfo_t tInfo;
139  this->getTagInfo(myrecord.m_idName, tInfo);
140  lastSince = tInfo.lastInterval.since;
141  if (lastSince == cond::time::MAX_VAL)
142  lastSince = 0;
143  }
144  }
145  for (auto& iovEntry : iovAndPayloads) {
146  Time_t time = iovEntry.first;
147  auto payload = iovEntry.second;
148  if (myrecord.m_onlyAppendUpdatePolicy && !newTag) {
149  if (time <= lastSince) {
150  m_logger.logInfo() << "Won't append iov with since " << std::to_string(time)
151  << ", because is less or equal to last available since = " << lastSince;
152  continue;
153  }
154  }
155  auto payloadHash = m_session.storePayload(*payload);
156  editor.insert(time, payloadHash);
157  }
158  cond::UserLogInfo a = this->lookUpUserLogInfo(myrecord.m_idName);
159  editor.flush(a.usertext);
160  if (m_autoCommit) {
162  }
163  } catch (const std::exception& er) {
164  cond::throwException(std::string(er.what()), "PoolDBOutputService::writeMany");
165  }
166  scope.close();
167  return;
168  }
Iov_t lastInterval
Definition: Types.h:73
Time_t since
Definition: Types.h:53
IOVEditor createIov(const std::string &tag, cond::TimeType timeType, cond::SynchronizationType synchronizationType=cond::SYNCH_ANY)
Definition: Session.h:179
void setDescription(const std::string &description)
Definition: IOVEditor.cc:139
tuple recordName
Definition: align_cfg.py:66
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
unsigned long long Time_t
Definition: Time.h:14
bool isNewTagRequest(const std::string &recordName)
Record & lookUpRecord(const std::string &recordName)
cond::persistency::Session m_session
cond::persistency::Logger m_logger
IOVEditor editIov(const std::string &tag)
Definition: Session.cc:130
void insert(cond::Time_t since, const cond::Hash &payloadHash, bool checkType=false)
Definition: IOVEditor.cc:159
bool getTagInfo(const std::string &recordName, cond::TagInfo_t &result)
cond::Hash storePayload(const T &payload, const boost::posix_time::ptime &creationTime=boost::posix_time::microsec_clock::universal_time())
Definition: Session.h:186
std::string usertext
Definition: Types.h:24
double a
Definition: hdecay.h:119
EchoedLogStream< edm::LogInfo > logInfo()
Definition: Logger.cc:157
long double T
const Time_t MAX_VAL(std::numeric_limits< Time_t >::max())
cond::UserLogInfo & lookUpUserLogInfo(const std::string &recordName)
template<typename T >
Hash cond::service::PoolDBOutputService::writeOne ( const T payloadPtr,
Time_t  time,
const std::string &  recordName 
)
inline

Definition at line 110 of file PoolDBOutputService.h.

References jetCorrFactors_cfi::payload, align_cfg::recordName, and cond::throwException().

Referenced by PPSGeometryBuilder::analyze(), WriteCTPPSPixGainCalibrations::fillDB(), and DTCalibDBUtils::writeToDB().

110  {
111  if (!payloadPtr)
112  throwException("Provided payload pointer is invalid.", "PoolDBOutputService::writeOne");
113  std::unique_ptr<const T> payload(payloadPtr);
114  return writeOneIOV<T>(*payload, time, recordName);
115  }
tuple recordName
Definition: align_cfg.py:66
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
template<typename T >
Hash cond::service::PoolDBOutputService::writeOneIOV ( const T payload,
Time_t  time,
const std::string &  recordName 
)
inline

Definition at line 62 of file PoolDBOutputService.h.

References appendSinceTime(), createNewIOV(), doCommitTransaction(), doStartTransaction(), cppFunctionSkipper::exception, getTagInfo(), initDB(), isNewTagRequest(), cond::TagInfo_t::lastInterval, CommonMethods::lock(), cond::persistency::Logger::logInfo(), cond::persistency::Logger::logWarning(), lookUpRecord(), m_autoCommit, cond::service::PoolDBOutputService::Record::m_idName, m_logger, m_mutex, cond::service::PoolDBOutputService::Record::m_onlyAppendUpdatePolicy, m_session, cond::service::PoolDBOutputService::Record::m_tag, m_writeTransactionDelay, cond::time::MAX_VAL(), HLT_FULL_cff::payloadType, cond::Iov_t::since, cond::persistency::Session::storePayload(), AlCaHLTBitMon_QueryRunRegistry::string, cond::throwException(), and cond::persistency::Session::transaction().

Referenced by EcalDQMStatusWriter::analyze(), L1MuonOverlapParamsDBProducer::analyze(), L1MuonOverlapPhase1ParamsDBProducer::analyze(), SurveyInputTrackerFromDB::analyze(), WritePPSAlignmentConfig::analyze(), L1TMuonOverlapFwVersionTester::analyze(), WritePPSAlignmentConfiguration::analyze(), WritePPSAssociationCuts::analyze(), GBRForestWriter::analyze(), PPSTimingCalibrationWriter::analyze(), BufferedBoostIODBWriter::analyze(), ProduceDropBoxMetadata::analyze(), CTPPSRPAlignmentInfoAnalyzer::analyze(), WriteCTPPSPixelAnalysisMask::analyze(), SiPixelGenErrorDBObjectUploader::analyze(), WriteCTPPSPixelDAQMapping::analyze(), SiPixelTemplateDBObjectUploader::analyze(), SiPixel2DTemplateDBObjectUploader::analyze(), WriteCTPPSBeamParameters::analyze(), EcalMustacheSCParametersMaker::analyze(), EcalSCDynamicDPhiParametersMaker::analyze(), FFTJetCorrectorDBWriter::analyze(), BoostIODBWriter< DataType >::analyze(), SiStripApvGainRescaler::analyze(), TrackerSystematicMisalignments::analyze(), TrackerGeometryCompare::analyze(), MCMisalignmentScaler::analyze(), BTagCalibrationDbCreator::beginJob(), JetResolutionDBWriter::beginJob(), JetCorrectorDBWriter::beginJob(), QGLikelihoodSystematicsDBWriter::beginJob(), QGLikelihoodDBWriter::beginJob(), DTCCablingMapTestProducer::beginJob(), PPSDiamondSampicTimingCalibrationPCLHarvester::calibDb(), DTUserKeyedConfigHandler::chkConfigList(), DTKeyedConfigHandler::chkConfigList(), SiPixelStatusHarvester::constructTag(), EcalDBCopy::copyToDB(), SiStripBadStripFromQualityDBWriter::dqmEndJob(), PPSTimingCalibrationPCLHarvester::dqmEndJob(), ECALpedestalPCLHarvester::dqmEndJob(), SiStripGainsPCLHarvester::dqmEndJob(), SiPixelLorentzAnglePCLHarvester::dqmEndJob(), SiPixelStatusHarvester::dqmEndRun(), PPSAlignmentHarvester::dqmEndRun(), CorrPCCProducer::dqmEndRunProduce(), SurveyDBUploader::endJob(), CentralityTableProducer::endJob(), Mixing2DB::endJob(), DTKeyedConfigDBInit::endJob(), DTCCablingMapProducer::endJob(), SiStripLorentzAngleCalibration::endOfJob(), SiPixelLorentzAngleCalibration::endOfJob(), SiStripBackplaneCalibration::endOfJob(), DummyCondDBWriter< TObject, TObjectO, TRecord >::endRun(), AlcaBeamSpotHarvester::endRun(), cond::BTransitionAnalyzer< EcalADCToGeVConstant, EcalADCToGeVConstantRcd >::endRun(), HLTPrescaleRecorder::endRun(), LaserAlignment::endRunProduce(), EcalLaserCondTools::from_hdf_to_db(), EcalLaserCondTools::processIov(), MisalignedTrackerESProducer::produce(), MuonAlignment::saveCSCSurveyToDB(), MuonAlignment::saveCSCtoDB(), MuonAlignment::saveDTSurveyToDB(), MuonAlignment::saveDTtoDB(), MuonAlignment::saveGEMtoDB(), TrackerAlignment::saveToDB(), MuonMisalignedProducer::saveToDB(), ConditionDBWriter< SiStripApvGain >::storeOnDb(), WriteESAlignments::write(), AlCaRecoTriggerBitsRcdUpdate::writeBitsToDB(), AlignmentProducerBase::writeDB(), GlobalTrackerMuonAlignment::writeGlPosRcd(), and CreateIdealTkAlRecords::writeToDB().

62  {
63  std::lock_guard<std::recursive_mutex> lock(m_mutex);
66  Hash thePayloadHash("");
67  try {
68  this->initDB();
69  Record& myrecord = this->lookUpRecord(recordName);
70  m_logger.logInfo() << "Tag mapped to record " << recordName << ": " << myrecord.m_tag;
71  bool newTag = isNewTagRequest(recordName);
72  if (myrecord.m_onlyAppendUpdatePolicy && !newTag) {
73  cond::TagInfo_t tInfo;
74  this->getTagInfo(myrecord.m_idName, tInfo);
75  cond::Time_t lastSince = tInfo.lastInterval.since;
76  if (lastSince == cond::time::MAX_VAL)
77  lastSince = 0;
78  if (time <= lastSince) {
79  m_logger.logInfo() << "Won't append iov with since " << std::to_string(time)
80  << ", because is less or equal to last available since = " << lastSince;
81  if (m_autoCommit)
83  scope.close();
84  return thePayloadHash;
85  }
86  }
87  thePayloadHash = m_session.storePayload(payload);
88  std::string payloadType = cond::demangledName(typeid(payload));
89  if (newTag) {
90  createNewIOV(thePayloadHash, payloadType, time, myrecord);
91  } else {
92  appendSinceTime(thePayloadHash, time, myrecord);
93  }
94  if (m_autoCommit) {
96  m_logger.logWarning() << "Waiting " << m_writeTransactionDelay << "s before commit the changes...";
97  ::sleep(m_writeTransactionDelay);
98  }
100  }
101  } catch (const std::exception& er) {
102  cond::throwException(std::string(er.what()), "PoolDBOutputService::writeOne");
103  }
104  scope.close();
105  return thePayloadHash;
106  }
Iov_t lastInterval
Definition: Types.h:73
EchoedLogStream< edm::LogWarning > logWarning()
Definition: Logger.cc:169
Time_t since
Definition: Types.h:53
tuple recordName
Definition: align_cfg.py:66
Transaction & transaction()
Definition: Session.cc:52
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:18
void appendSinceTime(const T *payloadPtr, cond::Time_t sinceTime, const std::string &recordName)
unsigned long long Time_t
Definition: Time.h:14
bool isNewTagRequest(const std::string &recordName)
Record & lookUpRecord(const std::string &recordName)
std::string Hash
Definition: Types.h:43
cond::persistency::Session m_session
cond::persistency::Logger m_logger
bool getTagInfo(const std::string &recordName, cond::TagInfo_t &result)
cond::Hash storePayload(const T &payload, const boost::posix_time::ptime &creationTime=boost::posix_time::microsec_clock::universal_time())
Definition: Session.h:186
EchoedLogStream< edm::LogInfo > logInfo()
Definition: Logger.cc:157
const Time_t MAX_VAL(std::numeric_limits< Time_t >::max())
void createNewIOV(const T *payloadPtr, cond::Time_t firstSinceTime, cond::Time_t, const std::string &recordName)

Member Data Documentation

bool cond::service::PoolDBOutputService::m_autoCommit
private

Definition at line 320 of file PoolDBOutputService.h.

Referenced by writeMany(), and writeOneIOV().

cond::persistency::ConnectionPool cond::service::PoolDBOutputService::m_connection
private

Definition at line 317 of file PoolDBOutputService.h.

std::vector<cond::Time_t> cond::service::PoolDBOutputService::m_currentTimes
private

Definition at line 315 of file PoolDBOutputService.h.

bool cond::service::PoolDBOutputService::m_dbInitialised
private

Definition at line 322 of file PoolDBOutputService.h.

cond::persistency::Logger cond::service::PoolDBOutputService::m_logger
private

Definition at line 312 of file PoolDBOutputService.h.

Referenced by logger(), writeMany(), and writeOneIOV().

std::map<std::string, cond::UserLogInfo> cond::service::PoolDBOutputService::m_logheaders
private

Definition at line 325 of file PoolDBOutputService.h.

Referenced by fillRecord().

std::recursive_mutex cond::service::PoolDBOutputService::m_mutex
private

Definition at line 313 of file PoolDBOutputService.h.

Referenced by appendOneIOV(), createOneIOV(), writeMany(), and writeOneIOV().

std::map<std::string, Record> cond::service::PoolDBOutputService::m_records
private

Definition at line 324 of file PoolDBOutputService.h.

Referenced by fillRecord().

cond::persistency::Session cond::service::PoolDBOutputService::m_session
private

Definition at line 318 of file PoolDBOutputService.h.

Referenced by appendOneIOV(), createOneIOV(), writeMany(), and writeOneIOV().

cond::TimeType cond::service::PoolDBOutputService::m_timetype
private

Definition at line 314 of file PoolDBOutputService.h.

bool cond::service::PoolDBOutputService::m_transactionActive
private

Definition at line 319 of file PoolDBOutputService.h.

unsigned int cond::service::PoolDBOutputService::m_writeTransactionDelay = 0
private

Definition at line 321 of file PoolDBOutputService.h.

Referenced by writeOneIOV().