fix genai leak

This commit is contained in:
Nicolas Mowen 2026-02-16 08:28:36 -07:00
parent 3101d5f27b
commit 6139e18df7

View File

@ -103,16 +103,19 @@ class ObjectDescriptionProcessor(PostProcessorApi):
logger.debug(f"{camera} sending early request to GenAI") logger.debug(f"{camera} sending early request to GenAI")
self.early_request_sent[data["id"]] = True 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( threading.Thread(
target=self._genai_embed_description, target=self._genai_embed_description,
name=f"_genai_embed_description_{event.id}", name=f"_genai_embed_description_{event.id}",
daemon=True, daemon=True,
args=( args=(
event, event,
[ thumbnails_copy,
data["thumbnail"]
for data in self.tracked_events[data["id"]]
],
), ),
).start() ).start()
@ -173,7 +176,10 @@ class ObjectDescriptionProcessor(PostProcessorApi):
[snapshot_image] [snapshot_image]
if event.has_snapshot and source == "snapshot" if event.has_snapshot and source == "snapshot"
else ( 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 if len(self.tracked_events.get(event_id, [])) > 0
else [thumbnail] else [thumbnail]
) )
@ -277,7 +283,10 @@ class ObjectDescriptionProcessor(PostProcessorApi):
[snapshot_image] [snapshot_image]
if event.has_snapshot and camera_config.objects.genai.use_snapshot if event.has_snapshot and camera_config.objects.genai.use_snapshot
else ( 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 if num_thumbnails > 0
else [thumbnail] else [thumbnail]
) )