diff --git a/agent/consul/rpc.go b/agent/consul/rpc.go index 927fe4f1afb8..678b80514080 100644 --- a/agent/consul/rpc.go +++ b/agent/consul/rpc.go @@ -307,11 +307,13 @@ func (s *Server) forwardDC(method, dc string, args interface{}, reply interface{ func (s *Server) globalRPC(method string, args interface{}, reply structs.CompoundResponse) error { - errorCh := make(chan error) - respCh := make(chan interface{}) - // Make a new request into each datacenter dcs := s.router.GetDatacenters() + + replies, total := 0, len(dcs) + errorCh := make(chan error, total) + respCh := make(chan interface{}, total) + for _, dc := range dcs { go func(dc string) { rr := reply.New() @@ -323,7 +325,6 @@ func (s *Server) globalRPC(method string, args interface{}, }(dc) } - replies, total := 0, len(dcs) for replies < total { select { case err := <-errorCh: