From ed6bfc54177776c001525894cf5856abbfd33306 Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Fri, 29 May 2020 09:52:28 +0200 Subject: [PATCH] lib/model: Don't increase pull pause on triggered pull (#6690) --- lib/model/folder.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/model/folder.go b/lib/model/folder.go index b0e9d1fe2..dea9b4950 100644 --- a/lib/model/folder.go +++ b/lib/model/folder.go @@ -148,7 +148,10 @@ func (f *folder) serve(ctx context.Context) { f.pull() case <-f.pullFailTimer.C: - f.pull() + if !f.pull() && f.pullPause < 60*f.pullBasePause() { + // Back off from retrying to pull + f.pullPause *= 2 + } case <-initialCompleted: // Initial scan has completed, we should do a pull @@ -276,7 +279,7 @@ func (f *folder) getHealthErrorWithoutIgnores() error { return nil } -func (f *folder) pull() bool { +func (f *folder) pull() (success bool) { f.pullFailTimer.Stop() select { case <-f.pullFailTimer.C: @@ -290,6 +293,13 @@ func (f *folder) pull() bool { return true } + defer func() { + if success { + // We're good, reset the pause interval. + f.pullPause = f.pullBasePause() + } + }() + // If there is nothing to do, don't even enter sync-waiting state. abort := true snap := f.fset.Snapshot() @@ -312,24 +322,16 @@ func (f *folder) pull() bool { startTime := time.Now() - success := f.puller.pull() - - basePause := f.pullBasePause() + success = f.puller.pull() if success { - // We're good. Don't schedule another pull and reset - // the pause interval. - f.pullPause = basePause return true } // Pulling failed, try again later. delay := f.pullPause + time.Since(startTime) - l.Infof("Folder %v isn't making sync progress - retrying in %v.", f.Description(), delay) + l.Infof("Folder %v isn't making sync progress - retrying in %v.", f.Description(), delay.Truncate(time.Second)) f.pullFailTimer.Reset(delay) - if f.pullPause < 60*basePause { - f.pullPause *= 2 - } return false }