From 65a00cbb87f62bf1ccaade8c87c0242627bf3457 Mon Sep 17 00:00:00 2001 From: shahoian Date: Tue, 11 Mar 2025 16:12:57 +0100 Subject: [PATCH] Do not fetch meta-data object unless reading explicit ccdb snapshot file --- CCDB/include/CCDB/CcdbApi.h | 2 +- CCDB/src/CcdbApi.cxx | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CCDB/include/CCDB/CcdbApi.h b/CCDB/include/CCDB/CcdbApi.h index 5ad56fbd50557..1308742b57fd0 100644 --- a/CCDB/include/CCDB/CcdbApi.h +++ b/CCDB/include/CCDB/CcdbApi.h @@ -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& dest, const std::string& path, std::map* localHeaders = nullptr) const; + void loadFileToMemory(o2::pmr::vector& dest, const std::string& path, std::map* localHeaders = nullptr, bool fetchLocalMetaData = true) const; void loadFileToMemory(o2::pmr::vector& dest, std::string const& path, std::map const& metadata, long timestamp, std::map* headers, std::string const& etag, diff --git a/CCDB/src/CcdbApi.cxx b/CCDB/src/CcdbApi.cxx index 2906438211c65..c9d2fad882aa1 100644 --- a/CCDB/src/CcdbApi.cxx +++ b/CCDB/src/CcdbApi.cxx @@ -1989,7 +1989,7 @@ bool CcdbApi::loadLocalContentToMemory(o2::pmr::vector& dest, std::string& { if (url.find("alien:/", 0) != std::string::npos) { std::map 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; @@ -2001,7 +2001,7 @@ bool CcdbApi::loadLocalContentToMemory(o2::pmr::vector& dest, std::string& std::string path = url.substr(7); if (std::filesystem::exists(path)) { std::map 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; @@ -2013,7 +2013,7 @@ bool CcdbApi::loadLocalContentToMemory(o2::pmr::vector& dest, std::string& return false; } -void CcdbApi::loadFileToMemory(o2::pmr::vector& dest, const std::string& path, std::map* localHeaders) const +void CcdbApi::loadFileToMemory(o2::pmr::vector& dest, const std::string& path, std::map* 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; @@ -2061,7 +2061,7 @@ void CcdbApi::loadFileToMemory(o2::pmr::vector& dest, const std::string& p totalread += nread; } while (nread == (long)MaxCopySize); - if (localHeaders) { + if (localHeaders && fetchLocalMetaData) { TMemFile memFile("name", const_cast(dest.data()), dest.size(), "READ"); auto storedmeta = (std::map*)extractFromTFile(memFile, TClass::GetClass("std::map"), CCDBMETA_ENTRY); if (storedmeta) {