23 std::string dsw(
"DataWrapper");
48 m_callbacks.insert(std::make_pair(thisrecord.
m_idName,thisrecord));
52 m_logheaders.insert(std::make_pair(thisrecord.
m_idName,userloginfo));
74 if( iConfig.
exists(
"outOfOrder") ){
83 if( iConfig.
exists(
"logconnect") ){
95 if( !logconnect.empty() ){
101 typedef std::vector< edm::ParameterSet >
Parameters;
103 for(Parameters::iterator itToPut = toPut.begin(); itToPut != toPut.end(); ++itToPut)
121 return this->lookUpRecord(recordName).m_tag;
126 Record& myrecord=this->lookUpRecord(recordName);
127 if(!m_dbstarted) this->initDB();
135 if(m_dbstarted)
return;
138 transaction.
start(
false);
142 for(std::map<std::string,Record>::iterator it=m_callbacks.begin(); it!=m_callbacks.end(); ++it){
144 if( !metadata.
hasTag(it->second.m_tag) ){
145 it->second.m_iovtoken=
"";
146 it->second.m_isNewTag=
true;
148 it->second.m_iovtoken=metadata.
getToken(it->second.m_tag);
149 it->second.m_isNewTag=
false;
157 m_logdb->createLogDBIfNonExist();
161 throw cond::Exception( std::string(er.what()) +
" from PoolDBOutputService::initDB" );
178 m_currentTime=iEvtid.
run();
180 m_currentTime=iTime.
value();
191 m_currentTime=iLumiid.
value();
215 return m_currentTime;
220 Record& myrecord=this->lookUpRecord(recordName);
221 if (!m_dbstarted) this->initDB();
223 std::string iovToken;
225 if(!m_logdb)
throw cond::Exception(
"Log db was not set from PoolDBOutputService::createNewIOV");
226 m_logdb->getWriteLock();
229 std::string objToken;
230 unsigned int payloadIdx=0;
233 transaction.
start(
false);
238 unsigned int payloadIdx=editor.
append(firstSinceTime, objToken);
239 iovToken=editor.
token();
255 m_newtags.push_back( std::pair<std::string,std::string>(myrecord.
m_tag,iovToken) );
259 std::string destconnect=m_session.connectionString();
261 m_logdb->logOperationNow(a,destconnect,objToken,myrecord.
m_tag,myrecord.
timetypestr(),payloadIdx,firstSinceTime);
265 std::string destconnect=m_session.connectionString();
267 m_logdb->logFailedOperationNow(a,destconnect,objToken,myrecord.
m_tag,myrecord.
timetypestr(),payloadIdx,firstSinceTime,std::string(er.what()));
268 m_logdb->releaseWriteLock();
270 throw cond::Exception(std::string(er.what()) +
" from PoolDBOutputService::createNewIOV ");
273 m_logdb->releaseWriteLock();
283 Record& myrecord=this->lookUpRecord(recordName);
284 if (!m_dbstarted) this->initDB();
286 if(!m_logdb)
throw cond::Exception(
"Log db was not set from PoolDBOutputService::add");
287 m_logdb->getWriteLock();
290 std::string objToken;
291 unsigned int payloadIdx=0;
295 transaction.
start(
false);
297 payloadIdx= appendIOV(m_session,myrecord,objToken,time);
300 std::string destconnect=m_session.connectionString();
302 m_logdb->logOperationNow(a,destconnect,objToken,myrecord.
m_tag,myrecord.
timetypestr(),payloadIdx,
time);
306 std::string destconnect=m_session.connectionString();
308 m_logdb->logFailedOperationNow(a,destconnect,objToken,myrecord.
m_tag,myrecord.
timetypestr(),payloadIdx,
time,std::string(er.what()));
309 m_logdb->releaseWriteLock();
311 throw cond::Exception(std::string(er.what()) +
" from PoolDBOutputService::add ");
314 m_logdb->releaseWriteLock();
320 std::map<std::string,Record>::iterator it=m_callbacks.find(recordName);
327 std::map<std::string,cond::UserLogInfo>::iterator it=m_logheaders.find(recordName);
328 if(it==m_logheaders.end())
throw cond::Exception(
"Log db was not set for record " + recordName +
" from PoolDBOutputService::lookUpUserLogInfo");
336 const std::string& payloadToken,
339 throw cond::Exception(std::string(
"Cannot append to non-existing tag ") + record.
m_tag + std::string(
" from PoolDBOutputService::appendIOV"));
346 editor.
append(sinceTime,payloadToken);
358 throw cond::Exception(std::string(
"Cannot close non-existing tag ") + record.
m_tag + std::string(
" from PoolDBOutputService::closeIOV"));
361 transaction.
start(
false);
381 if(!m_logdb)
throw cond::Exception(
"Log database is not set from PoolDBOutputService::queryLog");
388 if (!m_dbstarted) initDB();
const TimeTypeSpecs timeTypeSpecs[]
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void closeIOV(Time_t lastTill, const std::string &recordName, bool withlogging=false)
void watchPostEndJob(PostEndJob::slot_type const &iSlot)
void open(const std::string &connectionString, bool readOnly=false)
void fillRecord(edm::ParameterSet &pset)
void watchPostModule(PostModule::slot_type const &iSlot)
void watchPreProcessEvent(PreProcessEvent::slot_type const &iSlot)
DbConnectionConfiguration & configuration()
boost::uint64_t value() const
bool exists(std::string const ¶meterName) const
checks if a parameter exists
static unsigned int sizeDSW()
std::pair< Time_t, Time_t > ValidityInterval
void add(GetToken const &token, cond::Time_t time, const std::string &recordName, bool withlogging=false)
const_iterator begin() const
cond::Time_t till() const
void preBeginLumi(const edm::LuminosityBlockID &, const edm::Timestamp &)
std::string lastPayloadToken
unsigned int freeInsert(cond::Time_t sinceTime, const std::string &payloadToken)
insert a payload with known since in any position
void watchPreModule(PreModule::slot_type const &iSlot)
void setParameters(const edm::ParameterSet &connectionPset)
std::string tag(const std::string &recordName)
void create(cond::TimeType timetype)
unsigned long long Time_t
bool isNewTagRequest(const std::string &recordName)
Record & lookUpRecord(const std::string &recordName)
cond::DbSession session() const
std::string const & token() const
void create()
create iov tables if not existing
cond::Time_t beginOfTime() const
cond::TimeType m_timetype
vector< ParameterSet > Parameters
int start(bool readOnly=false)
start transaction
void createNewIOV(T *firstPayloadObj, cond::Time_t firstSinceTime, cond::Time_t firstTillTime, const std::string &recordName, bool withlogging=false)
cond::DbConnection m_connection
void setLogHeaderForRecord(const std::string &recordName, const std::string &provenance, const std::string &usertext)
void tagInfo(const std::string &recordName, cond::TagInfo &result)
TimeValue_t value() const
void postModule(const edm::ModuleDescription &desc)
virtual ~PoolDBOutputService()
DbSession createSession() const
void updateClosure(cond::Time_t newtillTime)
Update the closure of the iov sequence.
unsigned int append(cond::Time_t sinceTime, const std::string &payloadToken)
Append a payload with known since time. The previous last payload's till time will be adjusted to the...
void preModule(const edm::ModuleDescription &desc)
cond::Time_t endOfTime() const
cond::Time_t since() const
std::string timetypestr() const
cond::ValidityInterval lastInterval
cond::Time_t currentTime() const
void stamp(std::string const &icomment, bool append=false)
void watchPreBeginLumi(PreBeginLumi::slot_type const &iSlot)
const TimeTypeSpecs & findSpecs(std::string const &name)
std::string const & token() const
Returns the token of the iov sequence associated with this editor.
cond::TimeType m_timetype
cond::DbSession m_session
void preEventProcessing(const edm::EventID &evtID, const edm::Timestamp &iTime)
int commit()
commit transaction. Will disconnect from database if connection timeout==0 or connectted time close t...
std::string m_timetypestr
cond::DbSession m_logSession
cond::UserLogInfo & lookUpUserLogInfo(const std::string &recordName)
const cond::Logger & queryLog() const
PoolDBOutputService(const edm::ParameterSet &iConfig, edm::ActivityRegistry &iAR)
unsigned int appendIOV(cond::DbSession &, Record &record, const std::string &payloadToken, cond::Time_t sinceTime)