Removed unused sync method
This commit is contained in:
parent
0d8f3c6eea
commit
e9e0645416
@ -40,111 +40,6 @@ class Syncer(object):
|
||||
self.col = col
|
||||
self.server = server
|
||||
|
||||
def sync(self):
|
||||
"Returns 'noChanges', 'fullSync', 'success', etc"
|
||||
self.syncMsg = ""
|
||||
self.uname = ""
|
||||
# if the deck has any pending changes, flush them first and bump mod
|
||||
# time
|
||||
self.col.save()
|
||||
|
||||
# step 1: login & metadata
|
||||
meta = self.server.meta()
|
||||
self.col.log("rmeta", meta)
|
||||
if not meta:
|
||||
return "badAuth"
|
||||
# server requested abort?
|
||||
self.syncMsg = meta['msg']
|
||||
if not meta['cont']:
|
||||
return "serverAbort"
|
||||
else:
|
||||
# don't abort, but if 'msg' is not blank, gui should show 'msg'
|
||||
# after sync finishes and wait for confirmation before hiding
|
||||
pass
|
||||
rscm = meta['scm']
|
||||
rts = meta['ts']
|
||||
self.rmod = meta['mod']
|
||||
self.maxUsn = meta['usn']
|
||||
self.uname = meta.get("uname", "")
|
||||
self.hostNum = meta.get("hostNum")
|
||||
meta = self.meta()
|
||||
self.col.log("lmeta", meta)
|
||||
self.lmod = meta['mod']
|
||||
self.minUsn = meta['usn']
|
||||
lscm = meta['scm']
|
||||
lts = meta['ts']
|
||||
if abs(rts - lts) > 300:
|
||||
self.col.log("clock off")
|
||||
return "clockOff"
|
||||
if self.lmod == self.rmod:
|
||||
self.col.log("no changes")
|
||||
return "noChanges"
|
||||
elif lscm != rscm:
|
||||
self.col.log("schema diff")
|
||||
return "fullSync"
|
||||
self.lnewer = self.lmod > self.rmod
|
||||
# step 1.5: check collection is valid
|
||||
if not self.col.basicCheck():
|
||||
self.col.log("basic check")
|
||||
return "basicCheckFailed"
|
||||
# step 2: startup and deletions
|
||||
rrem = self.server.start(minUsn=self.minUsn, lnewer=self.lnewer)
|
||||
|
||||
# apply deletions to server
|
||||
lgraves = self.removed()
|
||||
while lgraves:
|
||||
gchunk, lgraves = self._gravesChunk(lgraves)
|
||||
self.server.applyGraves(chunk=gchunk)
|
||||
|
||||
# then apply server deletions here
|
||||
self.remove(rrem)
|
||||
|
||||
# ...and small objects
|
||||
lchg = self.changes()
|
||||
rchg = self.server.applyChanges(changes=lchg)
|
||||
self.mergeChanges(lchg, rchg)
|
||||
# step 3: stream large tables from server
|
||||
while True:
|
||||
chunk = self.server.chunk()
|
||||
self.col.log("server chunk", chunk)
|
||||
self.applyChunk(chunk=chunk)
|
||||
if chunk['done']:
|
||||
break
|
||||
# step 4: stream to server
|
||||
while True:
|
||||
chunk = self.chunk()
|
||||
self.col.log("client chunk", chunk)
|
||||
self.server.applyChunk(chunk=chunk)
|
||||
if chunk['done']:
|
||||
break
|
||||
# step 5: sanity check
|
||||
c = self.sanityCheck()
|
||||
ret = self.server.sanityCheck2(client=c)
|
||||
if ret['status'] != "ok":
|
||||
# roll back and force full sync
|
||||
self.col.rollback()
|
||||
self.col.modSchema(False)
|
||||
self.col.save()
|
||||
return "sanityCheckFailed"
|
||||
# finalize
|
||||
mod = self.server.finish()
|
||||
self.finish(mod)
|
||||
return "success"
|
||||
|
||||
def _gravesChunk(self, graves):
|
||||
lim = 250
|
||||
chunk = dict(notes=[], cards=[], decks=[])
|
||||
for cat in "notes", "cards", "decks":
|
||||
if lim and graves[cat]:
|
||||
chunk[cat] = graves[cat][:lim]
|
||||
graves[cat] = graves[cat][lim:]
|
||||
lim -= len(chunk[cat])
|
||||
|
||||
# anything remaining?
|
||||
if graves['notes'] or graves['cards'] or graves['decks']:
|
||||
return chunk, graves
|
||||
return chunk, None
|
||||
|
||||
def meta(self):
|
||||
return dict(
|
||||
mod=self.col.mod,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user