Correct locking in thread poll watcher

This commit is contained in:
Leo Vasanko
2023-11-12 20:30:35 +00:00
parent 2978e0c968
commit c31fb24752
3 changed files with 13 additions and 14 deletions

View File

@@ -1,7 +1,6 @@
import asyncio
import shutil
import stat
import sys
import threading
import time
from os import stat_result
@@ -190,10 +189,10 @@ def watcher_thread_poll(loop):
while not quit:
rootpath = config.config.path
old = state.root
new = walk()
if old != new:
with state.lock:
with state.lock:
old = state.root
if old != new:
state.root = new
broadcast(format_update(old, new), loop)
@@ -333,8 +332,9 @@ async def abroadcast(msg):
async def start(app, loop):
config.load_config()
use_inotify = False # sys.platform == "linux"
app.ctx.watcher = threading.Thread(
target=watcher_thread if sys.platform == "linux" else watcher_thread_poll,
target=watcher_thread if use_inotify else watcher_thread_poll,
args=[loop],
)
app.ctx.watcher.start()