mirror of
https://github.com/9001/copyparty.git
synced 2026-10-06 10:44:35 +01:00
up2k: fix !e2d reload blocking uploads
This commit is contained in:
+9
-4
@@ -174,6 +174,7 @@ class Up2k(object):
|
|||||||
self.pp: Optional[ProgressPrinter] = None
|
self.pp: Optional[ProgressPrinter] = None
|
||||||
self.rescan_cond = threading.Condition()
|
self.rescan_cond = threading.Condition()
|
||||||
self.need_rescan: set[str] = set()
|
self.need_rescan: set[str] = set()
|
||||||
|
self.have_e2d = False
|
||||||
self.db_act = 0.0
|
self.db_act = 0.0
|
||||||
|
|
||||||
self.reg_mutex = threading.Lock()
|
self.reg_mutex = threading.Lock()
|
||||||
@@ -253,6 +254,10 @@ class Up2k(object):
|
|||||||
with self.reload_mutex:
|
with self.reload_mutex:
|
||||||
if self.reload_flag < n:
|
if self.reload_flag < n:
|
||||||
self.reload_flag = n
|
self.reload_flag = n
|
||||||
|
if not self.have_e2d and not self.reloading:
|
||||||
|
self.reloading = True
|
||||||
|
Daemon(self._reload_thr)
|
||||||
|
return
|
||||||
with self.rescan_cond:
|
with self.rescan_cond:
|
||||||
self.rescan_cond.notify_all()
|
self.rescan_cond.notify_all()
|
||||||
|
|
||||||
@@ -290,7 +295,7 @@ class Up2k(object):
|
|||||||
|
|
||||||
def deferred_init(self) -> None:
|
def deferred_init(self) -> None:
|
||||||
all_vols = self.asrv.vfs.all_vols
|
all_vols = self.asrv.vfs.all_vols
|
||||||
have_e2d = self.init_indexes(all_vols, [], False)
|
self.init_indexes(all_vols, [], False)
|
||||||
|
|
||||||
if self.stop:
|
if self.stop:
|
||||||
# up-mt consistency not guaranteed if init is interrupted;
|
# up-mt consistency not guaranteed if init is interrupted;
|
||||||
@@ -308,7 +313,7 @@ class Up2k(object):
|
|||||||
return
|
return
|
||||||
|
|
||||||
Daemon(self._snapshot, "up2k-snapshot")
|
Daemon(self._snapshot, "up2k-snapshot")
|
||||||
if have_e2d:
|
if self.have_e2d:
|
||||||
Daemon(self._hasher, "up2k-hasher")
|
Daemon(self._hasher, "up2k-hasher")
|
||||||
Daemon(self._sched_rescan, "up2k-rescan")
|
Daemon(self._sched_rescan, "up2k-rescan")
|
||||||
if self.mtag:
|
if self.mtag:
|
||||||
@@ -891,7 +896,7 @@ class Up2k(object):
|
|||||||
|
|
||||||
def init_indexes(
|
def init_indexes(
|
||||||
self, all_vols: dict[str, VFS], scan_vols: list[str], fscan: bool, gid: int = 0
|
self, all_vols: dict[str, VFS], scan_vols: list[str], fscan: bool, gid: int = 0
|
||||||
) -> bool:
|
) -> None:
|
||||||
if not gid:
|
if not gid:
|
||||||
with self.mutex:
|
with self.mutex:
|
||||||
gid = self.gid
|
gid = self.gid
|
||||||
@@ -1128,7 +1133,7 @@ class Up2k(object):
|
|||||||
else:
|
else:
|
||||||
self.unpp()
|
self.unpp()
|
||||||
|
|
||||||
return have_e2d
|
self.have_e2d = self.have_e2d or have_e2d
|
||||||
|
|
||||||
def register_vpath(
|
def register_vpath(
|
||||||
self, ptop: str, flags: dict[str, Any]
|
self, ptop: str, flags: dict[str, Any]
|
||||||
|
|||||||
Reference in New Issue
Block a user