add extra error/warning messages when there's a possibility of missing recording segments

This commit is contained in:
Winston Ametsitsi 2023-10-17 20:09:54 -07:00
parent 860a12ef70
commit d586513544

View File

@ -410,7 +410,8 @@ class RecordingMaintainer(threading.Thread):
wait_time = 0.0
while not self.stop_event.wait(wait_time):
run_start = datetime.datetime.now().timestamp()
stale_frame_count = 0
stale_frame_count_threshold = 10
# empty the object recordings info queue
while True:
try:
@ -422,6 +423,9 @@ class RecordingMaintainer(threading.Thread):
regions,
) = self.object_recordings_info_queue.get(True, timeout=0.1)
if frame_time < run_start - stale_frame_count_threshold:
stale_frame_count += 1
if self.process_info[camera]["record_enabled"].value:
self.object_recordings_info[camera].append(
(
@ -432,10 +436,22 @@ class RecordingMaintainer(threading.Thread):
)
)
except queue.Empty:
q_size = self.object_recordings_info_queue.qsize()
if q_size > 5:
logger.warning(
f"object_recordings_info loop queue not empty ({q_size}) - recording segments may be missing"
)
break
if stale_frame_count > 0:
logger.error(
f"Found {stale_frame_count} old frames, segments from recordings may be missing"
)
# empty the audio recordings info queue if audio is enabled
if self.audio_recordings_info_queue:
stale_frame_count = 0
while True:
try:
(
@ -444,6 +460,9 @@ class RecordingMaintainer(threading.Thread):
dBFS,
) = self.audio_recordings_info_queue.get(True, timeout=0.1)
if frame_time < run_start - stale_frame_count_threshold:
stale_frame_count += 1
if self.process_info[camera]["record_enabled"].value:
self.audio_recordings_info[camera].append(
(
@ -452,8 +471,18 @@ class RecordingMaintainer(threading.Thread):
)
)
except queue.Empty:
q_size = self.audio_recordings_info_queue.qsize()
if q_size > 5:
logger.warning(
f"object_recordings_info loop audio queue not empty ({q_size}) - recording segments may be missing"
)
break
if stale_frame_count > 0:
logger.error(
f"Found {stale_frame_count} old audio frames, segments from recordings may be missing"
)
try:
asyncio.run(self.move_files())
except Exception as e: