16#include <boost/lexical_cast.hpp>
17#include <fairlogger/Logger.h>
27 mCCDBAccessor.
init(url);
30void CCDBManagerInstance::reportFatal(std::string_view err)
37 if (headers.size() != 0) {
39 auto strt = headers.find(
"STF");
40 auto stop = headers.find(
"ETF");
41 long valStrt = (strt == headers.end()) ? -1L :
boost::lexical_cast<int64_t>(strt->second);
42 long valStop = (stop == headers.end()) ? -1L :
boost::lexical_cast<int64_t>(stop->second);
43 if (valStrt < 0 || valStop < 0) {
44 report +=
"Missing STF/EFT -> use SOX/EOX;";
45 strt = headers.find(
"SOX");
46 valStrt = (strt == headers.end()) ? -1L :
boost::lexical_cast<int64_t>(strt->second);
48 report += fmt::format(
" Missing/invalid SOX -> use SOR");
49 strt = headers.find(
"SOR");
50 valStrt = (strt == headers.end()) ? -1L :
boost::lexical_cast<int64_t>(strt->second);
52 stop = headers.find(
"EOX");
53 valStop = (stop == headers.end()) ? -1L :
boost::lexical_cast<int64_t>(stop->second);
55 report += fmt::format(
" | Missing/invalid EOX -> use EOR");
56 stop = headers.find(
"EOR");
57 valStop = (stop == headers.end()) ? -1L :
boost::lexical_cast<int64_t>(stop->second);
63 return std::make_pair(valStrt, valStop);
65 return std::make_pair(-1L, -1L);
70 auto headers = api.
retrieveHeaders(
"RCT/Info/RunInformation", std::map<std::string, std::string>(), runnumber);
72 if ((response.first <= 0 || response.second < response.first) && fatal) {
73 LOG(fatal) <<
"Empty, missing or invalid response from query to RCT/Info/RunInformation for run " << runnumber;
84 auto& cached = mCache[
"RCT-Run-Info HeaderOnly"];
85 std::pair<int64_t, int64_t>
rd;
87 if (cached.startvalidity != runnumber) {
89 cached.objPtr = std::make_shared<std::pair<int64_t, int64_t>>(
rd);
90 cached.startvalidity = runnumber;
91 cached.endvalidity = runnumber + 1;
92 cached.minSize = cached.maxSize = 0;
95 rd = *
reinterpret_cast<std::pair<int64_t, int64_t>*
>(cached.objPtr.get());
102 std::string
res = fmt::format(
"{} queries, {} bytes", mQueries, fmt::group_digits(mFetchedSize));
103 if (mCachingEnabled) {
104 res += fmt::format(
" for {} objects", mCache.size());
106 res += fmt::format(
", {} good fetches (and {} failed ones", mFetches, mFailures);
107 if (mCachingEnabled && mFailures) {
109 for (
const auto& obj : mCache) {
110 if (obj.second.failures) {
114 res += fmt::format(
" for {} objects", nfailObj);
116 res += fmt::format(
") in {} ms, instance: {}", fmt::group_digits(mTimerMS), mCCDBAccessor.
getUniqueAgentID());
123 if (longrep && mCachingEnabled) {
124 LOGP(info,
"CCDB cache miss/hit/failures");
125 for (
const auto& obj : mCache) {
126 LOGP(info,
" {}: {}/{}/{} ({}-{} bytes)", obj.first, obj.second.fetches, obj.second.queries - obj.second.fetches - obj.second.failures, obj.second.failures, obj.second.minSize, obj.second.maxSize);
void report(bool longrep=false)
bool isCachingEnabled() const
check if caching is enabled
std::pair< int64_t, int64_t > getRunDuration(int runnumber, bool fatal=true)
std::string getSummaryString() const
void setURL(const std::string &url)
set a URL to query from
const std::string getUniqueAgentID() const
void init(std::string const &hosts)
std::map< std::string, std::string > retrieveHeaders(std::string const &path, std::map< std::string, std::string > const &metadata, long timestamp=-1) const
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"