diff --git a/tree/ntuple/src/RNTupleMetrics.cxx b/tree/ntuple/src/RNTupleMetrics.cxx index 29025159176e8..8052885f8a560 100644 --- a/tree/ntuple/src/RNTupleMetrics.cxx +++ b/tree/ntuple/src/RNTupleMetrics.cxx @@ -14,6 +14,7 @@ #include +#include #include #include #include @@ -138,7 +139,11 @@ ROOT::Experimental::Detail::RNTupleMetrics::~RNTupleMetrics() if (!fIsEnabled || fExportPath.empty()) return; - ExportToRootFile(); + try { + ExportToRootFile(); + } catch (const RException &e) { + R__LOG_ERROR(ROOT::Internal::NTupleLog()) << "cannot export metrics: " << e.what(); + } } void ROOT::Experimental::Detail::RNTupleMetrics::CollectCounters( @@ -174,10 +179,12 @@ void ROOT::Experimental::Detail::RNTupleMetrics::ExportToRootFile() auto model = ROOT::RNTupleModel::Create(); for (const auto &[fullyQualifiedName, counter] : counters) { - if (const auto *calc = dynamic_cast(counter)) + R__ASSERT(counter); + if (const auto *calc = dynamic_cast(counter)) { *model->MakeField(fullyQualifiedName) = calc->GetValue(); - else + } else { *model->MakeField(fullyQualifiedName) = counter->GetValueAsInt(); + } } TMemFile memoryFile(fNTupleName.c_str(), "RECREATE");