in cluster/cluster.go [326:352]
func (executor *GPDBExecutor) ExecuteClusterCommand(scope Scope, commandList []ShellCommand) *RemoteOutput {
length := len(commandList)
finished := make(chan int)
numErrors := 0
for i := range commandList {
go func(index int) {
command := commandList[index]
var stderr bytes.Buffer
cmd := command.Command
cmd.Stderr = &stderr
out, err := cmd.Output()
command.Stdout = string(out)
command.Stderr = stderr.String()
command.Error = err
command.Completed = true
commandList[index] = command
finished <- index
}(i)
}
for i := 0; i < length; i++ {
index := <-finished
if commandList[index].Error != nil {
numErrors++
}
}
return NewRemoteOutput(scope, numErrors, commandList)
}