diff --git a/bin/go-proxy b/bin/go-proxy index 4d15f7d..d52be93 100755 Binary files a/bin/go-proxy and b/bin/go-proxy differ diff --git a/src/go-proxy/config.go b/src/go-proxy/config.go index 7d62295..a2cf52f 100644 --- a/src/go-proxy/config.go +++ b/src/go-proxy/config.go @@ -64,6 +64,7 @@ func ListenConfigChanges() { if err != nil { glog.Fatalf("[Config] unable to read config: %v", err) } + StartAllRoutes() case event.Has(fsnotify.Remove), event.Has(fsnotify.Rename): glog.Fatalf("[Config] file renamed / deleted") } diff --git a/src/go-proxy/docker_provider.go b/src/go-proxy/docker_provider.go index da41376..1591fef 100755 --- a/src/go-proxy/docker_provider.go +++ b/src/go-proxy/docker_provider.go @@ -195,7 +195,7 @@ func (p *Provider) grWatchDockerChanges() { // TODO: handle actor only p.Logf("Event", "container %s %s caused rebuild", msg.Actor.Attributes["name"], msg.Action) p.StopAllRoutes() - p.BuildStartRoutes() + p.StartAllRoutes() case err := <-errChan: p.Logf("Event", "error %s", err) time.Sleep(100 * time.Millisecond) diff --git a/src/go-proxy/file_provider.go b/src/go-proxy/file_provider.go index 203445e..381e536 100644 --- a/src/go-proxy/file_provider.go +++ b/src/go-proxy/file_provider.go @@ -64,7 +64,7 @@ func (p *Provider) grWatchFileChanges() { case event.Has(fsnotify.Write): p.Logf("Watcher", "file change detected") p.StopAllRoutes() - p.BuildStartRoutes() + p.StartAllRoutes() case event.Has(fsnotify.Remove), event.Has(fsnotify.Rename): p.Logf("Watcher", "file renamed / deleted") p.StopAllRoutes() diff --git a/src/go-proxy/main.go b/src/go-proxy/main.go index a9ec3dd..0ad0565 100755 --- a/src/go-proxy/main.go +++ b/src/go-proxy/main.go @@ -4,7 +4,6 @@ import ( "flag" "net/http" "runtime" - "sync" "time" "github.com/golang/glog" @@ -12,7 +11,6 @@ import ( func main() { var err error - var wg sync.WaitGroup flag.Parse() runtime.GOMAXPROCS(runtime.NumCPU()) @@ -27,15 +25,7 @@ func main() { glog.Fatal("unable to read config: ", err) } - wg.Add(len(config.Providers)) - for _, p := range config.Providers { - go func(p *Provider) { - p.BuildStartRoutes() - wg.Done() - }(p) - } - wg.Wait() - + StartAllRoutes() go ListenConfigChanges() mux := http.NewServeMux() diff --git a/src/go-proxy/provider.go b/src/go-proxy/provider.go index 43143b2..28d00b6 100644 --- a/src/go-proxy/provider.go +++ b/src/go-proxy/provider.go @@ -31,6 +31,18 @@ func (p *Provider) GetProxyConfigs() ([]*ProxyConfig, error) { } } +func StartAllRoutes() { + var wg sync.WaitGroup + wg.Add(len(config.Providers)) + for _, p := range config.Providers { + go func(p *Provider) { + p.StartAllRoutes() + wg.Done() + }(p) + } + wg.Wait() +} + func (p *Provider) StopAllRoutes() { p.mutex.Lock() defer p.mutex.Unlock() @@ -59,7 +71,7 @@ func (p *Provider) StopAllRoutes() { p.routes = make(map[string]Route) } -func (p *Provider) BuildStartRoutes() { +func (p *Provider) StartAllRoutes() { p.mutex.Lock() defer p.mutex.Unlock()