From f7d2c58783167d4249e5e547dafa3c8d4030d53a Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Thu, 7 Sep 2017 06:17:47 +0000 Subject: [PATCH] lib/model: Deduplicate folder loops GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4352 LGTM: AudriusButkevicius, calmh --- lib/model/folder.go | 17 +++++++++++++++++ lib/model/folderscanner.go | 4 ---- lib/model/rofolder.go | 19 +------------------ lib/model/rwfolder.go | 13 +------------ 4 files changed, 19 insertions(+), 34 deletions(-) diff --git a/lib/model/folder.go b/lib/model/folder.go index 8b02c341..284d4a92 100644 --- a/lib/model/folder.go +++ b/lib/model/folder.go @@ -71,3 +71,20 @@ func (f *folder) scanSubdirs(subDirs []string) error { } return nil } + +func (f *folder) scanTimerFired() { + err := f.scanSubdirs(nil) + + select { + case <-f.initialScanFinished: + default: + status := "Completed" + if err != nil { + status = "Failed" + } + l.Infoln(status, "initial scan of", f.Type.String(), "folder", f.Description()) + close(f.initialScanFinished) + } + + f.scan.Reschedule() +} diff --git a/lib/model/folderscanner.go b/lib/model/folderscanner.go index 0762fd29..003a10d8 100644 --- a/lib/model/folderscanner.go +++ b/lib/model/folderscanner.go @@ -57,7 +57,3 @@ func (f *folderScanner) Scan(subdirs []string) error { func (f *folderScanner) Delay(next time.Duration) { f.delay <- next } - -func (f *folderScanner) HasNoInterval() bool { - return f.interval == 0 -} diff --git a/lib/model/rofolder.go b/lib/model/rofolder.go index fdd8d550..27f1d55c 100644 --- a/lib/model/rofolder.go +++ b/lib/model/rofolder.go @@ -41,24 +41,7 @@ func (f *sendOnlyFolder) Serve() { case <-f.scan.timer.C: l.Debugln(f, "Scanning subdirectories") - err := f.scanSubdirs(nil) - - select { - case <-f.initialScanFinished: - default: - status := "Completed" - if err != nil { - status = "Failed" - } - l.Infoln(status, "initial scan (ro) of", f.Description()) - close(f.initialScanFinished) - } - - if f.scan.HasNoInterval() { - continue - } - - f.scan.Reschedule() + f.scanTimerFired() case req := <-f.scan.now: req.err <- f.scanSubdirs(req.subdirs) diff --git a/lib/model/rwfolder.go b/lib/model/rwfolder.go index 849f2e8a..30996323 100644 --- a/lib/model/rwfolder.go +++ b/lib/model/rwfolder.go @@ -268,18 +268,7 @@ func (f *sendReceiveFolder) Serve() { // same time. case <-f.scan.timer.C: l.Debugln(f, "Scanning subdirectories") - err := f.scanSubdirs(nil) - f.scan.Reschedule() - select { - case <-f.initialScanFinished: - default: - close(f.initialScanFinished) - status := "Completed" - if err != nil { - status = "Failed" - } - l.Infoln(status, "initial scan (rw) of", f.Description()) - } + f.scanTimerFired() case req := <-f.scan.now: req.err <- f.scanSubdirs(req.subdirs)