fix recording retention logic

This commit is contained in:
Jason Hunter 2021-07-09 21:19:39 -04:00 committed by Blake Blackshear
parent a476bc9885
commit 5d94c68d66
2 changed files with 8 additions and 12 deletions

View File

@ -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

View File

@ -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)