1
0
mirror of https://github.com/etesync/android synced 2024-12-23 15:18:14 +00:00

Have a collection fetching cache like we had for etesync v1.

This is there because we usually sync all of the adapters in tandem and
we were fetching all of the collections multiple times because of it.
This commit is contained in:
Tom Hacohen 2020-09-07 18:26:18 +03:00
parent b637f25f4a
commit 048acdf26c

View File

@ -30,7 +30,6 @@ import com.etesync.syncadapter.*
import com.etesync.journalmanager.Crypto import com.etesync.journalmanager.Crypto
import com.etesync.journalmanager.Exceptions import com.etesync.journalmanager.Exceptions
import com.etesync.journalmanager.JournalManager import com.etesync.journalmanager.JournalManager
import com.etesync.syncadapter.*
import com.etesync.syncadapter.log.Logger import com.etesync.syncadapter.log.Logger
import com.etesync.syncadapter.model.CollectionInfo import com.etesync.syncadapter.model.CollectionInfo
import com.etesync.syncadapter.model.JournalEntity import com.etesync.syncadapter.model.JournalEntity
@ -247,6 +246,14 @@ abstract class SyncAdapterService : Service() {
val etebaseLocalCache = EtebaseLocalCache.getInstance(context, account.name) val etebaseLocalCache = EtebaseLocalCache.getInstance(context, account.name)
synchronized(etebaseLocalCache) { synchronized(etebaseLocalCache) {
val cacheAge = 5 * 1000 // 5 seconds - it's just a hack for burst fetching
val now = System.currentTimeMillis()
val lastCollectionsFetch = collectionLastFetchMap[account.name] ?: 0
if (abs(now - lastCollectionsFetch) <= cacheAge) {
return@synchronized
}
val etebase = EtebaseLocalCache.getEtebase(context, httpClient.okHttpClient, settings) val etebase = EtebaseLocalCache.getEtebase(context, httpClient.okHttpClient, settings)
val colMgr = etebase.collectionManager val colMgr = etebase.collectionManager
var stoken = etebaseLocalCache.loadStoken() var stoken = etebaseLocalCache.loadStoken()
@ -265,6 +272,7 @@ abstract class SyncAdapterService : Service() {
done = colList.isDone done = colList.isDone
etebaseLocalCache.saveStoken(stoken!!) etebaseLocalCache.saveStoken(stoken!!)
} }
collectionLastFetchMap[account.name] = now
} }
httpClient.close() httpClient.close()
@ -308,5 +316,6 @@ abstract class SyncAdapterService : Service() {
companion object { companion object {
val journalFetcher = CachedJournalFetcher() val journalFetcher = CachedJournalFetcher()
var collectionLastFetchMap = HashMap<String, Long>()
} }
} }