43 mUpdateInterval = std::max(0.1f, ic.options().get<
float>(
"update-interval"));
44 auto ccdb = ic.options().get<std::string>(
"ccdb-server");
45 if (!ccdb.empty() && ccdb !=
"none") {
46 mCCDBApi = std::make_unique<o2::ccdb::CcdbApi>();
47 mCCDBApi->init(ic.options().get<std::string>(
"ccdb-server"));
49 LOGP(warn,
"No ccdb server provided, no RCT update will be done");
51 mTimeToleranceMS = ic.options().get<
int>(
"max-diff-orbit-creationtime");
52 mMaxWarnings = ic.options().get<
int>(
"max-warn-tf-discard");
59 if (tinfo.globalRunNumberChanged) {
61 mNHBFPerTF = grp->getNHBFPerTF();
65 mRunNumber = tinfo.runNumber;
67 LOGP(info,
"Will update RCT after {} TFs of {} HBFs ({}s was requested)", mUpdateIntervalTF, mNHBFPerTF, mUpdateInterval);
69 mMinOrbit = 0xffffffff;
74 LOGP(warning,
"Run {} type is {}, disabling RCT update", mRunNumber, o2::parameters::GRPECS::RunTypeNames[grp->getRunType()]);
79 auto md = mCCDBApi->retrieveHeaders(
"RCT/Info/RunInformation", {}, grp->getRun());
82 LOGP(alarm,
"RCT object is missing for {} run {}, disabling RCT updater", o2::parameters::GRPECS::RunTypeNames[grp->getRunType()], grp->getRun());
90 if (mTimeToleranceMS > 0 && std::abs(int64_t(tinfo.creation) - ts) < mTimeToleranceMS) {
91 if (tinfo.firstTForbit < mMinOrbit) {
92 mMinOrbit = tinfo.firstTForbit;
94 if (tinfo.firstTForbit > mMaxOrbit) {
95 mMaxOrbit = tinfo.firstTForbit;
97 if (tinfo.tfCounter > mLastTFUpdate + mUpdateIntervalTF) {
98 mLastTFUpdate = tinfo.tfCounter;
102 static int nWarn = 0;
103 if (nWarn < mMaxWarnings) {
105 LOGP(warn,
"timestamp {} for orbit {} and orbit reset time {} differs by >{} from the TF creation time {}, ignore TF {}", ts, tinfo.firstTForbit, mOrbitReset / 1000, mTimeToleranceMS, tinfo.creation, tinfo.tfCounter);
136 std::map<std::string, std::string> mdRCT;
137 if (mMinOrbit > mMaxOrbit) {
142 long startValRCT = (
long)mRunNumber;
143 long endValRCT = (
long)(mRunNumber + 1);
145 int retValRCT = mCCDBApi->updateMetadata(
"RCT/Info/RunInformation", mdRCT, startValRCT);
146 if (retValRCT == 0) {
147 LOGP(info,
"Updated {}/RCT/Info/RunInformation object for run {} with TF start:{} end:{}", mCCDBApi->getURL(), mRunNumber, mdRCT[
"STF"], mdRCT[
"ETF"]);
149 LOGP(alarm,
"Update of RCT object for run {} with TF start:{} end:{} FAILED, returned with code {}", mRunNumber, mdRCT[
"STF"], mdRCT[
"ETF"], retValRCT);
152 LOGP(info,
"CCDB update disabled, TF timestamp range is {}:{}", mdRCT[
"STF"], mdRCT[
"ETF"]);