Forráskód Böngészése

fix recording retention logic

Jason Hunter 3 éve
szülő
commit
5d94c68d66
2 módosított fájl, 8 hozzáadás és 12 törlés
  1. 0 3
      frigate/events.py
  2. 8 9
      frigate/record.py

+ 0 - 3
frigate/events.py

@@ -87,12 +87,9 @@ class EventProcessor(threading.Thread):
             try:
                 event_type, camera, event_data = self.event_queue.get(timeout=10)
             except queue.Empty:
-                # if not self.stop_event.is_set():
-                #     self.refresh_cache()
                 continue
 
             logger.debug(f"Event received: {event_type} {camera} {event_data['id']}")
-            # self.refresh_cache()
 
             if event_type == "start":
                 self.events_in_process[event_data["id"]] = event_data

+ 8 - 9
frigate/record.py

@@ -173,12 +173,12 @@ class RecordingMaintainer(threading.Thread):
                 retain[recording.path] = True
 
         # Actually expire recordings
-        for path, keep in retain.items():
-            if not keep:
-                Path(path).unlink(missing_ok=True)
-                Recordings.delete_by_id(recording.recording_id)
+        delete_paths = [path for path, keep in retain.items() if not keep]
+        for path in delete_paths:
+            Path(path).unlink(missing_ok=True)
+        Recordings.delete().where(Recordings.path << delete_paths).execute()
 
-        # Update Event
+        # Update Events to reflect deleted recordings
         event_no_recordings = (
             Event.select()
             .join(
@@ -202,8 +202,7 @@ class RecordingMaintainer(threading.Thread):
             )
             .where(Recordings.id.is_null())
         )
-        update = Event.update(has_clip=False).where(Event.id << event_no_recordings)
-        update.execute()
+        Event.update(has_clip=False).where(Event.id << event_no_recordings).execute()
 
         event_paths = list(retain.keys())
 
@@ -218,7 +217,7 @@ class RecordingMaintainer(threading.Thread):
             expire_before = (
                 datetime.datetime.now() - datetime.timedelta(days=expire_days)
             ).timestamp()
-            if recording.end_time >= expire_before:
+            if recording.end_time < expire_before:
                 Path(recording.path).unlink(missing_ok=True)
                 Recordings.delete_by_id(recording.id)
 
@@ -239,7 +238,7 @@ class RecordingMaintainer(threading.Thread):
                 expire_before = (
                     datetime.datetime.now() - datetime.timedelta(days=expire_days)
                 ).timestamp()
-                if recording.end_time >= expire_before:
+                if recording.end_time < expire_before:
                     Path(recording.path).unlink(missing_ok=True)
                     Recordings.delete_by_id(recording.id)