From 63eaee3f570ead3cc3c56247826d7f7adf1fbef3 Mon Sep 17 00:00:00 2001 From: kirill kulakov Date: Thu, 15 Jan 2026 21:20:22 -0600 Subject: [PATCH] fix(recording): handle unexpected filenames in cache maintainer to prevent crash --- frigate/record/maintainer.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/frigate/record/maintainer.py b/frigate/record/maintainer.py index d60d7ccce..33f721aa3 100644 --- a/frigate/record/maintainer.py +++ b/frigate/record/maintainer.py @@ -112,7 +112,12 @@ class RecordingMaintainer(threading.Thread): for cache in cache_files: cache_path = os.path.join(CACHE_DIR, cache) basename = os.path.splitext(cache)[0] - camera, date = basename.rsplit("@", maxsplit=1) + try: + camera, date = basename.rsplit("@", maxsplit=1) + except ValueError: + logger.warning(f"Skipping unexpected file in cache: {cache}") + continue + start_time = datetime.datetime.strptime( date, CACHE_SEGMENT_FORMAT ).astimezone(datetime.timezone.utc) @@ -164,7 +169,11 @@ class RecordingMaintainer(threading.Thread): cache_path = os.path.join(CACHE_DIR, cache) basename = os.path.splitext(cache)[0] - camera, date = basename.rsplit("@", maxsplit=1) + try: + camera, date = basename.rsplit("@", maxsplit=1) + except ValueError: + logger.warning(f"Skipping unexpected file in cache: {cache}") + continue # important that start_time is utc because recordings are stored and compared in utc start_time = datetime.datetime.strptime(