lib/model: Check folder error before sync-waiting (fixes #6793) (#6847)

This commit is contained in:
Simon Frei
2020-07-31 19:26:09 +02:00
committed by GitHub
parent 850dd4cd25
commit a85bc1c3a6
2 changed files with 23 additions and 15 deletions
+23 -1
View File
@@ -334,16 +334,38 @@ func (f *folder) pull() (success bool) {
return true
}
// Abort early (before acquiring a token) if there's a folder error
err := f.getHealthErrorWithoutIgnores()
f.setError(err)
if err != nil {
l.Debugln("Skipping pull of", f.Description(), "due to folder error:", err)
return false
}
f.setState(FolderSyncWaiting)
defer f.setState(FolderIdle)
if err := f.ioLimiter.takeWithContext(f.ctx, 1); err != nil {
f.setError(err)
return true
}
defer f.ioLimiter.give(1)
startTime := time.Now()
// Check if the ignore patterns changed.
oldHash := f.ignores.Hash()
defer func() {
if f.ignores.Hash() != oldHash {
f.ignoresUpdated()
}
}()
err = f.getHealthErrorAndLoadIgnores()
f.setError(err)
if err != nil {
l.Debugln("Skipping pull of", f.Description(), "due to folder error:", err)
return false
}
success = f.puller.pull()
if success {