From f512af2563e31a113c8c990112ecd7dee5f98785 Mon Sep 17 00:00:00 2001 From: Blake Blackshear Date: Sat, 5 Feb 2022 08:51:18 -0600 Subject: [PATCH] make expire interval configurable for users wanting to minimize i/o --- docs/docs/configuration/index.md | 3 +++ frigate/config.py | 4 ++++ frigate/record.py | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/docs/configuration/index.md b/docs/docs/configuration/index.md index 747dc56f4..0e650dc57 100644 --- a/docs/docs/configuration/index.md +++ b/docs/docs/configuration/index.md @@ -229,6 +229,9 @@ record: # will fit within the available disk space of your drive or Frigate # will crash. enabled: False + # Optional: Number of minutes to wait between cleanup runs (default: shown below) + # This can be used to reduce the frequency of deleting recording segments from disk if you want to minimize i/o + expire_interval: 60 # Optional: Retention settings for recording retain: # Optional: Number of days to retain recordings regardless of events (default: shown below) diff --git a/frigate/config.py b/frigate/config.py index 39b856277..4a941bf41 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -103,6 +103,10 @@ class RecordRetainConfig(FrigateBaseModel): class RecordConfig(FrigateBaseModel): enabled: bool = Field(default=False, title="Enable record on all cameras.") + expire_interval: int = Field( + default=60, + title="Number of minutes to wait between cleanup runs.", + ) # deprecated - to be removed in a future version retain_days: Optional[float] = Field(title="Recording retention period in days.") retain: RecordRetainConfig = Field( diff --git a/frigate/record.py b/frigate/record.py index 162d24aa8..5a3b7ab1d 100644 --- a/frigate/record.py +++ b/frigate/record.py @@ -549,7 +549,7 @@ class RecordingCleanup(threading.Thread): # self.sync_recordings() # Expire tmp clips every minute, recordings and clean directories every hour. - for counter in itertools.cycle(range(60)): + for counter in itertools.cycle(range(self.config.record.expire_interval)): if self.stop_event.wait(60): logger.info(f"Exiting recording cleanup...") break