From 0e107a7fb5c601a78c8422f9a3fcfa16d531c5fe Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Tue, 29 Jul 2025 12:57:41 -0500 Subject: [PATCH] clear stats file if corrupted --- frigate/embeddings/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/frigate/embeddings/__init__.py b/frigate/embeddings/__init__.py index d1695699d..fbdc8d940 100644 --- a/frigate/embeddings/__init__.py +++ b/frigate/embeddings/__init__.py @@ -74,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, JSONDecodeError): + 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."""