mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-17 21:58:22 +03:00
fix: iterator exhausted by debug log prevents event cleanup (#22469)
In both expire_snapshots() and expire_clips(), the expired_events query uses .iterator() for lazy evaluation, but the very next line calls list(expired_events) inside an f-string for debug logging. This consumes the entire iterator, so the subsequent for loop that deletes media files from disk iterates over an exhausted iterator and processes zero events. Snapshots and clips for removed cameras are never deleted from disk, causing gradual disk space exhaustion. Materialize the iterator into a list before logging so both the debug message and the cleanup loop use the same data.
This commit is contained in:
parent
6d7b1ce384
commit
7485b48f0e
@ -95,7 +95,8 @@ class EventCleanup(threading.Thread):
|
||||
.namedtuples()
|
||||
.iterator()
|
||||
)
|
||||
logger.debug(f"{len(list(expired_events))} events can be expired")
|
||||
expired_events = list(expired_events)
|
||||
logger.debug(f"{len(expired_events)} events can be expired")
|
||||
|
||||
# delete the media from disk
|
||||
for expired in expired_events:
|
||||
@ -220,7 +221,8 @@ class EventCleanup(threading.Thread):
|
||||
.namedtuples()
|
||||
.iterator()
|
||||
)
|
||||
logger.debug(f"{len(list(expired_events))} events can be expired")
|
||||
expired_events = list(expired_events)
|
||||
logger.debug(f"{len(expired_events)} events can be expired")
|
||||
# delete the media from disk
|
||||
for expired in expired_events:
|
||||
media_name = f"{expired.camera}-{expired.id}"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user