diff --git a/frigate/record.py b/frigate/record.py index f545575a8..2983b0679 100644 --- a/frigate/record.py +++ b/frigate/record.py @@ -88,22 +88,16 @@ class RecordingMaintainer(threading.Thread): } ) - # delete all cached files past the most recent 2, but not on the first check - if self.first_pass: - self.first_pass = False - else: - for camera in grouped_recordings.keys(): - if len(grouped_recordings[camera]) > 2: - logger.warning( - "Proactively cleaning cache. Your recordings disk may be too slow." - ) - sorted_recordings = sorted( - grouped_recordings[camera], key=lambda i: i["start_time"] - ) - to_remove = sorted_recordings[:-2] - for f in to_remove: - Path(f["cache_path"]).unlink(missing_ok=True) - grouped_recordings[camera] = sorted_recordings[-2:] + # delete all cached files past the most recent 2 + for camera in grouped_recordings.keys(): + if len(grouped_recordings[camera]) > 2: + sorted_recordings = sorted( + grouped_recordings[camera], key=lambda i: i["start_time"] + ) + to_remove = sorted_recordings[:-2] + for f in to_remove: + Path(f["cache_path"]).unlink(missing_ok=True) + grouped_recordings[camera] = sorted_recordings[-2:] for camera, recordings in grouped_recordings.items(): # get all events with the end time after the start of the oldest cache file @@ -182,8 +176,6 @@ class RecordingMaintainer(threading.Thread): duration, cache_path, ) - else: - Path(cache_path).unlink(missing_ok=True) # else retain_days includes this segment else: self.store_segment( @@ -236,7 +228,14 @@ class RecordingMaintainer(threading.Thread): "Error occurred when attempting to maintain recording cache" ) logger.error(e) - wait_time = max(0, 5 - (datetime.datetime.now().timestamp() - run_start)) + duration = datetime.datetime.now().timestamp() - run_start + wait_time = max(0, 5 - duration) + if duration > 10 and not self.first_pass: + logger.warning( + "Cache maintenance is taking longer than 10 seconds to clear. Your recordings disk may be too slow." + ) + if self.first_pass: + self.first_pass = False logger.info(f"Exiting recording maintenance...")