Catch json decode exception (#19323)

* Catch json decode exception when semantic search stats file is corrupted

* clear stats file if corrupted
This commit is contained in:
Josh Hawkins 2025-07-29 13:38:13 -05:00 committed by GitHub
parent 4f4c8a4fb9
commit 92a0dad2c2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -7,6 +7,7 @@ import multiprocessing as mp
import os
import signal
import threading
from json.decoder import JSONDecodeError
from types import FrameType
from typing import Any, Optional, Union
@ -73,13 +74,21 @@ class EmbeddingsContext:
self.requestor = EmbeddingsRequestor()
# load stats from disk
stats_file = os.path.join(CONFIG_DIR, ".search_stats.json")
try:
with open(os.path.join(CONFIG_DIR, ".search_stats.json"), "r") as f:
with open(stats_file, "r") as f:
data = json.loads(f.read())
self.thumb_stats.from_dict(data["thumb_stats"])
self.desc_stats.from_dict(data["desc_stats"])
except FileNotFoundError:
pass
except JSONDecodeError:
logger.warning("Failed to decode semantic search stats, clearing file")
try:
with open(stats_file, "w") as f:
f.write("")
except OSError as e:
logger.error(f"Failed to clear corrupted stats file: {e}")
def stop(self):
"""Write the stats to disk as JSON on exit."""