diff --git a/CMakeLists.txt b/CMakeLists.txt index 88d4bdcf4..c7ad4726a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,7 +99,7 @@ ecbuild_add_option( FEATURE DAOSFDB DESCRIPTION "DAOS support for FDB Store" ) ecbuild_add_option( FEATURE DAOS_ADMIN - DEFAULT OFF + DEFAULT ${_default_dummy_daos} CONDITION HAVE_DAOSFDB AND DAOS_TESTS_FOUND DESCRIPTION "Add features for DAOS pool management. Removes need to manually create a pool for DAOS unit tests" ) diff --git a/VERSION b/VERSION index 61ef74965..26f30f79c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5.12.1 +5.13.0 diff --git a/src/fdb5/toc/TocPurgeVisitor.cc b/src/fdb5/toc/TocPurgeVisitor.cc index f837a6bd2..aedf82a15 100644 --- a/src/fdb5/toc/TocPurgeVisitor.cc +++ b/src/fdb5/toc/TocPurgeVisitor.cc @@ -43,9 +43,16 @@ bool TocPurgeVisitor::visitDatabase(const Catalogue& catalogue, const Store& sto indexUsage_[path] += 0; } - for (const auto& path : data) { - allDataFiles_.insert(path.path()); - dataUsage_[path.path()] += 0; + for (const auto& uri : data) { + if (!store.uriBelongs(uri)) { + Log::error() << "Catalogue is pointing to data files that do not belong to the store." << std::endl; + Log::error() << "Configured Store URI: " << store.uri().asString() << std::endl; + Log::error() << "Pointed Store unit URI: " << uri.asString() << std::endl; + Log::error() << "This may occur when purging an overlayed FDB, which is not supported." << std::endl; + NOTIMP; + } + allDataFiles_.insert(uri.path()); + dataUsage_[uri.path()] += 0; } return true; diff --git a/src/fdb5/toc/TocWipeVisitor.cc b/src/fdb5/toc/TocWipeVisitor.cc index c7a036bde..9b79a45fa 100644 --- a/src/fdb5/toc/TocWipeVisitor.cc +++ b/src/fdb5/toc/TocWipeVisitor.cc @@ -164,7 +164,6 @@ bool TocWipeVisitor::visitIndex(const Index& index) { std::vector indexDataPaths(index.dataURIs()); for (const eckit::URI& uri : store_.asCollocatedDataURIs(indexDataPaths)) { - auto auxPaths = getAuxiliaryPaths(uri); if (include) { if (!store_.uriBelongs(uri)) { Log::error() << "Index to be deleted has pointers to fields that don't belong to the configured store." << std::endl; @@ -174,10 +173,14 @@ bool TocWipeVisitor::visitIndex(const Index& index) { NOTIMP; } dataPaths_.insert(eckit::PathName(uri.path())); + auto auxPaths = getAuxiliaryPaths(uri); auxiliaryDataPaths_.insert(auxPaths.begin(), auxPaths.end()); } else { safePaths_.insert(eckit::PathName(uri.path())); - safePaths_.insert(auxPaths.begin(), auxPaths.end()); + if (store_.uriBelongs(uri)) { + auto auxPaths = getAuxiliaryPaths(uri); + safePaths_.insert(auxPaths.begin(), auxPaths.end()); + } } }