func()

in replica/replicator.go [259:293]


func (r *Replicator) parallel(rwValue int, copts *callOptions, fopts *forward.Options,
	opts *Options) ([]Response, []error) {

	var responses struct {
		successes []Response
		errors    []error
		sync.Mutex
	}

	var wg sync.WaitGroup

	for _, dest := range copts.Dests {
		wg.Add(1)
		go func(dest string) {
			res, err := r.forwardRequest(dest, copts, fopts)

			if err != nil {
				responses.Lock()
				responses.errors = append(responses.errors, err)
				responses.Unlock()
				wg.Done()
				return
			}

			responses.Lock()
			responses.successes = append(responses.successes, res)
			responses.Unlock()
			wg.Done()
		}(dest)
	}

	wg.Wait()

	return responses.successes, responses.errors
}