diff --git a/services/search/cache.py b/services/search/cache.py index 11fe72215..222682c7b 100644 --- a/services/search/cache.py +++ b/services/search/cache.py @@ -6,17 +6,23 @@ from datetime import datetime, timedelta from pathlib import Path from typing import Dict +from core.constants import DATA_DIR + logger = logging.getLogger(__name__) # Cache directories -CACHE_DIR = Path(__file__).resolve().parent.parent / "cache" +CACHE_DIR = Path(DATA_DIR) / "cache" SEARCH_CACHE_DIR = CACHE_DIR / "search" CONTENT_CACHE_DIR = CACHE_DIR / "content" CACHE_MAX_ENTRIES = 1000 -# Create cache directories -SEARCH_CACHE_DIR.mkdir(parents=True, exist_ok=True) -CONTENT_CACHE_DIR.mkdir(parents=True, exist_ok=True) +# Create cache directories. Guarded so an unwritable path (e.g. a read-only +# mount) degrades to no-disk-cache instead of crashing module import. +try: + SEARCH_CACHE_DIR.mkdir(parents=True, exist_ok=True) + CONTENT_CACHE_DIR.mkdir(parents=True, exist_ok=True) +except OSError as _e: + logger.warning("Search cache directory unavailable (%s); disk cache disabled", _e) # Track cache size for LRU eviction search_cache_index: Dict[str, datetime] = {}