1
0
mirror of https://github.com/etesync/android synced 2024-12-22 22:58:29 +00:00

Journal: don't attempt fetching entries if we are already up to date.

For a while now, etesync servers return the last entry uid as part of the
general journal querying. We can use this to check if we even need to
update the journals or not, making the overall sync much faster because
we no longer need to fetch journals that haven't changed.
This commit is contained in:
Tom Hacohen 2020-03-27 19:24:06 +03:00
parent c75d3a3b08
commit 47c96963e9
4 changed files with 10 additions and 1 deletions

View File

@ -55,7 +55,7 @@ class App : Application() {
get() = initDataStore()
fun initDataStore(): MyEntityDataStore {
val source = MyDatabaseSource(this, Models.DEFAULT, 5)
val source = MyDatabaseSource(this, Models.DEFAULT, 6)
val configuration = source.configuration
return MyEntityDataStore(configuration)
}

View File

@ -37,6 +37,8 @@ public class JournalModel {
byte[] encryptedKey;
@Column(length = 64)
String remoteLastUid;
@Deprecated
long service;

View File

@ -247,6 +247,7 @@ abstract class SyncAdapterService : Service() {
journalEntity.encryptedKey = journal.key
journalEntity.isReadOnly = journal.readOnly
journalEntity.isDeleted = false
journalEntity.remoteLastUid = journal.lastUid
data.upsert(journalEntity)
existing.remove(collection.uid)

View File

@ -364,6 +364,12 @@ constructor(protected val context: Context, protected val account: Account, prot
}
}
} else {
if ((remoteCTag != null) && (journalEntity.remoteLastUid == remoteCTag)) {
Logger.log.info("Skipping fetch because local lastUid == remoteLastUid (${remoteCTag})")
remoteEntries = LinkedList()
return
}
remoteEntries = journal!!.list(crypto, remoteCTag, MAX_FETCH)
}