up2k: fix !e2d reload blocking uploads

This commit is contained in:
ed
2026-09-04 18:51:15 +00:00
parent f00d19c5d3
commit 0767d95674
+9 -4
View File
@@ -174,6 +174,7 @@ class Up2k(object):
self.pp: Optional[ProgressPrinter] = None
self.rescan_cond = threading.Condition()
self.need_rescan: set[str] = set()
self.have_e2d = False
self.db_act = 0.0
self.reg_mutex = threading.Lock()
@@ -253,6 +254,10 @@ class Up2k(object):
with self.reload_mutex:
if 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:
self.rescan_cond.notify_all()
@@ -290,7 +295,7 @@ class Up2k(object):
def deferred_init(self) -> None:
all_vols = self.asrv.vfs.all_vols
have_e2d = self.init_indexes(all_vols, [], False)
self.init_indexes(all_vols, [], False)
if self.stop:
# up-mt consistency not guaranteed if init is interrupted;
@@ -308,7 +313,7 @@ class Up2k(object):
return
Daemon(self._snapshot, "up2k-snapshot")
if have_e2d:
if self.have_e2d:
Daemon(self._hasher, "up2k-hasher")
Daemon(self._sched_rescan, "up2k-rescan")
if self.mtag:
@@ -891,7 +896,7 @@ class Up2k(object):
def init_indexes(
self, all_vols: dict[str, VFS], scan_vols: list[str], fscan: bool, gid: int = 0
) -> bool:
) -> None:
if not gid:
with self.mutex:
gid = self.gid
@@ -1128,7 +1133,7 @@ class Up2k(object):
else:
self.unpp()
return have_e2d
self.have_e2d = self.have_e2d or have_e2d
def register_vpath(
self, ptop: str, flags: dict[str, Any]