error when mld files or data are missing, compability -> compatibility
This commit is contained in:
		
							parent
							
								
									837dba2191
								
							
						
					
					
						commit
						7923fdcaef
					
				| @ -119,7 +119,7 @@ template <typename Algorithm> class Engine final : public EngineInterface | |||||||
|         return tile_plugin.HandleRequest(GetAlgorithms(params), params, result); |         return tile_plugin.HandleRequest(GetAlgorithms(params), params, result); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     static bool CheckCompability(const EngineConfig &config); |     static bool CheckCompatibility(const EngineConfig &config); | ||||||
| 
 | 
 | ||||||
|   private: |   private: | ||||||
|     template <typename ParametersT> auto GetAlgorithms(const ParametersT ¶ms) const |     template <typename ParametersT> auto GetAlgorithms(const ParametersT ¶ms) const | ||||||
| @ -139,7 +139,7 @@ template <typename Algorithm> class Engine final : public EngineInterface | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| template <> | template <> | ||||||
| bool Engine<routing_algorithms::ch::Algorithm>::CheckCompability(const EngineConfig &config) | bool Engine<routing_algorithms::ch::Algorithm>::CheckCompatibility(const EngineConfig &config) | ||||||
| { | { | ||||||
|     if (config.use_shared_memory) |     if (config.use_shared_memory) | ||||||
|     { |     { | ||||||
| @ -165,9 +165,9 @@ bool Engine<routing_algorithms::ch::Algorithm>::CheckCompability(const EngineCon | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| template <> | template <> | ||||||
| bool Engine<routing_algorithms::corech::Algorithm>::CheckCompability(const EngineConfig &config) | bool Engine<routing_algorithms::corech::Algorithm>::CheckCompatibility(const EngineConfig &config) | ||||||
| { | { | ||||||
|     if (!Engine<routing_algorithms::ch::Algorithm>::CheckCompability(config)) |     if (!Engine<routing_algorithms::ch::Algorithm>::CheckCompatibility(config)) | ||||||
|     { |     { | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
| @ -197,7 +197,7 @@ bool Engine<routing_algorithms::corech::Algorithm>::CheckCompability(const Engin | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| template <> | template <> | ||||||
| bool Engine<routing_algorithms::mld::Algorithm>::CheckCompability(const EngineConfig &config) | bool Engine<routing_algorithms::mld::Algorithm>::CheckCompatibility(const EngineConfig &config) | ||||||
| { | { | ||||||
|     if (config.use_shared_memory) |     if (config.use_shared_memory) | ||||||
|     { |     { | ||||||
| @ -207,11 +207,28 @@ bool Engine<routing_algorithms::mld::Algorithm>::CheckCompability(const EngineCo | |||||||
| 
 | 
 | ||||||
|         auto mem = storage::makeSharedMemory(barrier.data().region); |         auto mem = storage::makeSharedMemory(barrier.data().region); | ||||||
|         auto layout = reinterpret_cast<storage::DataLayout *>(mem->Ptr()); |         auto layout = reinterpret_cast<storage::DataLayout *>(mem->Ptr()); | ||||||
|         return layout->GetBlockSize(storage::DataLayout::MLD_PARTITION) > 0; |         // checks that all the needed memory blocks are populated
 | ||||||
|  |         // DataLayout::MLD_CELL_SOURCE_BOUNDARY and DataLayout::MLD_CELL_DESTINATION_BOUNDARY
 | ||||||
|  |         // are not checked, because in situations where there are so few nodes in the graph that
 | ||||||
|  |         // they all fit into one cell, they can be empty.
 | ||||||
|  |         bool empty_data = layout->GetBlockSize(storage::DataLayout::MLD_LEVEL_DATA) > 0 && | ||||||
|  |                           layout->GetBlockSize(storage::DataLayout::MLD_PARTITION) > 0 && | ||||||
|  |                           layout->GetBlockSize(storage::DataLayout::MLD_CELL_TO_CHILDREN) > 0 && | ||||||
|  |                           layout->GetBlockSize(storage::DataLayout::MLD_CELLS) > 0 && | ||||||
|  |                           layout->GetBlockSize(storage::DataLayout::MLD_CELL_LEVEL_OFFSETS) > 0 && | ||||||
|  |                           layout->GetBlockSize(storage::DataLayout::MLD_GRAPH_NODE_LIST) > 0 && | ||||||
|  |                           layout->GetBlockSize(storage::DataLayout::MLD_GRAPH_EDGE_LIST) > 0 && | ||||||
|  |                           layout->GetBlockSize(storage::DataLayout::MLD_CELL_WEIGHTS_0) > 0 && | ||||||
|  |                           layout->GetBlockSize(storage::DataLayout::MLD_CELL_DURATIONS_0) > 0 && | ||||||
|  |                           layout->GetBlockSize(storage::DataLayout::MLD_GRAPH_NODE_TO_OFFSET) > 0; | ||||||
|  |         return empty_data; | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         if (!boost::filesystem::exists(config.storage_config.GetPath(".osrm.partition"))) |         if (!boost::filesystem::exists(config.storage_config.GetPath(".osrm.partition")) || | ||||||
|  |             !boost::filesystem::exists(config.storage_config.GetPath(".osrm.cells")) || | ||||||
|  |             !boost::filesystem::exists(config.storage_config.GetPath(".osrm.mldgr")) || | ||||||
|  |             !boost::filesystem::exists(config.storage_config.GetPath(".osrm.cell_metrics"))) | ||||||
|             return false; |             return false; | ||||||
|         storage::io::FileReader in(config.storage_config.GetPath(".osrm.partition"), |         storage::io::FileReader in(config.storage_config.GetPath(".osrm.partition"), | ||||||
|                                    storage::io::FileReader::VerifyFingerprint); |                                    storage::io::FileReader::VerifyFingerprint); | ||||||
|  | |||||||
| @ -47,8 +47,8 @@ OSRM::OSRM(engine::EngineConfig &config) | |||||||
|     if (config.algorithm == EngineConfig::Algorithm::CoreCH || |     if (config.algorithm == EngineConfig::Algorithm::CoreCH || | ||||||
|         config.algorithm == EngineConfig::Algorithm::CH) |         config.algorithm == EngineConfig::Algorithm::CH) | ||||||
|     { |     { | ||||||
|         bool corech_compatible = engine::Engine<CoreCH>::CheckCompability(config); |         bool corech_compatible = engine::Engine<CoreCH>::CheckCompatibility(config); | ||||||
|         bool ch_compatible = engine::Engine<CH>::CheckCompability(config); |         bool ch_compatible = engine::Engine<CH>::CheckCompatibility(config); | ||||||
| 
 | 
 | ||||||
|         // Activate CoreCH if we can because it is faster
 |         // Activate CoreCH if we can because it is faster
 | ||||||
|         if (config.algorithm == EngineConfig::Algorithm::CH && corech_compatible) |         if (config.algorithm == EngineConfig::Algorithm::CH && corech_compatible) | ||||||
| @ -70,7 +70,7 @@ OSRM::OSRM(engine::EngineConfig &config) | |||||||
|     } |     } | ||||||
|     else if (config.algorithm == EngineConfig::Algorithm::MLD) |     else if (config.algorithm == EngineConfig::Algorithm::MLD) | ||||||
|     { |     { | ||||||
|         bool mld_compatible = engine::Engine<MLD>::CheckCompability(config); |         bool mld_compatible = engine::Engine<MLD>::CheckCompatibility(config); | ||||||
|         // throw error if dataset is not usable with MLD
 |         // throw error if dataset is not usable with MLD
 | ||||||
|         if (!mld_compatible) |         if (!mld_compatible) | ||||||
|         { |         { | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								third_party/libosmium/test/t/io/data-cr.opl
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								third_party/libosmium/test/t/io/data-cr.opl
									
									
									
									
										vendored
									
									
								
							| @ -1 +0,0 @@ | |||||||
| n1 v1 dV c1 t2014-01-01T00:00:00Z i1 utest T x1.02 y1.02 |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user