From 2c0c58be956f36bd73c923849e52892c1695eb29 Mon Sep 17 00:00:00 2001 From: pillot Date: Fri, 7 Mar 2025 11:48:32 +0100 Subject: [PATCH] add protection against missing object --- .../MCH/Conditions/src/bad-channels-ccdb.cxx | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Detectors/MUON/MCH/Conditions/src/bad-channels-ccdb.cxx b/Detectors/MUON/MCH/Conditions/src/bad-channels-ccdb.cxx index d355a209329ca..04614d8ccd34d 100644 --- a/Detectors/MUON/MCH/Conditions/src/bad-channels-ccdb.cxx +++ b/Detectors/MUON/MCH/Conditions/src/bad-channels-ccdb.cxx @@ -100,7 +100,12 @@ std::set listTSWhenBadChannelsChange(const std::string ccdbUrl, const std::string currentETag{}; for (auto itTS = tsChanges.begin(); itTS != tsChanges.end();) { auto headers = api.retrieveHeaders(source, metadata, *itTS); - if (headers["ETag"] == currentETag) { + if (headers["ETag"].empty()) { + std::cout << "- Warning: missing file" << std::endl; + auto validUntil = (std::next(itTS) != tsChanges.end()) ? *std::next(itTS) : endTimestamp; + std::cout << fmt::format(" validity range: {} - {}\n", *itTS, validUntil); + ++itTS; + } else if (headers["ETag"] == currentETag) { itTS = tsChanges.erase(itTS); } else { if (verbose) { @@ -129,6 +134,19 @@ BadChannelsVector queryBadChannels(const std::string ccdbUrl, std::map metadata; auto source = ccdbPath(badChannelType); auto* badChannels = api.retrieveFromTFileAny(source, metadata, timestamp); + if (badChannels == nullptr) { + std::cout << "do you want to proceed anyway? [y/n] "; + std::string response{}; + while (true) { + std::cin >> response; + if (response == "y") { + std::cout << "number of bad channels = 0" << std::endl; + return {}; + } else if (response == "n") { + exit(3); + } + } + } std::cout << "number of bad channels = " << badChannels->size() << std::endl; if (verbose) { for (const auto& badChannel : *badChannels) {