8 namespace persistency {
32 std::vector<std::tuple<cond::Time_t, cond::Hash, boost::posix_time::ptime> >
iovBuffer;
46 const boost::posix_time::ptime& creationTime)
50 m_data->payloadType = payloadObjectType;
52 m_data->creationTime = creationTime;
67 if (!
m_session->iovSchema().tagTable().select(tag,
70 m_data->synchronizationType,
73 m_data->lastValidatedTime)) {
74 cond::throwException(
"Tag \"" + tag +
"\" has not been found in the database.",
"IOVEditor::load");
95 m_data->changes.insert(
"SynchronizationType");
105 m_data->changes.insert(
"EndOfValidity");
115 m_data->changes.insert(
"Description");
127 m_data->changes.insert(
"LastValidatedTime");
133 m_data->validationMode =
true;
137 boost::posix_time::ptime
now = boost::posix_time::microsec_clock::universal_time();
138 insert(since, payloadHash, now, checkType);
143 const boost::posix_time::ptime& insertionTime,
147 m_data->iovBuffer.push_back(std::tie(since, payloadHash, insertionTime));
151 bool iovSorter(
const std::tuple<cond::Time_t, cond::Hash, boost::posix_time::ptime>&
f,
152 const std::tuple<cond::Time_t, cond::Hash, boost::posix_time::ptime>&
s) {
153 return std::get<0>(
f) < std::get<0>(s);
157 const boost::posix_time::ptime& operationTime,
158 bool forceInsertion) {
165 if (
m_data->description.empty())
166 throwException(
"A non-empty description string is mandatory.",
"IOVEditor::flush");
167 if (
m_data->validationMode)
168 m_session->iovSchema().tagTable().setValidationMode();
171 if (
m_data->creationTime.is_not_a_date_time())
172 m_data->creationTime = operationTime;
176 m_data->synchronizationType,
179 m_data->lastValidatedTime,
181 if (
m_session->iovSchema().tagLogTable().exists())
193 m_data->synchronizationType,
196 m_data->lastValidatedTime,
198 if (
m_session->iovSchema().tagLogTable().exists()) {
201 for (
auto c :
m_data->changes) {
203 if (i == (
m_data->changes.size() - 1))
209 m_session->iovSchema().tagLogTable().insert(
210 m_data->tag, operationTime, cond::getUserName(), cond::getHostName(), cond::getCommand(), action, lt);
216 if (!
m_data->iovBuffer.empty()) {
228 boost::posix_time::ptime no_time;
229 m_session->iovSchema().iovTable().getLastIov(
m_data->tag, no_time, last, h);
232 std::stringstream
msg;
233 msg <<
"Can't insert iov since " << l <<
" on the tag " <<
m_data->tag <<
": last since is " << last
239 for (
auto& iov :
m_data->iovBuffer) {
240 boost::posix_time::ptime& insertionTime = std::get<2>(iov);
241 if (insertionTime.is_not_a_date_time())
242 insertionTime = operationTime;
246 std::stringstream
msg;
247 msg <<
m_data->iovBuffer.size() <<
" iov(s) inserted.";
248 if (
m_session->iovSchema().tagLogTable().exists()) {
249 m_session->iovSchema().tagLogTable().insert(
250 m_data->tag, operationTime, cond::getUserName(), cond::getHostName(), cond::getCommand(), msg.str(), lt);
252 m_data->iovBuffer.clear();
260 return flush(logText, boost::posix_time::microsec_clock::universal_time(),
false);
268 return flush(
std::string(
"-"), boost::posix_time::microsec_clock::universal_time(),
false);
272 return flush(logText, boost::posix_time::microsec_clock::universal_time(), forceInsertion);
278 if (!
m_session->isTransactionActive(
false))
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::string synchronizationTypeNames(SynchronizationType type)
ret
prodAgent to be discontinued
void checkTransaction(const std::string &ctx)
cond::Time_t lastValidatedTime
void load(const std::string &tag)
void setDescription(const std::string &description)
std::set< std::string > changes
void setLastValidatedTime(cond::Time_t time)
std::shared_ptr< SessionImpl > m_session
void throwException(const std::string &message, const std::string &methodName)
std::string description() const
unsigned long long Time_t
IOVEditor & operator=(const IOVEditor &rhs)
cond::SynchronizationType synchronizationType() const
std::vector< std::tuple< cond::Time_t, cond::Hash, boost::posix_time::ptime > > iovBuffer
cond::Time_t endOfValidity() const
void insert(cond::Time_t since, const cond::Hash &payloadHash, bool checkType=false)
cond::Time_t endOfValidity
std::shared_ptr< IOVEditorData > m_data
bool iovSorter(const std::tuple< cond::Time_t, cond::Hash, boost::posix_time::ptime > &f, const std::tuple< cond::Time_t, cond::Hash, boost::posix_time::ptime > &s)
cond::TimeType timeType() const
boost::posix_time::ptime creationTime
cond::Time_t lastValidatedTime() const
cond::SynchronizationType synchronizationType
void setEndOfValidity(cond::Time_t validity)
void setSynchronizationType(cond::SynchronizationType synchronizationType)
std::string payloadType() const
const Time_t MAX_VAL(std::numeric_limits< Time_t >::max())
void throwException(const std::string &message, const std::string &methodName)