Reduce number of synchronizations GODT-313

* [x] expononential cooldown of retries
* [x] do not trigger sync by counts
* [x] randomization of event poll interval
This commit is contained in:
Jakub Cuth
2020-04-28 14:20:37 +00:00
parent a1b01d5922
commit b15d22c8cc
9 changed files with 227 additions and 6 deletions

View File

@ -128,11 +128,19 @@ func (store *Store) triggerSync() {
store.log.Debug("Store sync triggered")
store.lock.Lock()
if store.isSyncRunning {
store.lock.Unlock()
store.log.Info("Store sync is already ongoing")
return
}
if store.syncCooldown.isTooSoon() {
store.lock.Unlock()
store.log.Info("Skipping sync: store tries to resync too often")
return
}
store.isSyncRunning = true
store.lock.Unlock()
@ -147,9 +155,11 @@ func (store *Store) triggerSync() {
err := syncAllMail(store.panicHandler, store, store.api, syncState)
if err != nil {
log.WithError(err).Error("Store sync failed")
store.syncCooldown.increaseWaitTime()
return
}
store.syncCooldown.reset()
syncState.setFinishTime()
}()
}