From f8d6e4750a6c609e01c4697bb2b1a12ee1715319 Mon Sep 17 00:00:00 2001 From: karenzshea Date: Thu, 12 Apr 2018 15:53:43 +0200 Subject: [PATCH] log err instead of throwing when no shmem regions found --- include/storage/shared_monitor.hpp | 11 +++++++++++ src/tools/store.cpp | 9 ++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/include/storage/shared_monitor.hpp b/include/storage/shared_monitor.hpp index 7c79b0ee9..c9e901902 100644 --- a/include/storage/shared_monitor.hpp +++ b/include/storage/shared_monitor.hpp @@ -117,6 +117,17 @@ template struct SharedMonitor #endif static void remove() { bi::shared_memory_object::remove(Data::name); } + static bool exists() { + try + { + bi::shared_memory_object shmem_open = bi::shared_memory_object(bi::open_only, Data::name, bi::read_only); + } + catch (const bi::interprocess_exception &exception) + { + return false; + } + return true; + } private: #if USE_BOOST_INTERPROCESS_CONDITION diff --git a/src/tools/store.cpp b/src/tools/store.cpp index 7289eaa22..16a9dba4d 100644 --- a/src/tools/store.cpp +++ b/src/tools/store.cpp @@ -27,7 +27,11 @@ void deleteRegion(const storage::SharedRegionRegister::ShmKey key) void listRegions() { - + if (!storage::SharedMonitor::exists()) + { + osrm::util::Log() << "No shared memory regions found. Try running osrm-datastore"; + return; + } storage::SharedMonitor monitor; std::vector names; const auto &shared_register = monitor.data(); @@ -105,8 +109,7 @@ bool generateDataStoreOptions(const int argc, boost::program_options::value(&list_datasets) ->default_value(false) ->implicit_value(true), - "Name of the dataset to load into memory. This allows having multiple datasets in memory " - "at the same time.") // + "List all OSRM datasets currently in memory") // ("only-metric", boost::program_options::value(&only_metric) ->default_value(false)