|
|
@@ -227,6 +227,7 @@ func (c *SimplePool) fillPool() {
|
|
|
c.hostMu.RLock()
|
|
|
|
|
|
//Walk through list of defined hosts
|
|
|
+ var wg sync.WaitGroup
|
|
|
for host := range c.hosts {
|
|
|
addr := JoinHostPort(host, c.cfg.Port)
|
|
|
|
|
|
@@ -251,7 +252,9 @@ func (c *SimplePool) fillPool() {
|
|
|
|
|
|
//This is reached if the host is responsive and needs more connections
|
|
|
//Create connections for host synchronously to mitigate flooding the host.
|
|
|
+ wg.Add(1)
|
|
|
go func(a string, conns int) {
|
|
|
+ defer wg.Done()
|
|
|
for ; conns < c.cfg.NumConns; conns++ {
|
|
|
c.connect(a)
|
|
|
}
|
|
|
@@ -259,6 +262,9 @@ func (c *SimplePool) fillPool() {
|
|
|
}
|
|
|
|
|
|
c.hostMu.RUnlock()
|
|
|
+
|
|
|
+ //Wait until we're finished connecting to each host before returning
|
|
|
+ wg.Wait()
|
|
|
}
|
|
|
|
|
|
// Should only be called if c.mu is locked
|