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