From 114322ce1065c5b7f6f14a18057c5706e3f970d8 Mon Sep 17 00:00:00 2001 From: Leo Balduf Date: Wed, 2 Mar 2016 22:18:34 +0100 Subject: [PATCH] pool: fixed synchronization/stopping of the pool --- server/http/server.go | 2 ++ server/pool.go | 14 +++++--------- server/store/store.go | 1 + 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/server/http/server.go b/server/http/server.go index bb72596..a2cdfc5 100644 --- a/server/http/server.go +++ b/server/http/server.go @@ -79,6 +79,8 @@ func (s *httpServer) Start() { return } } + + log.Println("HTTP server shut down cleanly") } func (s *httpServer) Stop() { diff --git a/server/pool.go b/server/pool.go index 91b3ab5..d6c812f 100644 --- a/server/pool.go +++ b/server/pool.go @@ -20,8 +20,7 @@ type Pool struct { // StartPool creates a new pool of servers specified by the provided config and // runs them. func StartPool(cfgs []config.ServerConfig, tkr *tracker.Tracker) (*Pool, error) { - var servers []Server - var wg sync.WaitGroup + var toReturn Pool for _, cfg := range cfgs { srv, err := New(&cfg, tkr) @@ -29,19 +28,16 @@ func StartPool(cfgs []config.ServerConfig, tkr *tracker.Tracker) (*Pool, error) return nil, err } - wg.Add(1) + toReturn.wg.Add(1) go func(srv Server) { - defer wg.Done() + defer toReturn.wg.Done() srv.Start() }(srv) - servers = append(servers, srv) + toReturn.servers = append(toReturn.servers, srv) } - return &Pool{ - servers: servers, - wg: wg, - }, nil + return &toReturn, nil } // Stop safely shuts down a pool of servers. diff --git a/server/store/store.go b/server/store/store.go index d418875..9215af4 100644 --- a/server/store/store.go +++ b/server/store/store.go @@ -48,6 +48,7 @@ func constructor(srvcfg *config.ServerConfig, tkr *tracker.Tracker) (server.Serv theStore = &Store{ cfg: cfg, tkr: tkr, + shutdown: make(chan struct{}), ClientStore: cs, PeerStore: ps, IPStore: ips,