tweak some sus logic re: mtp on config reload

and fix controlpanel status listing so the state-change from
mtp to idle happens immediately as each volume finishes up
This commit is contained in:
ed 2024-03-13 15:08:05 +00:00
parent f8966222e4
commit 645bb5c990

View file

@ -232,8 +232,6 @@ class Up2k(object):
for n in range(max(1, self.args.mtag_mt)): for n in range(max(1, self.args.mtag_mt)):
Daemon(self._tagger, "tagger-{}".format(n)) Daemon(self._tagger, "tagger-{}".format(n))
Daemon(self._run_all_mtp, "up2k-mtp-init", (self.gid,))
def log(self, msg: str, c: Union[int, str] = 0) -> None: def log(self, msg: str, c: Union[int, str] = 0) -> None:
if self.pp: if self.pp:
msg += "\033[K" msg += "\033[K"
@ -830,20 +828,14 @@ class Up2k(object):
msg = "could not read tags because no backends are available (Mutagen or FFprobe)" msg = "could not read tags because no backends are available (Mutagen or FFprobe)"
self.log(msg, c=1) self.log(msg, c=1)
thr = None t = "online (running mtp)" if self.mtag else "online, idle"
if self.mtag:
t = "online (running mtp)"
if scan_vols:
thr = Daemon(self._run_all_mtp, "up2k-mtp-scan", (gid,), r=False)
else:
self.pp = None
t = "online, idle"
for vol in vols: for vol in vols:
self.volstate[vol.vpath] = t self.volstate[vol.vpath] = t
if thr: if self.mtag:
thr.start() Daemon(self._run_all_mtp, "up2k-mtp-scan", (gid,))
else:
self.pp = None
return have_e2d return have_e2d
@ -1875,18 +1867,21 @@ class Up2k(object):
if ptop not in self.entags: if ptop not in self.entags:
t = "skipping mtp for unavailable volume {}" t = "skipping mtp for unavailable volume {}"
self.log(t.format(ptop), 1) self.log(t.format(ptop), 1)
continue else:
self._run_one_mtp(ptop, gid) self._run_one_mtp(ptop, gid)
vtop = "\n"
for vol in self.asrv.vfs.all_vols.values():
if vol.realpath == ptop:
vtop = vol.vpath
if "running mtp" in self.volstate.get(vtop, ""):
self.volstate[vtop] = "online, idle"
td = time.time() - t0 td = time.time() - t0
msg = "mtp finished in {:.2f} sec ({})" msg = "mtp finished in {:.2f} sec ({})"
self.log(msg.format(td, s2hms(td, True))) self.log(msg.format(td, s2hms(td, True)))
self.pp = None self.pp = None
for k in list(self.volstate.keys()):
if "OFFLINE" not in self.volstate[k]:
self.volstate[k] = "online, idle"
if self.args.exit == "idx": if self.args.exit == "idx":
self.hub.sigterm() self.hub.sigterm()