From 651e14c8c3e3a3124fc929bc99b4ff1d4c2426b5 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Thu, 29 May 2025 08:36:18 +0800 Subject: [PATCH] Enhance get_cached_data method: add rebuild_cache option for improved cache management --- py/services/model_scanner.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/py/services/model_scanner.py b/py/services/model_scanner.py index 1690c485..4ed69176 100644 --- a/py/services/model_scanner.py +++ b/py/services/model_scanner.py @@ -455,8 +455,13 @@ class ModelScanner: # Clean up the event loop loop.close() - async def get_cached_data(self, force_refresh: bool = False) -> ModelCache: - """Get cached model data, refresh if needed""" + async def get_cached_data(self, force_refresh: bool = False, rebuild_cache: bool = False) -> ModelCache: + """Get cached model data, refresh if needed + + Args: + force_refresh: Whether to refresh the cache + rebuild_cache: Whether to completely rebuild the cache by reloading from disk first + """ # If cache is not initialized, return an empty cache # Actual initialization should be done via initialize_in_background if self._cache is None and not force_refresh: @@ -468,7 +473,16 @@ class ModelScanner: ) # If force refresh is requested, initialize the cache directly - if (force_refresh): + if force_refresh: + # If rebuild_cache is True, try to reload from disk before reconciliation + if rebuild_cache and self._cache is not None: + logger.info(f"{self.model_type.capitalize()} Scanner: Attempting to rebuild cache from disk...") + cache_loaded = await self._load_cache_from_disk() + if cache_loaded: + logger.info(f"{self.model_type.capitalize()} Scanner: Successfully reloaded cache from disk") + else: + logger.info(f"{self.model_type.capitalize()} Scanner: Could not reload cache from disk, proceeding with normal refresh") + if self._cache is None: # For initial creation, do a full initialization await self._initialize_cache()