mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-15 17:25:26 -04:00
fix(search): write cache under DATA_DIR, guard mkdir against read-only path (#3334)
services/search/cache.py set CACHE_DIR = services/cache (the source tree) and mkdir'd it at import, unguarded. In Docker services/ is the read-only image layer, so the mkdir fails at import (same class as the analytics bug #2366). Move the cache under DATA_DIR/cache (writable on Docker and native) and wrap the mkdir so an unwritable path disables disk cache instead of crashing import. Part of #3331. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
committed by
GitHub
parent
dd4cdaf251
commit
92300b5d67
@@ -6,17 +6,23 @@ from datetime import datetime, timedelta
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
|
from core.constants import DATA_DIR
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# Cache directories
|
# Cache directories
|
||||||
CACHE_DIR = Path(__file__).resolve().parent.parent / "cache"
|
CACHE_DIR = Path(DATA_DIR) / "cache"
|
||||||
SEARCH_CACHE_DIR = CACHE_DIR / "search"
|
SEARCH_CACHE_DIR = CACHE_DIR / "search"
|
||||||
CONTENT_CACHE_DIR = CACHE_DIR / "content"
|
CONTENT_CACHE_DIR = CACHE_DIR / "content"
|
||||||
CACHE_MAX_ENTRIES = 1000
|
CACHE_MAX_ENTRIES = 1000
|
||||||
|
|
||||||
# Create cache directories
|
# Create cache directories. Guarded so an unwritable path (e.g. a read-only
|
||||||
SEARCH_CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
# mount) degrades to no-disk-cache instead of crashing module import.
|
||||||
CONTENT_CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
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
|
# Track cache size for LRU eviction
|
||||||
search_cache_index: Dict[str, datetime] = {}
|
search_cache_index: Dict[str, datetime] = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user