From fabec6e92054668d25f223afa4f8ab712ff37821 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 6 Dec 2011 23:04:26 +0900 Subject: [PATCH] more sync resuming changes The server now returns the next usn after every addFiles(), so an interrupted upload doesn't cause the uploaded material to be sent back down. --- anki/media.py | 3 ++- anki/sync.py | 10 ++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/anki/media.py b/anki/media.py index db63f18b3..06fdfadae 100644 --- a/anki/media.py +++ b/anki/media.py @@ -264,11 +264,12 @@ If the same name exists, compare checksums.""" cnt = 0 files = {} cur = self.db.execute( - "select fname from log where type = ? limit 300", MEDIA_ADD) + "select fname from log where type = ?", MEDIA_ADD) fnames = [] while 1: fname = cur.fetchone() if not fname: + # add a flag so the server knows it can clean up z.writestr("_finished", "") break fname = fname[0] diff --git a/anki/sync.py b/anki/sync.py index 3d00cf206..dc71536e4 100644 --- a/anki/sync.py +++ b/anki/sync.py @@ -570,15 +570,13 @@ class MediaSyncer(object): while 1: runHook("sync", "streamMedia") zip, fnames = self.files() + if not fnames: + # finished + break usn = self.server.addFiles(zip=zip) # after server has replied, safe to remove from log self.col.media.forgetAdded(fnames) - # when server has run out of files, it returns bumped usn - if usn is not False: - break - # update usn from addFiles() and cached mtime - self.col.media.setUsn(usn) - #self.col.media.syncMod() + self.col.media.setUsn(usn) return "success" def removed(self):