DataFacade should only remove shared segments if they're actually different from the last time they were checked.
This commit is contained in:
		
							parent
							
								
									7675c730b6
								
							
						
					
					
						commit
						cf30628d4e
					
				| @ -241,8 +241,13 @@ template <class EdgeDataT> class SharedDataFacade final : public BaseDataFacade< | ||||
| 
 | ||||
|     SharedDataFacade() | ||||
|     { | ||||
|         if (!SharedMemory::RegionExists(CURRENT_REGIONS)) | ||||
|         { | ||||
|             throw osrm::exception("No shared memory blocks found, have you forgotten to run osrm-datastore?"); | ||||
|         } | ||||
|         data_timestamp_ptr = (SharedDataTimestamp *)SharedMemoryFactory::Get( | ||||
|                                  CURRENT_REGIONS, sizeof(SharedDataTimestamp), false, false)->Ptr(); | ||||
|                                  CURRENT_REGIONS, sizeof(SharedDataTimestamp), false, false) | ||||
|                                  ->Ptr(); | ||||
|         CURRENT_LAYOUT = LAYOUT_NONE; | ||||
|         CURRENT_DATA = DATA_NONE; | ||||
|         CURRENT_TIMESTAMP = 0; | ||||
| @ -254,8 +259,7 @@ template <class EdgeDataT> class SharedDataFacade final : public BaseDataFacade< | ||||
|     void CheckAndReloadFacade() | ||||
|     { | ||||
|         if (CURRENT_LAYOUT != data_timestamp_ptr->layout || | ||||
|             CURRENT_DATA != data_timestamp_ptr->data || | ||||
|             CURRENT_TIMESTAMP != data_timestamp_ptr->timestamp) | ||||
|             CURRENT_DATA != data_timestamp_ptr->data) | ||||
|         { | ||||
|             // release the previous shared memory segments
 | ||||
|             SharedMemory::Remove(CURRENT_LAYOUT); | ||||
| @ -263,8 +267,12 @@ template <class EdgeDataT> class SharedDataFacade final : public BaseDataFacade< | ||||
| 
 | ||||
|             CURRENT_LAYOUT = data_timestamp_ptr->layout; | ||||
|             CURRENT_DATA = data_timestamp_ptr->data; | ||||
|             CURRENT_TIMESTAMP = data_timestamp_ptr->timestamp; | ||||
|             CURRENT_TIMESTAMP = 0;  // Force trigger a reload
 | ||||
|         } | ||||
| 
 | ||||
|         if (CURRENT_TIMESTAMP != data_timestamp_ptr->timestamp) | ||||
|         { | ||||
|             CURRENT_TIMESTAMP = data_timestamp_ptr->timestamp; | ||||
|             m_layout_memory.reset(SharedMemoryFactory::Get(CURRENT_LAYOUT)); | ||||
| 
 | ||||
|             data_layout = (SharedDataLayout *)(m_layout_memory->Ptr()); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user