mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-06-27 01:17:22 +02:00
fix recording retention logic
This commit is contained in:
parent
a476bc9885
commit
5d94c68d66
@ -87,12 +87,9 @@ class EventProcessor(threading.Thread):
|
|||||||
try:
|
try:
|
||||||
event_type, camera, event_data = self.event_queue.get(timeout=10)
|
event_type, camera, event_data = self.event_queue.get(timeout=10)
|
||||||
except queue.Empty:
|
except queue.Empty:
|
||||||
# if not self.stop_event.is_set():
|
|
||||||
# self.refresh_cache()
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
logger.debug(f"Event received: {event_type} {camera} {event_data['id']}")
|
logger.debug(f"Event received: {event_type} {camera} {event_data['id']}")
|
||||||
# self.refresh_cache()
|
|
||||||
|
|
||||||
if event_type == "start":
|
if event_type == "start":
|
||||||
self.events_in_process[event_data["id"]] = event_data
|
self.events_in_process[event_data["id"]] = event_data
|
||||||
|
@ -173,12 +173,12 @@ class RecordingMaintainer(threading.Thread):
|
|||||||
retain[recording.path] = True
|
retain[recording.path] = True
|
||||||
|
|
||||||
# Actually expire recordings
|
# Actually expire recordings
|
||||||
for path, keep in retain.items():
|
delete_paths = [path for path, keep in retain.items() if not keep]
|
||||||
if not keep:
|
for path in delete_paths:
|
||||||
Path(path).unlink(missing_ok=True)
|
Path(path).unlink(missing_ok=True)
|
||||||
Recordings.delete_by_id(recording.recording_id)
|
Recordings.delete().where(Recordings.path << delete_paths).execute()
|
||||||
|
|
||||||
# Update Event
|
# Update Events to reflect deleted recordings
|
||||||
event_no_recordings = (
|
event_no_recordings = (
|
||||||
Event.select()
|
Event.select()
|
||||||
.join(
|
.join(
|
||||||
@ -202,8 +202,7 @@ class RecordingMaintainer(threading.Thread):
|
|||||||
)
|
)
|
||||||
.where(Recordings.id.is_null())
|
.where(Recordings.id.is_null())
|
||||||
)
|
)
|
||||||
update = Event.update(has_clip=False).where(Event.id << event_no_recordings)
|
Event.update(has_clip=False).where(Event.id << event_no_recordings).execute()
|
||||||
update.execute()
|
|
||||||
|
|
||||||
event_paths = list(retain.keys())
|
event_paths = list(retain.keys())
|
||||||
|
|
||||||
@ -218,7 +217,7 @@ class RecordingMaintainer(threading.Thread):
|
|||||||
expire_before = (
|
expire_before = (
|
||||||
datetime.datetime.now() - datetime.timedelta(days=expire_days)
|
datetime.datetime.now() - datetime.timedelta(days=expire_days)
|
||||||
).timestamp()
|
).timestamp()
|
||||||
if recording.end_time >= expire_before:
|
if recording.end_time < expire_before:
|
||||||
Path(recording.path).unlink(missing_ok=True)
|
Path(recording.path).unlink(missing_ok=True)
|
||||||
Recordings.delete_by_id(recording.id)
|
Recordings.delete_by_id(recording.id)
|
||||||
|
|
||||||
@ -239,7 +238,7 @@ class RecordingMaintainer(threading.Thread):
|
|||||||
expire_before = (
|
expire_before = (
|
||||||
datetime.datetime.now() - datetime.timedelta(days=expire_days)
|
datetime.datetime.now() - datetime.timedelta(days=expire_days)
|
||||||
).timestamp()
|
).timestamp()
|
||||||
if recording.end_time >= expire_before:
|
if recording.end_time < expire_before:
|
||||||
Path(recording.path).unlink(missing_ok=True)
|
Path(recording.path).unlink(missing_ok=True)
|
||||||
Recordings.delete_by_id(recording.id)
|
Recordings.delete_by_id(recording.id)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user