| @@ -862,11 +862,10 @@ class DataManager: | |||||
| """ | """ | ||||
| logger.info("Start to load data") | logger.info("Start to load data") | ||||
| DataManager.check_reload_interval(reload_interval) | DataManager.check_reload_interval(reload_interval) | ||||
| thread = threading.Thread(target=self._load_data_in_thread_wrapper, | |||||
| thread = threading.Thread(target=self._load_data_in_thread, | |||||
| name='start_load_data_thread', | name='start_load_data_thread', | ||||
| args=(reload_interval,), | args=(reload_interval,), | ||||
| daemon=True) | daemon=True) | ||||
| thread.daemon = True | |||||
| thread.start() | thread.start() | ||||
| return thread | return thread | ||||
| @@ -884,7 +883,7 @@ class DataManager: | |||||
| if reload_interval < 0: | if reload_interval < 0: | ||||
| raise ParamValueError("The value of reload interval should be >= 0.") | raise ParamValueError("The value of reload interval should be >= 0.") | ||||
| def _load_data_in_thread_wrapper(self, reload_interval): | |||||
| def _load_data_in_thread(self, reload_interval): | |||||
| """Wrapper for load data in thread.""" | """Wrapper for load data in thread.""" | ||||
| if self._load_data_lock.locked(): | if self._load_data_lock.locked(): | ||||
| return | return | ||||
| @@ -911,8 +910,13 @@ class DataManager: | |||||
| max_processes_cnt=settings.MAX_PROCESSES_COUNT) as computing_resource_mgr: | max_processes_cnt=settings.MAX_PROCESSES_COUNT) as computing_resource_mgr: | ||||
| with computing_resource_mgr.get_executor() as executor: | with computing_resource_mgr.get_executor() as executor: | ||||
| self._brief_cache.update_cache(executor) | self._brief_cache.update_cache(executor) | ||||
| brief_cache_update = time.time() | |||||
| for _ in self._detail_cache.update_cache(executor): | for _ in self._detail_cache.update_cache(executor): | ||||
| self._brief_cache.update_cache(executor) | |||||
| update_interval = time.time() - brief_cache_update | |||||
| logger.debug('Loading one round of detail cache taking %ss.', update_interval) | |||||
| if update_interval > 3: # Use 3 seconds as threshold to avoid updating too often | |||||
| self._brief_cache.update_cache(executor) | |||||
| brief_cache_update += update_interval | |||||
| executor.wait_all_tasks_finish() | executor.wait_all_tasks_finish() | ||||
| with self._status_mutex: | with self._status_mutex: | ||||
| if not self._brief_cache.has_content() and not self._detail_cache.has_content(): | if not self._brief_cache.has_content() and not self._detail_cache.has_content(): | ||||