From 1e71cfc375e8cf73ad5e44d838cac7f75066c92a Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 12 May 2022 09:49:17 +0200 Subject: [PATCH] delay sync of filesystem provider workaround --- .../controllers/music/providers/filesystem.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/music_assistant/controllers/music/providers/filesystem.py b/music_assistant/controllers/music/providers/filesystem.py index a9a1707a..e9e3cdb4 100644 --- a/music_assistant/controllers/music/providers/filesystem.py +++ b/music_assistant/controllers/music/providers/filesystem.py @@ -1,6 +1,7 @@ """Filesystem musicprovider support for MusicAssistant.""" from __future__ import annotations +import asyncio import base64 import os from typing import Dict, List, Optional, Tuple @@ -163,6 +164,23 @@ class FileSystemProvider(MusicProvider): if cache_result is None: cache_result = {} + # TEMP: account for mounted network location not yet available + prev_count = await self.mass.cache.get(f"{self.id}.count", self._music_dir) + cur_count = 0 + retries = 0 + while retries < 10: + cur_count = sum(len(files) for _, _, files in os.walk(self._music_dir)) + if prev_count is not None and abs(prev_count - cur_count) > 10: + self.logger.warning("Delaying sync....") + await asyncio.sleep(60) + else: + break + if prev_count is not None and abs(prev_count - cur_count) > 100: + self.logger.warning( + "Many file changes detected, a database resync may be needed to solve this." + ) + await self.mass.cache.set(f"{self.id}.count", cur_count, self._music_dir) + # find all music files in the music directory and all subfolders result = [] for _root, _dirs, _files in os.walk(self._music_dir): -- 2.34.1