Compare commits

..

1 Commits

Author SHA1 Message Date
Douwe
736f30e62c
Merge 517c1b76f4 into bcccae7f9c 2026-01-19 13:18:43 +00:00
2 changed files with 12 additions and 26 deletions

View File

@ -11,7 +11,7 @@ from pathlib import Path
from playhouse.sqlite_ext import SqliteExtDatabase from playhouse.sqlite_ext import SqliteExtDatabase
from frigate.config import CameraConfig, FrigateConfig, RetainModeEnum from frigate.config import CameraConfig, FrigateConfig, RetainModeEnum
from frigate.const import CACHE_DIR, CLIPS_DIR, MAX_WAL_SIZE, RECORD_DIR from frigate.const import CACHE_DIR, CLIPS_DIR, MAX_WAL_SIZE
from frigate.models import Previews, Recordings, ReviewSegment, UserReviewStatus from frigate.models import Previews, Recordings, ReviewSegment, UserReviewStatus
from frigate.util.builtin import clear_and_unlink from frigate.util.builtin import clear_and_unlink
from frigate.util.media import remove_empty_directories from frigate.util.media import remove_empty_directories
@ -376,5 +376,5 @@ class RecordingCleanup(threading.Thread):
if counter == 0: if counter == 0:
self.clean_tmp_clips() self.clean_tmp_clips()
maybe_empty_dirs = self.expire_recordings() maybe_empty_dirs = self.expire_recordings()
remove_empty_directories(Path(RECORD_DIR), maybe_empty_dirs) remove_empty_directories(maybe_empty_dirs)
self.truncate_wal() self.truncate_wal()

View File

@ -50,36 +50,22 @@ class SyncResult:
} }
def remove_empty_directories(root: Path, paths: Iterable[Path]) -> None: def remove_empty_directories(paths: Iterable[Path]) -> None:
""" """
Remove directories if they exist and are empty. Remove directories if they exist and are empty.
Silently ignores non-existent and non-empty directories. Silently ignores non-existent and non-empty directories.
Attempts to remove parent directories as well, stopping at the given root.
""" """
count = 0 count = 0
while True:
parents = set()
for path in paths: for path in paths:
if path == root:
continue
try: try:
path.rmdir() path.rmdir()
count += 1
except FileNotFoundError: except FileNotFoundError:
pass continue
except OSError as e: except OSError as e:
if e.errno == errno.ENOTEMPTY: if e.errno == errno.ENOTEMPTY:
continue continue
raise raise
count += 1
parents.add(path.parent)
if not parents:
break
paths = parents
logger.debug("Removed {count} empty directories") logger.debug("Removed {count} empty directories")