move springclean functionality in its own tools, remove from datastore
This commit is contained in:
parent
9449c99e25
commit
52ed8a7ed0
@ -284,11 +284,14 @@ if(WITH_TOOLS OR BUILD_TOOLS)
|
|||||||
endif()
|
endif()
|
||||||
add_executable(osrm-check-hsgr Tools/check-hsgr.cpp $<TARGET_OBJECTS:FINGERPRINT>)
|
add_executable(osrm-check-hsgr Tools/check-hsgr.cpp $<TARGET_OBJECTS:FINGERPRINT>)
|
||||||
target_link_libraries(osrm-check-hsgr ${Boost_LIBRARIES})
|
target_link_libraries(osrm-check-hsgr ${Boost_LIBRARIES})
|
||||||
|
add_executable(osrm-springclean Tools/springclean.cpp $<TARGET_OBJECTS:FINGERPRINT>)
|
||||||
|
target_link_libraries(osrm-springclean ${Boost_LIBRARIES})
|
||||||
|
|
||||||
install(TARGETS osrm-cli DESTINATION bin)
|
install(TARGETS osrm-cli DESTINATION bin)
|
||||||
install(TARGETS osrm-io-benchmark DESTINATION bin)
|
install(TARGETS osrm-io-benchmark DESTINATION bin)
|
||||||
install(TARGETS osrm-unlock-all DESTINATION bin)
|
install(TARGETS osrm-unlock-all DESTINATION bin)
|
||||||
install(TARGETS osrm-check-hsgr DESTINATION bin)
|
install(TARGETS osrm-check-hsgr DESTINATION bin)
|
||||||
|
install(TARGETS osrm-springclean DESTINATION bin)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(GLOB InstallGlob Include/osrm/*.h Library/OSRM.h)
|
file(GLOB InstallGlob Include/osrm/*.h Library/OSRM.h)
|
||||||
|
91
Tools/springclean.cpp
Normal file
91
Tools/springclean.cpp
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Copyright (c) 2013, Project OSRM, Dennis Luxen, others
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
Redistributions of source code must retain the above copyright notice, this list
|
||||||
|
of conditions and the following disclaimer.
|
||||||
|
Redistributions in binary form must reproduce the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
#include "../DataStructures/SharedMemoryFactory.h"
|
||||||
|
#include "../Server/DataStructures/SharedDataType.h"
|
||||||
|
#include "../Util/SimpleLogger.h"
|
||||||
|
|
||||||
|
void delete_region(const SharedDataType region)
|
||||||
|
{
|
||||||
|
if (SharedMemory::RegionExists(region) && !SharedMemory::Remove(region))
|
||||||
|
{
|
||||||
|
const std::string name = [&]
|
||||||
|
{
|
||||||
|
switch (region)
|
||||||
|
{
|
||||||
|
case CURRENT_REGIONS:
|
||||||
|
return "CURRENT_REGIONS";
|
||||||
|
case LAYOUT_1:
|
||||||
|
return "LAYOUT_1";
|
||||||
|
case DATA_1:
|
||||||
|
return "DATA_1";
|
||||||
|
case LAYOUT_2:
|
||||||
|
return "LAYOUT_2";
|
||||||
|
case DATA_2:
|
||||||
|
return "DATA_2";
|
||||||
|
case LAYOUT_NONE:
|
||||||
|
return "LAYOUT_NONE";
|
||||||
|
default: // DATA_NONE:
|
||||||
|
return "DATA_NONE";
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
|
||||||
|
SimpleLogger().Write(logWARNING) << "could not delete shared memory region " << name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// find all existing shmem regions and remove them.
|
||||||
|
void springclean()
|
||||||
|
{
|
||||||
|
SimpleLogger().Write() << "spring-cleaning all shared memory regions";
|
||||||
|
delete_region(DATA_1);
|
||||||
|
delete_region(LAYOUT_1);
|
||||||
|
delete_region(DATA_2);
|
||||||
|
delete_region(LAYOUT_2);
|
||||||
|
delete_region(CURRENT_REGIONS);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
LogPolicy::GetInstance().Unmute();
|
||||||
|
SimpleLogger().Write() << "ATTENTION! BE CAREFUL!";
|
||||||
|
SimpleLogger().Write() << "----------------------";
|
||||||
|
SimpleLogger().Write() << "This tool may put osrm-routed into an undefined state!";
|
||||||
|
SimpleLogger().Write() << "By typing 'Y' you acknowledge that you know what your are doing.";
|
||||||
|
SimpleLogger().Write() << "\n\nDo you want to purge all shared memory allocated by osrm-datastore? [type 'Y' to confirm]";
|
||||||
|
|
||||||
|
const auto c = getchar();
|
||||||
|
if (c != 'Y')
|
||||||
|
{
|
||||||
|
SimpleLogger().Write() << "aborted.";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
springclean();
|
||||||
|
return 0;
|
||||||
|
}
|
@ -43,7 +43,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
// generate boost::program_options object for the routing part
|
// generate boost::program_options object for the routing part
|
||||||
bool GenerateDataStoreOptions(const int argc, const char *argv[], ServerPaths &paths, bool & springclean)
|
bool GenerateDataStoreOptions(const int argc, const char *argv[], ServerPaths &paths)
|
||||||
{
|
{
|
||||||
// declare a group of options that will be allowed only on command line
|
// declare a group of options that will be allowed only on command line
|
||||||
boost::program_options::options_description generic_options("Options");
|
boost::program_options::options_description generic_options("Options");
|
||||||
@ -122,11 +122,6 @@ bool GenerateDataStoreOptions(const int argc, const char *argv[], ServerPaths &p
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (option_variables.count("springclean"))
|
|
||||||
{
|
|
||||||
springclean = true;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
boost::program_options::notify(option_variables);
|
boost::program_options::notify(option_variables);
|
||||||
|
|
||||||
const bool parameter_present = (paths.find("hsgrdata") != paths.end() &&
|
const bool parameter_present = (paths.find("hsgrdata") != paths.end() &&
|
||||||
|
@ -90,17 +90,6 @@ void delete_region(const SharedDataType region)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// find all existing shmem regions and remove them.
|
|
||||||
void springclean()
|
|
||||||
{
|
|
||||||
SimpleLogger().Write() << "spring-cleaning all shared memory regions";
|
|
||||||
delete_region(DATA_1);
|
|
||||||
delete_region(LAYOUT_1);
|
|
||||||
delete_region(DATA_2);
|
|
||||||
delete_region(LAYOUT_2);
|
|
||||||
delete_region(CURRENT_REGIONS);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(const int argc, const char *argv[])
|
int main(const int argc, const char *argv[])
|
||||||
{
|
{
|
||||||
LogPolicy::GetInstance().Unmute();
|
LogPolicy::GetInstance().Unmute();
|
||||||
@ -138,16 +127,10 @@ int main(const int argc, const char *argv[])
|
|||||||
SimpleLogger().Write(logDEBUG) << "Checking input parameters";
|
SimpleLogger().Write(logDEBUG) << "Checking input parameters";
|
||||||
|
|
||||||
ServerPaths server_paths;
|
ServerPaths server_paths;
|
||||||
bool should_springclean = false;
|
if (!GenerateDataStoreOptions(argc, argv, server_paths))
|
||||||
if (!GenerateDataStoreOptions(argc, argv, server_paths, should_springclean))
|
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (should_springclean)
|
|
||||||
{
|
|
||||||
springclean();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (server_paths.find("hsgrdata") == server_paths.end())
|
if (server_paths.find("hsgrdata") == server_paths.end())
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user