mirror of
https://github.com/ankitects/anki.git
synced 2025-09-25 01:06:35 -04:00
abort the summary early if we're over the full sync threshold
This commit is contained in:
parent
d23a2bbe59
commit
1ddf1be747
2 changed files with 37 additions and 29 deletions
|
@ -868,7 +868,7 @@ and type between 1 and 2""",
|
|||
def _nextInterval(self, card, delay, ease):
|
||||
interval = card.interval
|
||||
factor = card.factor
|
||||
# if shown early
|
||||
# if cramming / reviewing early
|
||||
if delay < 0:
|
||||
# FIXME: this should recreate lastInterval from interval /
|
||||
# lastFactor, or we lose delay information when reviewing early
|
||||
|
|
54
anki/sync.py
54
anki/sync.py
|
@ -87,6 +87,7 @@ class SyncTools(object):
|
|||
self.diffs = {}
|
||||
self.serverExcludedTags = []
|
||||
self.timediff = 0
|
||||
self.fullThreshold = 2000
|
||||
|
||||
# Control
|
||||
##########################################################################
|
||||
|
@ -99,6 +100,7 @@ class SyncTools(object):
|
|||
if not self.prepareSync(0):
|
||||
return
|
||||
lsum = self.summary(self.deck.lastSync)
|
||||
if lsum:
|
||||
rsum = self.server.summary(self.deck.lastSync)
|
||||
if not lsum or not rsum:
|
||||
raise Exception("full sync required")
|
||||
|
@ -210,41 +212,47 @@ class SyncTools(object):
|
|||
|
||||
def summary(self, lastSync):
|
||||
"Generate a full summary of modtimes for two-way syncing."
|
||||
# if client may have selected an earlier sync time
|
||||
# client may have selected an earlier sync time
|
||||
self.deck.lastSync = lastSync
|
||||
# return early if there's been a schema change
|
||||
if self.deck.getFloat("schemaMod") > lastSync:
|
||||
return None
|
||||
return {
|
||||
d = {}
|
||||
cats = [
|
||||
# cards
|
||||
"cards": self.realLists(self.deck.s.all(
|
||||
"select id, modified from cards where modified > :mod",
|
||||
mod=lastSync)),
|
||||
"delcards": self.realLists(self.deck.s.all(
|
||||
("cards",
|
||||
"select id, modified from cards where modified > :m"),
|
||||
("delcards",
|
||||
"select cardId, deletedTime from cardsDeleted "
|
||||
"where deletedTime > :mod", mod=lastSync)),
|
||||
"where deletedTime > :m"),
|
||||
# facts
|
||||
"facts": self.realLists(self.deck.s.all(
|
||||
"select id, modified from facts where modified > :mod",
|
||||
mod=lastSync)),
|
||||
"delfacts": self.realLists(self.deck.s.all(
|
||||
("facts",
|
||||
"select id, modified from facts where modified > :m"),
|
||||
("delfacts",
|
||||
"select factId, deletedTime from factsDeleted "
|
||||
"where deletedTime > :mod", mod=lastSync)),
|
||||
"where deletedTime > :m"),
|
||||
# models
|
||||
"models": self.realLists(self.deck.s.all(
|
||||
"select id, modified from models where modified > :mod",
|
||||
mod=lastSync)),
|
||||
"delmodels": self.realLists(self.deck.s.all(
|
||||
("models",
|
||||
"select id, modified from models where modified > :m"),
|
||||
("delmodels",
|
||||
"select modelId, deletedTime from modelsDeleted "
|
||||
"where deletedTime > :mod", mod=lastSync)),
|
||||
"where deletedTime > :m"),
|
||||
# media
|
||||
"media": self.realLists(self.deck.s.all(
|
||||
"select id, created from media where created > :mod",
|
||||
mod=lastSync)),
|
||||
"delmedia": self.realLists(self.deck.s.all(
|
||||
("media",
|
||||
"select id, created from media where created > :m"),
|
||||
("delmedia",
|
||||
"select mediaId, deletedTime from mediaDeleted "
|
||||
"where deletedTime > :mod", mod=lastSync)),
|
||||
}
|
||||
"where deletedTime > :m")
|
||||
]
|
||||
for (key, sql) in cats:
|
||||
if self.fullThreshold:
|
||||
sql += " limit %d" % self.fullThreshold
|
||||
ret = self.deck.s.all(sql, m=lastSync)
|
||||
if self.fullThreshold and self.fullThreshold == len(ret):
|
||||
# theshold exceeded, abort early
|
||||
return None
|
||||
d[key] = self.realLists(ret)
|
||||
return d
|
||||
|
||||
# Diffing
|
||||
##########################################################################
|
||||
|
|
Loading…
Reference in a new issue