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):
|
def _nextInterval(self, card, delay, ease):
|
||||||
interval = card.interval
|
interval = card.interval
|
||||||
factor = card.factor
|
factor = card.factor
|
||||||
# if shown early
|
# if cramming / reviewing early
|
||||||
if delay < 0:
|
if delay < 0:
|
||||||
# FIXME: this should recreate lastInterval from interval /
|
# FIXME: this should recreate lastInterval from interval /
|
||||||
# lastFactor, or we lose delay information when reviewing early
|
# lastFactor, or we lose delay information when reviewing early
|
||||||
|
|
64
anki/sync.py
64
anki/sync.py
|
@ -87,6 +87,7 @@ class SyncTools(object):
|
||||||
self.diffs = {}
|
self.diffs = {}
|
||||||
self.serverExcludedTags = []
|
self.serverExcludedTags = []
|
||||||
self.timediff = 0
|
self.timediff = 0
|
||||||
|
self.fullThreshold = 2000
|
||||||
|
|
||||||
# Control
|
# Control
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
@ -99,7 +100,8 @@ class SyncTools(object):
|
||||||
if not self.prepareSync(0):
|
if not self.prepareSync(0):
|
||||||
return
|
return
|
||||||
lsum = self.summary(self.deck.lastSync)
|
lsum = self.summary(self.deck.lastSync)
|
||||||
rsum = self.server.summary(self.deck.lastSync)
|
if lsum:
|
||||||
|
rsum = self.server.summary(self.deck.lastSync)
|
||||||
if not lsum or not rsum:
|
if not lsum or not rsum:
|
||||||
raise Exception("full sync required")
|
raise Exception("full sync required")
|
||||||
payload = self.genPayload((lsum, rsum))
|
payload = self.genPayload((lsum, rsum))
|
||||||
|
@ -210,41 +212,47 @@ class SyncTools(object):
|
||||||
|
|
||||||
def summary(self, lastSync):
|
def summary(self, lastSync):
|
||||||
"Generate a full summary of modtimes for two-way syncing."
|
"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
|
self.deck.lastSync = lastSync
|
||||||
# return early if there's been a schema change
|
# return early if there's been a schema change
|
||||||
if self.deck.getFloat("schemaMod") > lastSync:
|
if self.deck.getFloat("schemaMod") > lastSync:
|
||||||
return None
|
return None
|
||||||
return {
|
d = {}
|
||||||
|
cats = [
|
||||||
# cards
|
# cards
|
||||||
"cards": self.realLists(self.deck.s.all(
|
("cards",
|
||||||
"select id, modified from cards where modified > :mod",
|
"select id, modified from cards where modified > :m"),
|
||||||
mod=lastSync)),
|
("delcards",
|
||||||
"delcards": self.realLists(self.deck.s.all(
|
"select cardId, deletedTime from cardsDeleted "
|
||||||
"select cardId, deletedTime from cardsDeleted "
|
"where deletedTime > :m"),
|
||||||
"where deletedTime > :mod", mod=lastSync)),
|
|
||||||
# facts
|
# facts
|
||||||
"facts": self.realLists(self.deck.s.all(
|
("facts",
|
||||||
"select id, modified from facts where modified > :mod",
|
"select id, modified from facts where modified > :m"),
|
||||||
mod=lastSync)),
|
("delfacts",
|
||||||
"delfacts": self.realLists(self.deck.s.all(
|
"select factId, deletedTime from factsDeleted "
|
||||||
"select factId, deletedTime from factsDeleted "
|
"where deletedTime > :m"),
|
||||||
"where deletedTime > :mod", mod=lastSync)),
|
|
||||||
# models
|
# models
|
||||||
"models": self.realLists(self.deck.s.all(
|
("models",
|
||||||
"select id, modified from models where modified > :mod",
|
"select id, modified from models where modified > :m"),
|
||||||
mod=lastSync)),
|
("delmodels",
|
||||||
"delmodels": self.realLists(self.deck.s.all(
|
"select modelId, deletedTime from modelsDeleted "
|
||||||
"select modelId, deletedTime from modelsDeleted "
|
"where deletedTime > :m"),
|
||||||
"where deletedTime > :mod", mod=lastSync)),
|
|
||||||
# media
|
# media
|
||||||
"media": self.realLists(self.deck.s.all(
|
("media",
|
||||||
"select id, created from media where created > :mod",
|
"select id, created from media where created > :m"),
|
||||||
mod=lastSync)),
|
("delmedia",
|
||||||
"delmedia": self.realLists(self.deck.s.all(
|
"select mediaId, deletedTime from mediaDeleted "
|
||||||
"select mediaId, deletedTime from mediaDeleted "
|
"where deletedTime > :m")
|
||||||
"where deletedTime > :mod", mod=lastSync)),
|
]
|
||||||
}
|
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
|
# Diffing
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
Loading…
Reference in a new issue