mirror of
https://github.com/9001/copyparty.git
synced 2025-08-18 01:22:13 -06:00
prefer sqlite over registry snaps
This commit is contained in:
parent
fb853edbe3
commit
d64e9b85a7
|
@ -261,7 +261,7 @@ class Up2k(object):
|
||||||
with self.mutex:
|
with self.mutex:
|
||||||
db = self.db.get(cj["ptop"], None)
|
db = self.db.get(cj["ptop"], None)
|
||||||
reg = self.registry[cj["ptop"]]
|
reg = self.registry[cj["ptop"]]
|
||||||
if wark not in reg and db:
|
if db:
|
||||||
cur = db.execute(r"select * from up where w = ?", (wark,))
|
cur = db.execute(r"select * from up where w = ?", (wark,))
|
||||||
for _, dtime, dsize, dp_rel in cur:
|
for _, dtime, dsize, dp_rel in cur:
|
||||||
dp_abs = os.path.join(cj["ptop"], dp_rel).replace("\\", "/")
|
dp_abs = os.path.join(cj["ptop"], dp_rel).replace("\\", "/")
|
||||||
|
@ -286,6 +286,9 @@ class Up2k(object):
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
|
||||||
|
if job and wark in reg:
|
||||||
|
del reg[wark]
|
||||||
|
|
||||||
if job or wark in reg:
|
if job or wark in reg:
|
||||||
job = job or reg[wark]
|
job = job or reg[wark]
|
||||||
if job["prel"] != cj["prel"] or job["name"] != cj["name"]:
|
if job["prel"] != cj["prel"] or job["name"] != cj["name"]:
|
||||||
|
@ -546,7 +549,11 @@ class Up2k(object):
|
||||||
prev = {}
|
prev = {}
|
||||||
while True:
|
while True:
|
||||||
time.sleep(persist_interval)
|
time.sleep(persist_interval)
|
||||||
|
with self.mutex:
|
||||||
for k, reg in self.registry.items():
|
for k, reg in self.registry.items():
|
||||||
|
self._snap_reg(prev, k, reg, discard_interval)
|
||||||
|
|
||||||
|
def _snap_reg(self, prev, k, reg, discard_interval):
|
||||||
now = time.time()
|
now = time.time()
|
||||||
rm = [x for x in reg.values() if now - x["poke"] > discard_interval]
|
rm = [x for x in reg.values() if now - x["poke"] > discard_interval]
|
||||||
if rm:
|
if rm:
|
||||||
|
@ -569,13 +576,12 @@ class Up2k(object):
|
||||||
prev[k] = None
|
prev[k] = None
|
||||||
if os.path.exists(path):
|
if os.path.exists(path):
|
||||||
os.unlink(path)
|
os.unlink(path)
|
||||||
|
return
|
||||||
continue
|
|
||||||
|
|
||||||
newest = max(x["poke"] for _, x in reg.items()) if reg else 0
|
newest = max(x["poke"] for _, x in reg.items()) if reg else 0
|
||||||
etag = [len(reg), newest]
|
etag = [len(reg), newest]
|
||||||
if etag == prev.get(k, None):
|
if etag == prev.get(k, None):
|
||||||
continue
|
return
|
||||||
|
|
||||||
path2 = "{}.{}".format(path, os.getpid())
|
path2 = "{}.{}".format(path, os.getpid())
|
||||||
j = json.dumps(reg, indent=2, sort_keys=True).encode("utf-8")
|
j = json.dumps(reg, indent=2, sort_keys=True).encode("utf-8")
|
||||||
|
|
Loading…
Reference in a new issue