Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CCDB/include/CCDB/CcdbApi.h
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ class CcdbApi //: public DatabaseInterface
static bool removeSemaphore(std::string const& name, bool remove = false);
static void removeLeakingSemaphores(std::string const& basedir, bool remove = false);

void loadFileToMemory(o2::pmr::vector<char>& dest, const std::string& path, std::map<std::string, std::string>* localHeaders = nullptr) const;
void loadFileToMemory(o2::pmr::vector<char>& dest, const std::string& path, std::map<std::string, std::string>* localHeaders = nullptr, bool fetchLocalMetaData = true) const;
void loadFileToMemory(o2::pmr::vector<char>& dest, std::string const& path,
std::map<std::string, std::string> const& metadata, long timestamp,
std::map<std::string, std::string>* headers, std::string const& etag,
Expand Down
8 changes: 4 additions & 4 deletions CCDB/src/CcdbApi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1989,7 +1989,7 @@ bool CcdbApi::loadLocalContentToMemory(o2::pmr::vector<char>& dest, std::string&
{
if (url.find("alien:/", 0) != std::string::npos) {
std::map<std::string, std::string> localHeaders;
loadFileToMemory(dest, url, &localHeaders);
loadFileToMemory(dest, url, &localHeaders, false);
auto it = localHeaders.find("Error");
if (it != localHeaders.end() && it->second == "An error occurred during retrieval") {
return false;
Expand All @@ -2001,7 +2001,7 @@ bool CcdbApi::loadLocalContentToMemory(o2::pmr::vector<char>& dest, std::string&
std::string path = url.substr(7);
if (std::filesystem::exists(path)) {
std::map<std::string, std::string> localHeaders;
loadFileToMemory(dest, url, &localHeaders);
loadFileToMemory(dest, url, &localHeaders, o2::utils::Str::endsWith(path, ".root"));
auto it = localHeaders.find("Error");
if (it != localHeaders.end() && it->second == "An error occurred during retrieval") {
return false;
Expand All @@ -2013,7 +2013,7 @@ bool CcdbApi::loadLocalContentToMemory(o2::pmr::vector<char>& dest, std::string&
return false;
}

void CcdbApi::loadFileToMemory(o2::pmr::vector<char>& dest, const std::string& path, std::map<std::string, std::string>* localHeaders) const
void CcdbApi::loadFileToMemory(o2::pmr::vector<char>& dest, const std::string& path, std::map<std::string, std::string>* localHeaders, bool fetchLocalMetaData) const
{
// Read file to memory as vector. For special case of the locally cached file retriev metadata stored directly in the file
constexpr size_t MaxCopySize = 0x1L << 25;
Expand Down Expand Up @@ -2061,7 +2061,7 @@ void CcdbApi::loadFileToMemory(o2::pmr::vector<char>& dest, const std::string& p
totalread += nread;
} while (nread == (long)MaxCopySize);

if (localHeaders) {
if (localHeaders && fetchLocalMetaData) {
TMemFile memFile("name", const_cast<char*>(dest.data()), dest.size(), "READ");
auto storedmeta = (std::map<std::string, std::string>*)extractFromTFile(memFile, TClass::GetClass("std::map<std::string, std::string>"), CCDBMETA_ENTRY);
if (storedmeta) {
Expand Down