From 6139e18df7ffab3449f61212fac927f19f3dec38 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Mon, 16 Feb 2026 08:28:36 -0700 Subject: [PATCH] fix genai leak --- .../post/object_descriptions.py | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/frigate/data_processing/post/object_descriptions.py b/frigate/data_processing/post/object_descriptions.py index cdb5f4fc3..30ff271b8 100644 --- a/frigate/data_processing/post/object_descriptions.py +++ b/frigate/data_processing/post/object_descriptions.py @@ -103,16 +103,19 @@ class ObjectDescriptionProcessor(PostProcessorApi): logger.debug(f"{camera} sending early request to GenAI") self.early_request_sent[data["id"]] = True + # Copy thumbnails to avoid holding references after cleanup + thumbnails_copy = [ + data["thumbnail"][:] if data.get("thumbnail") else None + for data in self.tracked_events[data["id"]] + if data.get("thumbnail") + ] threading.Thread( target=self._genai_embed_description, name=f"_genai_embed_description_{event.id}", daemon=True, args=( event, - [ - data["thumbnail"] - for data in self.tracked_events[data["id"]] - ], + thumbnails_copy, ), ).start() @@ -173,7 +176,10 @@ class ObjectDescriptionProcessor(PostProcessorApi): [snapshot_image] if event.has_snapshot and source == "snapshot" else ( - [data["thumbnail"] for data in self.tracked_events[event_id]] + # Copy thumbnails to avoid holding references + [data["thumbnail"][:] if data.get("thumbnail") else None + for data in self.tracked_events[event_id] + if data.get("thumbnail")] if len(self.tracked_events.get(event_id, [])) > 0 else [thumbnail] ) @@ -277,7 +283,10 @@ class ObjectDescriptionProcessor(PostProcessorApi): [snapshot_image] if event.has_snapshot and camera_config.objects.genai.use_snapshot else ( - [data["thumbnail"] for data in self.tracked_events[event.id]] + # Copy thumbnails to avoid holding references after cleanup + [data["thumbnail"][:] if data.get("thumbnail") else None + for data in self.tracked_events[event.id] + if data.get("thumbnail")] if num_thumbnails > 0 else [thumbnail] )