mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-10 07:11:08 +00:00
This commit is contained in:
parent
e1bf1e672e
commit
c025e76f30
@ -55,6 +55,7 @@ type folder struct {
|
||||
scanTimer *time.Timer
|
||||
scanDelay chan time.Duration
|
||||
initialScanFinished chan struct{}
|
||||
scanScheduled chan struct{}
|
||||
versionCleanupInterval time.Duration
|
||||
versionCleanupTimer *time.Timer
|
||||
|
||||
@ -110,6 +111,7 @@ func newFolder(model *model, fset *db.FileSet, ignores *ignore.Matcher, cfg conf
|
||||
scanTimer: time.NewTimer(0), // The first scan should be done immediately.
|
||||
scanDelay: make(chan time.Duration),
|
||||
initialScanFinished: make(chan struct{}),
|
||||
scanScheduled: make(chan struct{}, 1),
|
||||
versionCleanupInterval: time.Duration(cfg.Versioning.CleanupIntervalS) * time.Second,
|
||||
versionCleanupTimer: time.NewTimer(time.Duration(cfg.Versioning.CleanupIntervalS) * time.Second),
|
||||
|
||||
@ -204,6 +206,10 @@ func (f *folder) Serve(ctx context.Context) error {
|
||||
l.Debugln(f, "Delaying scan")
|
||||
f.scanTimer.Reset(next)
|
||||
|
||||
case <-f.scanScheduled:
|
||||
l.Debugln(f, "Scan was scheduled")
|
||||
f.scanTimer.Reset(0)
|
||||
|
||||
case fsEvents := <-f.watchChan:
|
||||
l.Debugln(f, "Scan due to watcher")
|
||||
err = f.scanSubdirs(fsEvents)
|
||||
@ -239,6 +245,14 @@ func (f *folder) DelayScan(next time.Duration) {
|
||||
}
|
||||
}
|
||||
|
||||
func (f *folder) ScheduleScan() {
|
||||
// 1-buffered chan
|
||||
select {
|
||||
case f.scanScheduled <- struct{}{}:
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
func (f *folder) ignoresUpdated() {
|
||||
if f.FSWatcherEnabled {
|
||||
f.scheduleWatchRestart()
|
||||
|
@ -50,6 +50,7 @@ type service interface {
|
||||
Override()
|
||||
Revert()
|
||||
DelayScan(d time.Duration)
|
||||
ScheduleScan()
|
||||
SchedulePull() // something relevant changed, we should try a pull
|
||||
Jobs(page, perpage int) ([]string, []string, int) // In progress, Queued, skipped
|
||||
Scan(subs []string) error
|
||||
@ -2115,7 +2116,7 @@ func (m *model) SetIgnores(folder string, content []string) error {
|
||||
runner, ok := m.folderRunners[folder]
|
||||
m.fmut.RUnlock()
|
||||
if ok {
|
||||
return runner.Scan(nil)
|
||||
runner.ScheduleScan()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user