in src/ulsp/controller/scip/scip.go [470:501]
func (c *controller) handleChanges(closer chan bool) {
if c.watcher == nil {
c.logger.Warn("File watcher unavailable, continuing without watching for changes")
return
}
for {
select {
case event := <-c.watcher.Events:
if !event.Has(fsnotify.Create) && !event.Has(fsnotify.Write) {
continue
}
c.handleDebounce(event)
case err := <-c.watcher.Errors:
c.logger.Warnf("Failure in index change watcher: %v", err)
case <-closer:
// Cancel any pending debounce timers
c.debounceMu.Lock()
for _, timer := range c.debounceTimers {
timer.Stop()
}
c.debounceTimers = make(map[string]*time.Timer)
c.debounceMu.Unlock()
err := c.watcher.Close()
if err != nil {
c.logger.Warnf("Failed to close index change watcher: %v", err)
}
return
}
}
}