diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 01a32c43..f80c71da 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -1193,19 +1193,19 @@ class Up2k(object): w = bw[:-1].decode("ascii") - q = "select rd, fn from up where w = ?" - try: - rd, fn = cur.execute(q, (w,)).fetchone() - except: - # file modified/deleted since spooling - continue + with self.mutex: + try: + q = "select rd, fn from up where substr(w,1,16)=? and +w=?" + rd, fn = cur.execute(q, (w[:16], w)).fetchone() + except: + # file modified/deleted since spooling + continue - if rd.startswith("//") or fn.startswith("//"): - rd, fn = s3dec(rd, fn) + if rd.startswith("//") or fn.startswith("//"): + rd, fn = s3dec(rd, fn) - if "mtp" in flags: - q = "insert into mt values (?,'t:mtp','a')" - with self.mutex: + if "mtp" in flags: + q = "insert into mt values (?,'t:mtp','a')" cur.execute(q, (w[:16],)) abspath = os.path.join(ptop, rd, fn) @@ -1219,6 +1219,7 @@ class Up2k(object): n_add += n_tags n_buf += n_tags + nq -= 1 td = time.time() - last_write if n_buf >= 4096 or td >= max(1, self.timeout - 1): diff --git a/scripts/profile.py b/scripts/profile.py index baf0da2f..15847067 100644 --- a/scripts/profile.py +++ b/scripts/profile.py @@ -8,7 +8,7 @@ cmd = sys.argv[1] if cmd == "cpp": from copyparty.__main__ import main - argv = ["__main__", "-v", "srv::r", "-v", "../../yt:yt:r"] + argv = ["__main__", "-vsrv::r:c,e2ds,e2ts"] main(argv=argv) elif cmd == "test": @@ -29,6 +29,6 @@ else: # # python -m vmprof -o prof --lines ./scripts/profile.py test -# linux: ~/.local/bin/vmprofshow prof tree | grep -vF '[1m 0.' -# macos: ~/Library/Python/3.9/bin/vmprofshow prof tree | grep -vF '[1m 0.' +# linux: ~/.local/bin/vmprofshow prof tree | awk '$2>1{n=5} !n{next} 1;{n--} !n{print""}' +# macos: ~/Library/Python/3.9/bin/vmprofshow prof tree # win: %appdata%\..\Roaming\Python\Python39\Scripts\vmprofshow.exe prof tree