pool: fixed synchronization/stopping of the pool

This commit is contained in:
Leo Balduf 2016-03-02 22:18:34 +01:00 committed by Jimmy Zelinskie
parent 34428cf465
commit 114322ce10
3 changed files with 8 additions and 9 deletions

View file

@ -79,6 +79,8 @@ func (s *httpServer) Start() {
return return
} }
} }
log.Println("HTTP server shut down cleanly")
} }
func (s *httpServer) Stop() { func (s *httpServer) Stop() {

View file

@ -20,8 +20,7 @@ type Pool struct {
// StartPool creates a new pool of servers specified by the provided config and // StartPool creates a new pool of servers specified by the provided config and
// runs them. // runs them.
func StartPool(cfgs []config.ServerConfig, tkr *tracker.Tracker) (*Pool, error) { func StartPool(cfgs []config.ServerConfig, tkr *tracker.Tracker) (*Pool, error) {
var servers []Server var toReturn Pool
var wg sync.WaitGroup
for _, cfg := range cfgs { for _, cfg := range cfgs {
srv, err := New(&cfg, tkr) srv, err := New(&cfg, tkr)
@ -29,19 +28,16 @@ func StartPool(cfgs []config.ServerConfig, tkr *tracker.Tracker) (*Pool, error)
return nil, err return nil, err
} }
wg.Add(1) toReturn.wg.Add(1)
go func(srv Server) { go func(srv Server) {
defer wg.Done() defer toReturn.wg.Done()
srv.Start() srv.Start()
}(srv) }(srv)
servers = append(servers, srv) toReturn.servers = append(toReturn.servers, srv)
} }
return &Pool{ return &toReturn, nil
servers: servers,
wg: wg,
}, nil
} }
// Stop safely shuts down a pool of servers. // Stop safely shuts down a pool of servers.

View file

@ -48,6 +48,7 @@ func constructor(srvcfg *config.ServerConfig, tkr *tracker.Tracker) (server.Serv
theStore = &Store{ theStore = &Store{
cfg: cfg, cfg: cfg,
tkr: tkr, tkr: tkr,
shutdown: make(chan struct{}),
ClientStore: cs, ClientStore: cs,
PeerStore: ps, PeerStore: ps,
IPStore: ips, IPStore: ips,