I'll let Audrius words from the ticket explain this :) > I'm a bit lost, time.Duration is an int64, yet watcher delay is float, > anything sub 1s gets rounded down to 0, so you just end up going into an > infinite loop. https://github.com/syncthing/syncthing/issues/9927#issuecomment-2967736106
This commit is contained in:
@@ -440,7 +440,7 @@ func (a *aggregator) updateConfig(folderCfg config.FolderConfiguration) {
|
|||||||
if maxDelay := folderCfg.FSWatcherTimeoutS; maxDelay > 0 {
|
if maxDelay := folderCfg.FSWatcherTimeoutS; maxDelay > 0 {
|
||||||
// FSWatcherTimeoutS is set explicitly so use that, but it also
|
// FSWatcherTimeoutS is set explicitly so use that, but it also
|
||||||
// can't be lower than FSWatcherDelayS
|
// can't be lower than FSWatcherDelayS
|
||||||
a.notifyTimeout = time.Duration(max(maxDelay, folderCfg.FSWatcherDelayS)) * time.Second
|
a.notifyTimeout = time.Duration(max(maxDelay, folderCfg.FSWatcherDelayS) * float64(time.Second))
|
||||||
} else {
|
} else {
|
||||||
// Use the default FSWatcherTimeoutS calculation
|
// Use the default FSWatcherTimeoutS calculation
|
||||||
a.notifyTimeout = notifyTimeout(folderCfg.FSWatcherDelayS)
|
a.notifyTimeout = notifyTimeout(folderCfg.FSWatcherDelayS)
|
||||||
@@ -471,10 +471,10 @@ func notifyTimeout(eventDelayS float64) time.Duration {
|
|||||||
longDelayTimeout = time.Minute
|
longDelayTimeout = time.Minute
|
||||||
)
|
)
|
||||||
if eventDelayS < shortDelayS {
|
if eventDelayS < shortDelayS {
|
||||||
return time.Duration(eventDelayS*shortDelayMultiplicator) * time.Second
|
return time.Duration(eventDelayS * shortDelayMultiplicator * float64(time.Second))
|
||||||
}
|
}
|
||||||
if eventDelayS < longDelayS {
|
if eventDelayS < longDelayS {
|
||||||
return longDelayTimeout
|
return longDelayTimeout
|
||||||
}
|
}
|
||||||
return time.Duration(eventDelayS) * time.Second
|
return time.Duration(eventDelayS * float64(time.Second))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user