in lib/filesourcer.go [39:75]
func NewFileSourcer(stablePath, rcPath string, version int) (*FileSourcer, error) {
watcher, err := fsnotify.NewWatcher()
if err != nil {
glog.Fatal(err)
}
err = watcher.Add(filepath.Dir(stablePath))
if err != nil {
glog.Fatalf("Error watching stable: %s", err)
}
// RC is optional, only add to fsnotify and read if rcPath is present
if len(rcPath) > 0 {
err = watcher.Add(filepath.Dir(rcPath))
if err != nil {
glog.Fatalf("Error watching rc: %s", err)
}
}
sourcer, err := &FileSourcer{
stablePath: stablePath,
rcPath: rcPath,
version: version,
watcher: watcher,
}, nil
sourcer.lock.Lock()
sourcer.stableServers, err = sourcer.GetServersFromTier(stablePath)
if err != nil {
glog.Errorf("Failed to load stable servers: %s", err)
}
if len(rcPath) > 0 {
sourcer.rcServers, err = sourcer.GetServersFromTier(rcPath)
if err != nil {
glog.Errorf("Failed to load RC servers: %s", err)
}
}
sourcer.lock.Unlock()
go sourcer.watchFsnotifyEvents()
return sourcer, err
}