From 3a403392e7a2006aa8b54538411cf21b7469c7ba Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Sat, 12 Oct 2024 12:36:10 -0600 Subject: [PATCH] Fixes for model downloading (#14305) * Use different requestor for downloaders * Handle case where lock is left over from failed partial download * close requestor * Formatting --- frigate/embeddings/functions/onnx.py | 1 - frigate/util/downloader.py | 11 +++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/frigate/embeddings/functions/onnx.py b/frigate/embeddings/functions/onnx.py index 1e50e07b1..e836ba960 100644 --- a/frigate/embeddings/functions/onnx.py +++ b/frigate/embeddings/functions/onnx.py @@ -71,7 +71,6 @@ class GenericONNXEmbedding: model_name=self.model_name, download_path=self.download_path, file_names=files_names, - requestor=self.requestor, download_func=self._download_model, ) self.downloader.ensure_model_files() diff --git a/frigate/util/downloader.py b/frigate/util/downloader.py index ce5030566..6685b0bb8 100644 --- a/frigate/util/downloader.py +++ b/frigate/util/downloader.py @@ -19,6 +19,13 @@ class FileLock: self.path = path self.lock_file = f"{path}.lock" + # we have not acquired the lock yet so it should not exist + if os.path.exists(self.lock_file): + try: + os.remove(self.lock_file) + except Exception: + pass + def acquire(self): parent_dir = os.path.dirname(self.lock_file) os.makedirs(parent_dir, exist_ok=True) @@ -44,7 +51,6 @@ class ModelDownloader: download_path: str, file_names: List[str], download_func: Callable[[str], None], - requestor: InterProcessRequestor, silent: bool = False, ): self.model_name = model_name @@ -52,7 +58,7 @@ class ModelDownloader: self.file_names = file_names self.download_func = download_func self.silent = silent - self.requestor = requestor + self.requestor = InterProcessRequestor() self.download_thread = None self.download_complete = threading.Event() @@ -91,6 +97,7 @@ class ModelDownloader: }, ) + self.requestor.stop() self.download_complete.set() @staticmethod