Compare commits

..

7 Commits

Author SHA1 Message Date
Nicolas Mowen
c22de09518 Add confidence default to avoid unnecessary field causing issues 2026-04-28 08:45:23 -06:00
Josh Hawkins
87501ba970 fix invalid recording segment topic being misrouted to the valid handler 2026-04-28 09:07:07 -05:00
Nicolas Mowen
b0f4fcd676 Improve GenAI metadata 2026-04-27 15:16:14 -06:00
Josh Hawkins
0de804892b end any in-progress audio events when audio detection is disabled
we already end in-progress audio events when we disable a camera, but this mirrors that logic for specifically disabling audio detection
2026-04-27 11:33:22 -05:00
Josh Hawkins
508f4509e1 ensure cleanup runs when an event end skips post-processing 2026-04-27 09:32:00 -05:00
Josh Hawkins
18354aef6c add mqtt to camera config update enum 2026-04-27 07:20:46 -05:00
Josh Hawkins
af2435a795 add ui to camera config update topics enum 2026-04-27 07:13:23 -05:00
2 changed files with 1 additions and 13 deletions

View File

@ -4,7 +4,6 @@ import base64
import json import json
import logging import logging
import os import os
import sys
import threading import threading
from json.decoder import JSONDecodeError from json.decoder import JSONDecodeError
from multiprocessing.synchronize import Event as MpEvent from multiprocessing.synchronize import Event as MpEvent
@ -53,14 +52,6 @@ class EmbeddingProcess(FrigateProcess):
self.stop_event, self.stop_event,
) )
maintainer.start() maintainer.start()
maintainer.join()
# If the maintainer thread exited but no shutdown was requested, it
# crashed. Surface as a non-zero exit so the watchdog restarts us
# instead of treating the silent thread death as a clean shutdown.
if not self.stop_event.is_set():
logger.error("Embeddings maintainer thread exited unexpectedly")
sys.exit(1)
class EmbeddingsContext: class EmbeddingsContext:

View File

@ -28,7 +28,6 @@ class MonitoredProcess:
restart_timestamps: deque[float] = field( restart_timestamps: deque[float] = field(
default_factory=lambda: deque(maxlen=MAX_RESTARTS) default_factory=lambda: deque(maxlen=MAX_RESTARTS)
) )
clean_exit_logged: bool = False
def is_restarting_too_fast(self, now: float) -> bool: def is_restarting_too_fast(self, now: float) -> bool:
while ( while (
@ -73,9 +72,7 @@ class FrigateWatchdog(threading.Thread):
exitcode = entry.process.exitcode exitcode = entry.process.exitcode
if exitcode == 0: if exitcode == 0:
if not entry.clean_exit_logged:
logger.info("Process %s exited cleanly, not restarting", entry.name) logger.info("Process %s exited cleanly, not restarting", entry.name)
entry.clean_exit_logged = True
return return
logger.warning( logger.warning(